OSDN Git Service

Restore this assert now that the livevar bug is fixed.
authorChris Lattner <sabre@nondot.org>
Fri, 21 Mar 2008 20:41:27 +0000 (20:41 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 21 Mar 2008 20:41:27 +0000 (20:41 +0000)
This verifies kill info for "ret" fp operands is right.

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

lib/Target/X86/X86FloatingPoint.cpp

index 84ff640..3cda300 100644 (file)
@@ -1053,8 +1053,13 @@ void FPS::handleSpecialFP(MachineBasicBlock::iterator &I) {
       MachineOperand &Op = MI->getOperand(i);
       if (!Op.isReg() || Op.getReg() < X86::FP0 || Op.getReg() > X86::FP6)
         continue;
-//      assert(Op.isUse() && Op.isKill() &&
-//             "Ret only defs operands, and values aren't live beyond it");
+      // FP Register uses must be kills unless there are two uses of the same
+      // register, in which case only one will be a kill.
+      assert(Op.isUse() &&
+             (Op.isKill() ||                        // Marked kill.
+              getFPReg(Op) == FirstFPRegOp ||       // Second instance.
+              MI->killsRegister(Op.getReg())) &&    // Later use is marked kill.
+             "Ret only defs operands, and values aren't live beyond it");
 
       if (FirstFPRegOp == ~0U)
         FirstFPRegOp = getFPReg(Op);