[LLVMdev] Possible issue with EXPANDING POST-RA PSEUDO INSTRS

Jakob Stoklund Olesen stoklund at 2pi.dk
Sun Jul 8 18:26:52 PDT 2012


On Jul 8, 2012, at 3:42 PM, Sergei Larin <slarin at codeaurora.org> wrote:

> ********** EXPANDING POST-RA PSEUDO INSTRS **********
> ********** Function: main
> real copy:   %R15<def> = COPY %R4, %D2<imp-use,kill>, %D7<imp-use,kill>,
> %D7<imp-def>
> replaced by: %R15<def> = TFR %R4, %D7<imp-def>
> 
> The R4 is a subreg of D2 double register (basically R0:R1==D0; R4:R5==D2
> etc.). After this copy D2 is dead, and is marked as such.
> Register allocator did not mark R4 as <kill>, and when ExpandPostRA copies
> operands, it loses the live range marker.
> 
> My questions - is this a known issue? ...and should R4 has been marked as
> <kill> in the original instruction?

It's not a bug as such. It is OK for kill flags to be missing.

It's weird that R4 isn't killed out of RA, though. What does it look like before rewriting? (-debug-only=regalloc).

/jakob





More information about the llvm-dev mailing list