[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp

Chris Lattner sabre at nondot.org
Fri Dec 1 16:13:22 PST 2006



Changes in directory llvm/lib/Transforms/Scalar:

InstructionCombining.cpp updated: 1.556 -> 1.557
---
Log message:

disable transformations that are invalid  for fp vectors.  This fixes
Transforms/InstCombine/2006-12-01-BadFPVectorXform.ll



---
Diffs of the changes:  (+4 -4)

 InstructionCombining.cpp |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)


Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.556 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.557
--- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.556	Thu Nov 30 17:13:36 2006
+++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp	Fri Dec  1 18:13:08 2006
@@ -1715,7 +1715,7 @@
       return ReplaceInstUsesWith(I, RHS);
 
     // X + 0 --> X
-    if (!I.getType()->isFloatingPoint()) { // NOTE: -0 + +0 = +0.
+    if (!I.getType()->isFPOrFPVector()) { // NOTE: -0 + +0 = +0.
       if (RHSC->isNullValue())
         return ReplaceInstUsesWith(I, LHS);
     } else if (ConstantFP *CFP = dyn_cast<ConstantFP>(RHSC)) {
@@ -1991,7 +1991,7 @@
 
   if (BinaryOperator *Op1I = dyn_cast<BinaryOperator>(Op1)) {
     if (Op1I->getOpcode() == Instruction::Add &&
-        !Op0->getType()->isFloatingPoint()) {
+        !Op0->getType()->isFPOrFPVector()) {
       if (Op1I->getOperand(0) == Op0)              // X-(X+Y) == -Y
         return BinaryOperator::createNeg(Op1I->getOperand(1), I.getName());
       else if (Op1I->getOperand(1) == Op0)         // X-(Y+X) == -Y
@@ -2009,7 +2009,7 @@
       // is not used by anyone else...
       //
       if (Op1I->getOpcode() == Instruction::Sub &&
-          !Op1I->getType()->isFloatingPoint()) {
+          !Op1I->getType()->isFPOrFPVector()) {
         // Swap the two operands of the subexpr...
         Value *IIOp0 = Op1I->getOperand(0), *IIOp1 = Op1I->getOperand(1);
         Op1I->setOperand(0, IIOp1);
@@ -2048,7 +2048,7 @@
     }
   }
 
-  if (!Op0->getType()->isFloatingPoint())
+  if (!Op0->getType()->isFPOrFPVector())
     if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0))
       if (Op0I->getOpcode() == Instruction::Add) {
         if (Op0I->getOperand(0) == Op1)             // (Y+X)-Y == X






More information about the llvm-commits mailing list