[LLVMdev] Physical register definition removed by MachineCSE

Tom Stellard
Fri, 15 Aug 2014 14:15:04 -0000

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