[llvm-commits] [llvm] r161728 - in /llvm/trunk: lib/CodeGen/MachineCSE.cpp test/CodeGen/X86/lsr-loop-exit-cond.ll test/CodeGen/X86/machine-cse.ll

Jakob Stoklund Olesen stoklund at 2pi.dk
Sat Aug 11 13:09:34 PDT 2012


On Aug 11, 2012, at 12:05 PM, Benjamin Kramer <benny.kra at googlemail.com> wrote:

> Author: d0k
> Date: Sat Aug 11 14:05:13 2012
> New Revision: 161728
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=161728&view=rev
> Log:
> PR13578: Teach MachineCSE that instructions that use a constant register can be CSE'd safely.
> 
> This is common e.g. when doing rip-relative addressing on x86_64.

Nice.

> -    for (MCRegAliasIterator AI(Reg, TRI, true); AI.isValid(); ++AI)
> -      PhysRefs.insert(*AI);
> +    for (MCRegAliasIterator AI(Reg, TRI, true); AI.isValid(); ++AI) {
> +      // Reading constant physregs is ok.
> +      if (!MRI->isConstantPhysReg(*AI, *MBB->getParent()))
> +        PhysRefs.insert(*AI);

It's safe to swap 'if' and 'for' here. The isConstantPhysReg() function already checks all aliases.

/jakob





More information about the llvm-commits mailing list