Another virtual register question
Edward Z. Yang
ezyang at MIT.EDU
Sat Feb 19 17:36:28 CET 2011
I have the following tail call from the old code generator that
uses R2 despite this being i686 (which only has one vanilla
register.)
so0_ret()
{ [const 3;, const 32;]
}
cqR:
_cqS::I32 = R1 & 3;
if (_cqS::I32 >= 2) goto cqT;
R1 = I32[Sp + 12];
Sp = Sp + 16;
R1 = R1 & (-4);
jump I32[R1] ();
cqT:
R2 = I32[Sp + 4];
I32[Sp - 4] = I32[Sp + 8];
I32[Sp + 0] = so3_info;
Sp = Sp - 4;
jump mergePairs_smo_info ();
}
I'm trying to determine where it came from, but it looks like
CgTailCall is a good citizen and uses real registers.
Cheers,
Edward
More information about the Cvs-ghc
mailing list