[llvm-commits] [llvm] r43763 - /llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp
Evan Cheng
evan.cheng at apple.com
Tue Nov 6 00:50:44 PST 2007
Author: evancheng
Date: Tue Nov 6 02:50:44 2007
New Revision: 43763
URL: http://llvm.org/viewvc/llvm-project?rev=43763&view=rev
Log:
Fix a bug where a def use operand isn't being detected as a sub-register use.
Modified:
llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp
Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp?rev=43763&r1=43762&r2=43763&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp (original)
+++ llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Tue Nov 6 02:50:44 2007
@@ -19,7 +19,6 @@
#include "llvm/CodeGen/LiveIntervalAnalysis.h"
#include "VirtRegMap.h"
#include "llvm/Value.h"
-#include "llvm/Analysis/LoopInfo.h"
#include "llvm/CodeGen/LiveVariables.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineInstr.h"
@@ -57,7 +56,6 @@
AU.addPreservedID(PHIEliminationID);
AU.addRequiredID(PHIEliminationID);
AU.addRequiredID(TwoAddressInstructionPassID);
- AU.addRequired<LoopInfo>();
MachineFunctionPass::getAnalysisUsage(AU);
}
@@ -378,8 +376,13 @@
bool HasUse = mop.isUse();
bool HasDef = mop.isDef();
for (unsigned j = i+1, e = MI->getNumOperands(); j != e; ++j) {
- if (MI->getOperand(j).isRegister() &&
- MI->getOperand(j).getReg() == li.reg) {
+ if (!MI->getOperand(j).isRegister())
+ continue;
+ unsigned RegJ = MI->getOperand(j).getReg();
+ if (RegJ != 0 && MRegisterInfo::isVirtualRegister(RegJ) &&
+ RegMap->isSubRegister(RegJ))
+ RegJ = RegMap->getSuperRegister(RegJ);
+ if (RegJ == li.reg) {
MI->getOperand(j).setReg(NewVReg);
HasUse |= MI->getOperand(j).isUse();
HasDef |= MI->getOperand(j).isDef();
More information about the llvm-commits
mailing list