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
+7 -5
View File
@@ -268,12 +268,14 @@ func QBE_IsTerminator(node: *HirNode) -> bool {
return false;
}
if node.kind == hBlock {
var last: *HirNode = node.child1;
if last == null as *HirNode { return false; }
while last.child3 != null as *HirNode {
last = last.child3;
var child: *HirNode = node.child1;
while child != null as *HirNode {
if QBE_IsTerminator(child) {
return true;
}
child = child.child3;
}
return QBE_IsTerminator(last);
return false;
}
return false;
}