[llvm-commits] [llvm] r46016 - in /llvm/trunk/lib:	CodeGen/LiveVariables.cpp CodeGen/PHIElimination.cpp	CodeGen/TwoAddressInstructionPass.cpp Target/ARM/ARMInstrInfo.cpp
    Chris Lattner 
    clattner at apple.com
       
    Tue Jan 15 14:27:13 PST 2008
    
    
  
On Jan 15, 2008, at 2:02 PM, Owen Anderson wrote:
> URL: http://llvm.org/viewvc/llvm-project?rev=46016&view=rev
> Log:
> Remove DefInst from LiveVariables::VarInfo.  Use the facilities on  
> MachineRegisterInfo instead.
Woot,
> +void LiveVariables::MarkVirtRegAliveInBlock(unsigned reg,
>                                             MachineBasicBlock *MBB,
>                                     std::vector<MachineBasicBlock*>  
> &WorkList) {
>   unsigned BBNum = MBB->getNumber();
>
> +  VarInfo& VRInfo = getVarInfo(reg);
> +
>   // Check to see if this basic block is one of the killing blocks.   
> If so,
>   // remove it...
>   for (unsigned i = 0, e = VRInfo.Kills.size(); i != e; ++i)
> @@ -129,8 +126,9 @@
>       VRInfo.Kills.erase(VRInfo.Kills.begin()+i);  // Erase entry
>       break;
>     }
> +
> +  MachineRegisterInfo& MRI = MBB->getParent()->getRegInfo();
> +  if (MBB == MRI.getVRegDef(reg)->getParent()) return;  //  
> Terminate recursion
This is a performance sensitive routine, how about passing the  
defining MBB down so that you only call getVRegDef once per vreg,  
instead of once per block is it live across?
-Chris
    
    
More information about the llvm-commits
mailing list