[llvm-commits] CVS: llvm/lib/Target/X86/X86FloatingPoint.cpp

Evan Cheng evan.cheng at apple.com
Fri Dec 1 02:12:05 PST 2006



Changes in directory llvm/lib/Target/X86:

X86FloatingPoint.cpp updated: 1.62 -> 1.63
---
Log message:

Fix 2005-05-08-FPStackifierPHI.ll failure.

---
Diffs of the changes:  (+7 -26)

 X86FloatingPoint.cpp |   33 +++++++--------------------------
 1 files changed, 7 insertions(+), 26 deletions(-)


Index: llvm/lib/Target/X86/X86FloatingPoint.cpp
diff -u llvm/lib/Target/X86/X86FloatingPoint.cpp:1.62 llvm/lib/Target/X86/X86FloatingPoint.cpp:1.63
--- llvm/lib/Target/X86/X86FloatingPoint.cpp:1.62	Thu Nov 30 01:12:03 2006
+++ llvm/lib/Target/X86/X86FloatingPoint.cpp	Fri Dec  1 04:11:51 2006
@@ -62,11 +62,12 @@
       MachineFunctionPass::getAnalysisUsage(AU);
     }
   private:
-    LiveVariables     *LV;    // Live variable info for current function...
-    MachineBasicBlock *MBB;   // Current basic block
-    unsigned Stack[8];        // FP<n> Registers in each stack slot...
-    unsigned RegMap[8];       // Track which stack slot contains each register
-    unsigned StackTop;        // The current top of the FP stack.
+    const TargetInstrInfo *TII; // Machine instruction info.
+    LiveVariables     *LV;      // Live variable info for current function...
+    MachineBasicBlock *MBB;     // Current basic block
+    unsigned Stack[8];          // FP<n> Registers in each stack slot...
+    unsigned RegMap[8];         // Track which stack slot contains each register
+    unsigned StackTop;          // The current top of the FP stack.
 
     void dumpStack() const {
       std::cerr << "Stack contents:";
@@ -107,9 +108,6 @@
     bool isAtTop(unsigned RegNo) const { return getSlot(RegNo) == StackTop-1; }
     void moveToTop(unsigned RegNo, MachineBasicBlock::iterator &I) {
       if (!isAtTop(RegNo)) {
-        MachineFunction *MF = I->getParent()->getParent();
-        const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();
-
         unsigned STReg = getSTReg(RegNo);
         unsigned RegOnTop = getStackEntry(0);
 
@@ -127,8 +125,6 @@
     }
 
     void duplicateToTop(unsigned RegNo, unsigned AsReg, MachineInstr *I) {
-      MachineFunction *MF = I->getParent()->getParent();
-      const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();
       unsigned STReg = getSTReg(RegNo);
       pushReg(AsReg);   // New register on top of stack
 
@@ -179,6 +175,7 @@
   // Early exit.
   if (!FPIsUsed) return false;
 
+  TII = MF.getTarget().getInstrInfo();
   LV = &getAnalysis<LiveVariables>();
   StackTop = 0;
 
@@ -431,8 +428,6 @@
   assert(StackTop > 0 && "Cannot pop empty stack!");
   RegMap[Stack[--StackTop]] = ~0;     // Update state
 
-  MachineFunction *MF = I->getParent()->getParent();
-  const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();  
   // Check to see if there is a popping version of this instruction...
   int Opcode = Lookup(PopTable, ARRAY_SIZE(PopTable), I->getOpcode());
   if (Opcode != -1) {
@@ -464,8 +459,6 @@
   RegMap[TopReg]    = OldSlot;
   RegMap[FPRegNo]   = ~0;
   Stack[--StackTop] = ~0;
-  MachineFunction *MF = I->getParent()->getParent();
-  const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();
   I = BuildMI(*MBB, ++I, TII->get(X86::FSTPrr)).addReg(STReg);
 }
 
@@ -486,8 +479,6 @@
 ///
 void FPS::handleZeroArgFP(MachineBasicBlock::iterator &I) {
   MachineInstr *MI = I;
-  MachineFunction *MF = MI->getParent()->getParent();
-  const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();
   unsigned DestReg = getFPReg(MI->getOperand(0));
 
   // Change from the pseudo instruction to the concrete instruction.
@@ -528,8 +519,6 @@
   
   // Convert from the pseudo instruction to the concrete instruction.
   MI->RemoveOperand(NumOps-1);    // Remove explicit ST(0) operand
-  MachineFunction *MF = MI->getParent()->getParent();
-  const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();
   MI->setInstrDescriptor(TII->get(getConcreteOpcode(MI->getOpcode())));
 
   if (MI->getOpcode() == X86::FISTP64m ||
@@ -575,8 +564,6 @@
   }
 
   // Change from the pseudo instruction to the concrete instruction.
-  MachineFunction *MF = I->getParent()->getParent();
-  const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();  
   MI->RemoveOperand(1);   // Drop the source operand.
   MI->RemoveOperand(0);   // Drop the destination operand.
   MI->setInstrDescriptor(TII->get(getConcreteOpcode(MI->getOpcode())));
@@ -704,8 +691,6 @@
 
   // Replace the old instruction with a new instruction
   MBB->remove(I++);
-  MachineFunction *MF = MI->getParent()->getParent();
-  const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();
   I = BuildMI(*MBB, I, TII->get(Opcode)).addReg(getSTReg(NotTOS));
 
   // If both operands are killed, pop one off of the stack in addition to
@@ -743,8 +728,6 @@
   // anywhere.
   moveToTop(Op0, I);
 
-  MachineFunction *MF = I->getParent()->getParent();
-  const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();  
   // Change from the pseudo instruction to the concrete instruction.
   MI->getOperand(0).setReg(getSTReg(Op1));
   MI->RemoveOperand(1);
@@ -769,8 +752,6 @@
   // The first operand *must* be on the top of the stack.
   moveToTop(Op0, I);
 
-  MachineFunction *MF = I->getParent()->getParent();
-  const TargetInstrInfo *TII = MF->getTarget().getInstrInfo();  
   // Change the second operand to the stack register that the operand is in.
   // Change from the pseudo instruction to the concrete instruction.
   MI->RemoveOperand(0);






More information about the llvm-commits mailing list