Use the proper clobber check in handleLiveInRegister().
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 14 Feb 2012 23:46:24 +0000 (23:46 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 14 Feb 2012 23:46:24 +0000 (23:46 +0000)
When a physreg is live in to a basic block, look for any instruction in
the block that clobbers the physreg.

The instruction doesn't have to properly redefine the register, any
overlapping clobber is OK.

This slightly changes live ranges when compiling with register masks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150528 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/LiveIntervalAnalysis.cpp

index 32f4c5b3ff6bca7dcc5ea9901ce9f104310900f5..30374da18f25a98fa92cb4ceef799cf4391f71c3 100644 (file)
@@ -507,7 +507,7 @@ void LiveIntervals::handleLiveInRegister(MachineBasicBlock *MBB,
       end = baseIndex.getRegSlot();
       SeenDefUse = true;
       break;
-    } else if (mi->definesRegister(interval.reg, tri_)) {
+    } else if (mi->modifiesRegister(interval.reg, tri_)) {
       // Another instruction redefines the register before it is ever read.
       // Then the register is essentially dead at the instruction that defines
       // it. Hence its interval is: