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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user