Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ints in abra are 64-bit signed values, but it's also useful to treat
those 64 bits as an unsigned value. There's currently no
UInt
type,because that would require a lot more logic with arithmetic and casting
and dealing with overflows, but as a temporary stopgap, this introduces
the
Int#unsignedToString
method (which uses"%llu"
under the hood asthe print formatter). This also updates the existing
Int#toString
implementation to use
"%lld"
(it had previously been using"%d"
...).This also adds the
-fcall-saved-x18
flag to the flags passed toclang
when compiling the assembly output of qbe. This is the clang version of
the
-ffixed-x18
flag from the arm compiler, which ensures thatx18
is preserved.Without this flag, this register can potentially be overwritten by the
platform (in this case, macos) even though qbe treats it as a
general-purpose register. This was the source of an extremely mysterious
and frustrating bug.