[llvm-commits] [llvm] r82485 - in /llvm/trunk: lib/CodeGen/SimpleRegisterCoalescing.cpp lib/CodeGen/SimpleRegisterCoalescing.h test/CodeGen/ARM/2008-11-19-ScavengerAssert.ll test/CodeGen/ARM/remat.ll test/CodeGen/X86/2008-02-22-ReMatBug.ll test/CodeGen/X86/2008-07-11-SpillerBug.ll test/CodeGen/X86/2009-04-20-LinearScanOpt.ll test/CodeGen/X86/2009-09-21-NoSpillLoopCount.ll test/CodeGen/X86/stack-color-with-reg.ll

Bill Wendling wendling at apple.com
Mon Sep 21 15:34:17 PDT 2009


On Sep 21, 2009, at 2:39 PM, Evan Cheng wrote:

>
> On Sep 21, 2009, at 2:19 PM, Bill Wendling wrote:
>
>>>
>> This loop is dead is "HasDef" and "HasUse" are both true. :-)
>
> That's not possible. isDef() the opposite of isUse().
>
Yes, but the only affect of the "|=" operator on a boolean is to turn  
it from a "false" to a "true". If HasDef and HasUse are already true  
after their initializations, then the loop will can't turn them  
"false". :-)

-bw

         bool HasDef = mopi.isDef();
         bool HasUse = mopi.isUse();
         for (unsigned j = i+1; j != e; ++j) {
           const MachineOperand &mopj = MI->getOperand(j);
           if (!mopj.isReg() || mopj.getReg() != Reg)
             continue;
           HasDef |= mopj.isDef();
           HasUse |= mopj.isUse();
         }





More information about the llvm-commits mailing list