diff --git a/x86_64-gen.c b/x86_64-gen.c index 4d2521d..0b3db22 100644 --- a/x86_64-gen.c +++ b/x86_64-gen.c @@ -367,8 +367,10 @@ void load(int r, SValue *sv) v1.type.t = VT_PTR; v1.r = VT_LOCAL | VT_LVAL; v1.c.ul = fc; - load(r, &v1); fr = r; + if (!(reg_classes[fr] & RC_INT)) + fr = get_reg(RC_INT); + load(fr, &v1); } ll = 0; if ((ft & VT_BTYPE) == VT_FLOAT) {