[LLVMdev] Physical register definition removed by MachineCSE

Tom Stellard tom at stellard.net
Fri Aug 15 07:15:04 PDT 2014


On Fri, Aug 15, 2014 at 11:18:51AM +0200, Mikael Holmén wrote:
> Hi,
> 
> My target has a special configuration register that many
> instructions read implicitly, configuring for example if an add
> instruction should saturate at over/underflow or not.
> 

> Now, I have a problem where the MachineCSE removes a setting of this
> configuration register in a basic block, because
> MachineCSE::isPhysDefTriviallyDead can't find any uses of it in the
> basic block where it's defined.
> 
> Similar to other special physical registers, e.g the stack pointer,
> this configuration register is marked as "reserved".
> 
> Is there anything else I need to do for the MachineCSE to leave this
> register and not remove it just because it can't find any uses in
> the current basic block?

Have you added this register as an implicit use to the instructions
like add whose behavior depends on its value?

-Tom

> 
> Best regards,
> Mikael Holmén
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list