[llvm] e299a42 - [ConstantFold] Remove redundant bitcast icmp handling (NFCI)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 3 06:32:24 PDT 2023


Author: Nikita Popov
Date: 2023-11-03T14:30:16+01:00
New Revision: e299a4287018769b9dfdd1eea8609bb59423ae90

URL: https://github.com/llvm/llvm-project/commit/e299a4287018769b9dfdd1eea8609bb59423ae90
DIFF: https://github.com/llvm/llvm-project/commit/e299a4287018769b9dfdd1eea8609bb59423ae90.diff

LOG: [ConstantFold] Remove redundant bitcast icmp handling (NFCI)

This code excludes vector/scalar and FP bitcasts. All other
integer/pointer bitcasts are no-op bitcasts and will be removed
entirely.

Added: 
    

Modified: 
    llvm/lib/IR/ConstantFold.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/IR/ConstantFold.cpp b/llvm/lib/IR/ConstantFold.cpp
index 3028668ced62931..f877fb614c65da8 100644
--- a/llvm/lib/IR/ConstantFold.cpp
+++ b/llvm/lib/IR/ConstantFold.cpp
@@ -1451,20 +1451,6 @@ Constant *llvm::ConstantFoldCompareInstruction(CmpInst::Predicate Predicate,
     if (Result != -1)
       return ConstantInt::get(ResultTy, Result);
 
-    // If the right hand side is a bitcast, try using its inverse to simplify
-    // it by moving it to the left hand side.  We can't do this if it would turn
-    // a vector compare into a scalar compare or visa versa, or if it would turn
-    // the operands into FP values.
-    if (ConstantExpr *CE2 = dyn_cast<ConstantExpr>(C2)) {
-      Constant *CE2Op0 = CE2->getOperand(0);
-      if (CE2->getOpcode() == Instruction::BitCast &&
-          CE2->getType()->isVectorTy() == CE2Op0->getType()->isVectorTy() &&
-          !CE2Op0->getType()->isFPOrFPVectorTy()) {
-        Constant *Inverse = ConstantExpr::getBitCast(C1, CE2Op0->getType());
-        return ConstantExpr::getICmp(Predicate, Inverse, CE2Op0);
-      }
-    }
-
     if ((!isa<ConstantExpr>(C1) && isa<ConstantExpr>(C2)) ||
         (C1->isNullValue() && !C2->isNullValue())) {
       // If C2 is a constant expr and C1 isn't, flip them around and fold the


        


More information about the llvm-commits mailing list