[llvm-commits] [PATCH] Accidental <kill> on two-address operand

Jakob Stoklund Olesen stoklund at chora.dk
Tue Aug 4 01:24:35 PDT 2009


Anton Korobeynikov
<anton at korobeynikov.info> writes:

> Hello, Jakob
>
>> In your case, have you tried adding imp-def/imp-use operands of the
>> real super register?
> Yes. Afair, some codes really assumes that only 1 instruction is
> issued by copyRegToReg. See, e.g.
> LowerSubregInstructionsPass::LowerExtract and around.

Yes, there is some dubious code around there. I am looking into it.

> There were other
> places, I don't remember offhand, but basically some codes expects
> that copyRegToReg can issue multiple instructions (mostly DAG lowering
> stuff) and others - not.

LowerSubregInstructionsPass currently assumes that the source register
is being used, and the destination register is being defined by the
copyRegToReg instructions. It may also add implicit operands to the last
instruction emitted - that may be a bit dubious come to think of it.

If it doesn't work with multiple copy instructions, that is a bug IMHO.

/jakob




More information about the llvm-commits mailing list