fix(qbe): any-child terminator check in QBE_IsTerminator for hBlock — QBE SSA now fully valid

- QBE_IsTerminator(hBlock) checks ALL children, not just last
- Removed legacy c_backend.bux and nim_backend.bux from _selfhost/src/
- QBE self-hosting QBE phase: PASSES (SSA valid, assembled to .s)
- Remaining: linker errors from missing String_Eq/StringBuilder in runtime
This commit is contained in:
2026-06-02 13:56:12 +03:00
parent 6cb5528a4d
commit eb8179b6d0
142 changed files with 70706 additions and 1407 deletions
+34
View File
@@ -0,0 +1,34 @@
# regression test for 1f4ff634
# warning! headaches can occur
# when trying to figure out what
# the test is doing!
export
function w $t0() {
@start
@loop
%x0 =w phi @start 256, @loop %y0
%y0 =w phi @start 128, @loop %y1
%y1 =w shr %x0, 1
jnz %y1, @loop, @end
@end
ret %x0
}
export
function w $t1() { # swapped phis
@start
@loop
%y0 =w phi @start 128, @loop %y1
%x0 =w phi @start 256, @loop %y0
%y1 =w shr %x0, 1
jnz %y1, @loop, @end
@end
ret %x0
}
# >>> driver
# extern int t0(void), t1(void);
# int main() { return !(t0() == 1 && t1() == 1);}
# <<<