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

Chris Lattner sabre at nondot.org
Fri Nov 10 15:39:08 PST 2006



Changes in directory llvm/lib/Transforms/Scalar:

InstructionCombining.cpp updated: 1.541 -> 1.542
---
Log message:

Fix InstCombine/2006-11-10-ashr-miscompile.ll a miscompilation introduced
by the shr -> [al]shr patch.  This was reduced from 176.gcc.


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

 InstructionCombining.cpp |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)


Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.541 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.542
--- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.541	Wed Nov  8 23:12:27 2006
+++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp	Fri Nov 10 17:38:52 2006
@@ -5082,10 +5082,10 @@
       return ReplaceInstUsesWith(I, Op0);          // X >>s undef -> X
   }
 
-  // shr int -1, X = -1   (for any arithmetic shift rights of ~0)
-  if (!isLeftShift)
+  // ashr int -1, X = -1   (for any arithmetic shift rights of ~0)
+  if (I.getOpcode() == Instruction::AShr)
     if (ConstantInt *CSI = dyn_cast<ConstantInt>(Op0))
-      if (CSI->isAllOnesValue() && Op0->getType()->isSigned())
+      if (CSI->isAllOnesValue())
         return ReplaceInstUsesWith(I, CSI);
 
   // Try to fold constant and into select arguments.






More information about the llvm-commits mailing list