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

Chris Lattner sabre at nondot.org
Tue Nov 21 09:05:28 PST 2006



Changes in directory llvm/lib/Transforms/Scalar:

InstructionCombining.cpp updated: 1.545 -> 1.546
---
Log message:

This xform is handled by FoldOpIntoPhi in visitCastInst in a more elegant way.


---
Diffs of the changes:  (+1 -30)

 InstructionCombining.cpp |   31 +------------------------------
 1 files changed, 1 insertion(+), 30 deletions(-)


Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.545 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.546
--- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.545	Tue Nov 14 22:53:24 2006
+++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp	Tue Nov 21 11:05:13 2006
@@ -5784,7 +5784,7 @@
       return &CI;
     }
   }
-
+    
   // If we are casting a malloc or alloca to a pointer to a type of the same
   // size, rewrite the allocation instruction to allocate the "right" type.
   //
@@ -7144,35 +7144,6 @@
   if (Value *V = PN.hasConstantValue())
     return ReplaceInstUsesWith(PN, V);
 
-  // If the only user of this instruction is a cast instruction, and all of the
-  // incoming values are constants, change this PHI to merge together the casted
-  // constants.
-  if (PN.hasOneUse())
-    if (CastInst *CI = dyn_cast<CastInst>(PN.use_back()))
-      if (CI->getType() != PN.getType()) {  // noop casts will be folded
-        bool AllConstant = true;
-        for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i)
-          if (!isa<Constant>(PN.getIncomingValue(i))) {
-            AllConstant = false;
-            break;
-          }
-        if (AllConstant) {
-          // Make a new PHI with all casted values.
-          PHINode *New = new PHINode(CI->getType(), PN.getName(), &PN);
-          for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i) {
-            Constant *OldArg = cast<Constant>(PN.getIncomingValue(i));
-            New->addIncoming(ConstantExpr::getCast(OldArg, New->getType()),
-                             PN.getIncomingBlock(i));
-          }
-
-          // Update the cast instruction.
-          CI->setOperand(0, New);
-          WorkList.push_back(CI);    // revisit the cast instruction to fold.
-          WorkList.push_back(New);   // Make sure to revisit the new Phi
-          return &PN;                // PN is now dead!
-        }
-      }
-
   // If all PHI operands are the same operation, pull them through the PHI,
   // reducing code size.
   if (isa<Instruction>(PN.getIncomingValue(0)) &&






More information about the llvm-commits mailing list