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

Chris Lattner lattner at cs.uiuc.edu
Sun May 8 20:36:52 PDT 2005



Changes in directory llvm/lib/Target/X86:

X86ISelPattern.cpp updated: 1.112 -> 1.113
---
Log message:

Fix X86/2005-05-08-FPStackifierPHI.ll: ugly gross hack.


---
Diffs of the changes:  (+19 -2)

 X86ISelPattern.cpp |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)


Index: llvm/lib/Target/X86/X86ISelPattern.cpp
diff -u llvm/lib/Target/X86/X86ISelPattern.cpp:1.112 llvm/lib/Target/X86/X86ISelPattern.cpp:1.113
--- llvm/lib/Target/X86/X86ISelPattern.cpp:1.112	Wed May  4 14:25:37 2005
+++ llvm/lib/Target/X86/X86ISelPattern.cpp	Sun May  8 22:36:39 2005
@@ -14,9 +14,10 @@
 #include "X86.h"
 #include "X86InstrBuilder.h"
 #include "X86RegisterInfo.h"
-#include "llvm/Constants.h"                   // FIXME: REMOVE
+#include "llvm/Constants.h"
+#include "llvm/Instructions.h"
 #include "llvm/Function.h"
-#include "llvm/CodeGen/MachineConstantPool.h" // FIXME: REMOVE
+#include "llvm/CodeGen/MachineConstantPool.h"
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/MachineFrameInfo.h"
 #include "llvm/CodeGen/SelectionDAG.h"
@@ -25,6 +26,7 @@
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetLowering.h"
 #include "llvm/Target/TargetOptions.h"
+#include "llvm/Support/CFG.h"
 #include "llvm/Support/MathExtras.h"
 #include "llvm/ADT/Statistic.h"
 #include <set>
@@ -461,6 +463,21 @@
       }
     }
 
+  // Final check, check LLVM BB's that are successors to the LLVM BB
+  // corresponding to BB for FP PHI nodes.
+  const BasicBlock *LLVMBB = BB->getBasicBlock();
+  const PHINode *PN;
+  if (!ContainsFPCode)
+    for (succ_const_iterator SI = succ_begin(LLVMBB), E = succ_end(LLVMBB);
+         SI != E && !ContainsFPCode; ++SI)
+      for (BasicBlock::const_iterator II = SI->begin();
+           (PN = dyn_cast<PHINode>(II)); ++II)
+        if (PN->getType()->isFloatingPoint()) {
+          ContainsFPCode = true;
+          break;
+        }
+
+
   // Insert FP_REG_KILL instructions into basic blocks that need them.  This
   // only occurs due to the floating point stackifier not being aggressive
   // enough to handle arbitrary global stackification.






More information about the llvm-commits mailing list