diff --git a/src/x86/cg.c b/src/x86/cg.c index 303b84d..0b978f1 100644 --- a/src/x86/cg.c +++ b/src/x86/cg.c @@ -640,13 +640,15 @@ static void callee_saved(AST *tlc, struct CalleeSavedState *state) { bool ebxused = false, ediused = false, esiused = false; for(size_t v = 0; v < tlc->chunk.varCount; v++) { - if(is_reg_b(tlc->chunk.vars[v]->data.var.registerClass, tlc->chunk.vars[v]->data.var.color)) { + size_t resource = REG_CLASSES[tlc->chunk.vars[v]->data.var.registerClass].rs[tlc->chunk.vars[v]->data.var.color]; + + if(resource & HWR_EBX) { ebxused = true; } - if(is_reg_di(tlc->chunk.vars[v]->data.var.registerClass, tlc->chunk.vars[v]->data.var.color)) { + if(resource & HWR_EDI) { ediused = true; } - if(is_reg_si(tlc->chunk.vars[v]->data.var.registerClass, tlc->chunk.vars[v]->data.var.color)) { + if(resource & HWR_ESI) { esiused = true; } }