[llvm-commits] [PATCH] Accidental <kill> on two-address operand
Jakob Stoklund Olesen
stoklund at 2pi.dk
Tue Aug 4 01:20:34 CDT 2009
On 04/08/2009, at 08.13, Evan Cheng wrote:
> On Aug 3, 2009, at 11:07 PM, Jakob Stoklund Olesen wrote:
>> On 02/08/2009, at 21.52, Eli Friedman wrote:
>>> On Sun, Aug 2, 2009 at 12:18 PM, Jakob Stoklund
>>> Olesen<stoklund at 2pi.dk> wrote:
>>>> The generated code looks like this:
>>>> %reg1032<def> = MOVENCC_z %reg1031<kill>
>>>> %reg1032<def> = BITTGL %reg1032, 0
>>>> In this case a kill flag is also added to BITTGL, and
>>>> TwoAddressInstructionPass fails to remove it again. Probably
>>>> it is expecting SSA code as input?
>>> AFAIK, all virtual registers are supposed to be SSA until the
>>> two-address pass runs.
>> I will have to create a new vreg in copyRegToReg then.
> Sorry, I am still missing some details. Is MOVENCC_z the move
> instruction being inserted? Why do you need to introduce a VR then?
No, copyRegToReg inserts both instructions. It cannot do the move in
just one instruction.
More information about the llvm-commits