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:
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
#include "all.h"
|
||||
|
||||
/* eliminate sub-word abi op
|
||||
* variants for targets that
|
||||
* treat char/short/... as
|
||||
* words with arbitrary high
|
||||
* bits
|
||||
*/
|
||||
void
|
||||
elimsb(Fn *fn)
|
||||
{
|
||||
Blk *b;
|
||||
Ins *i;
|
||||
|
||||
for (b=fn->start; b; b=b->link) {
|
||||
for (i=b->ins; i<&b->ins[b->nins]; i++) {
|
||||
if (isargbh(i->op))
|
||||
i->op = Oarg;
|
||||
if (isparbh(i->op))
|
||||
i->op = Opar;
|
||||
}
|
||||
if (isretbh(b->jmp.type))
|
||||
b->jmp.type = Jretw;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user