[PATCH] Remove dead code in instcombine.

Matt Arsenault Matthew.Arsenault at amd.com
Mon Apr 14 15:10:48 PDT 2014


Don't replace shifts greater than the type with the maximum shift.
    
This isn't hit anywhere in the tests, and somewhere else is replacing these with undef.

http://reviews.llvm.org/D3371

Files:
  lib/Transforms/InstCombine/InstCombineShifts.cpp

Index: lib/Transforms/InstCombine/InstCombineShifts.cpp
===================================================================
--- lib/Transforms/InstCombine/InstCombineShifts.cpp
+++ lib/Transforms/InstCombine/InstCombineShifts.cpp
@@ -340,17 +340,6 @@
   // purpose is to compute bits we don't care about.
   uint32_t TypeBits = Op0->getType()->getScalarSizeInBits();
 
-  // shl i32 X, 32 = 0 and srl i8 Y, 9 = 0, ... just don't eliminate
-  // a signed shift.
-  //
-  if (COp1->uge(TypeBits)) {
-    if (I.getOpcode() != Instruction::AShr)
-      return ReplaceInstUsesWith(I, Constant::getNullValue(Op0->getType()));
-    // ashr i32 X, 32 --> ashr i32 X, 31
-    I.setOperand(1, ConstantInt::get(I.getType(), TypeBits-1));
-    return &I;
-  }
-
   // ((X*C1) << C2) == (X * (C1 << C2))
   if (BinaryOperator *BO = dyn_cast<BinaryOperator>(Op0))
     if (BO->getOpcode() == Instruction::Mul && isLeftShift)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3371.1.patch
Type: text/x-patch
Size: 911 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140414/29de24b4/attachment.bin>


More information about the llvm-commits mailing list