blaise/vendor/qbe/test/mem2.ssa
Graeme Geldenhuys 25de8be212 Fix compilation errors; vendor QBE 1.2; end-to-end Hello World works
Fix TProgram.Uses reserved-word clash (renamed to UsedUnits), nested
brace-comment in uParser.pas, and missing uAST in Blaise.pas uses clause.

Vendor QBE 1.2 source in vendor/qbe/ (built locally with make; binary
excluded via .gitignore). End-to-end pipeline confirmed: Blaise compiles
Hello World and Calc (6*7=42) to native x86_64 Linux binaries.

71/71 FPCUnit tests passing.
2026-04-20 16:38:57 +01:00

33 lines
581 B
Plaintext

# Ember Sawady reported this bug
# in stack-slot coalescing
type :t = { w 2 }
function :t $func() {
@start.0
%temp =l alloc4 4
%ret =l alloc4 8
storew 1, %temp
# storew can also go here
%field =l add %ret, 4
storew 2, %ret
blit %temp, %field, 4
# removing either of these storews causes it to work
storew 2, %ret
ret %ret
}
export function w $main() {
@start
%ret =:t call $func()
%fptr =l add %ret, 4
%field =w loaduw %fptr
%x =w ceqw %field, 1
jnz %x, @passed, @failed
@failed
# this fails despite 1 => temp => ret + 4 => field
call $abort()
@passed
ret 0
}