[llvm] cbce28f - [ConstFold] Use const-folded operands in more places
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 27 14:30:36 PDT 2021
Author: Arthur Eubanks
Date: 2021-04-27T14:30:19-07:00
New Revision: cbce28f07e410cf46845a86621f93c8cd38eee6a
URL: https://github.com/llvm/llvm-project/commit/cbce28f07e410cf46845a86621f93c8cd38eee6a
DIFF: https://github.com/llvm/llvm-project/commit/cbce28f07e410cf46845a86621f93c8cd38eee6a.diff
LOG: [ConstFold] Use const-folded operands in more places
Previously we were const folding operands but not passing them.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D101394
Added:
Modified:
llvm/lib/Analysis/ConstantFolding.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp
index cd65e6369567..dc55930a9f26 100644
--- a/llvm/lib/Analysis/ConstantFolding.cpp
+++ b/llvm/lib/Analysis/ConstantFolding.cpp
@@ -748,15 +748,6 @@ Constant *llvm::ConstantFoldLoadFromConstPtr(Constant *C, Type *Ty,
namespace {
-Constant *ConstantFoldLoadInst(const LoadInst *LI, const DataLayout &DL) {
- if (LI->isVolatile()) return nullptr;
-
- if (auto *C = dyn_cast<Constant>(LI->getOperand(0)))
- return ConstantFoldLoadFromConstPtr(C, LI->getType(), DL);
-
- return nullptr;
-}
-
/// One of Op0/Op1 is a constant expression.
/// Attempt to symbolically evaluate the result of a binary operator merging
/// these together. If target data info is available, it is provided as DL,
@@ -1206,21 +1197,17 @@ Constant *llvm::ConstantFoldInstruction(Instruction *I, const DataLayout &DL,
return ConstantFoldCompareInstOperands(CI->getPredicate(), Ops[0], Ops[1],
DL, TLI);
- if (const auto *LI = dyn_cast<LoadInst>(I))
- return ConstantFoldLoadInst(LI, DL);
-
- if (auto *IVI = dyn_cast<InsertValueInst>(I)) {
- return ConstantExpr::getInsertValue(
- cast<Constant>(IVI->getAggregateOperand()),
- cast<Constant>(IVI->getInsertedValueOperand()),
- IVI->getIndices());
+ if (const auto *LI = dyn_cast<LoadInst>(I)) {
+ if (LI->isVolatile())
+ return nullptr;
+ return ConstantFoldLoadFromConstPtr(Ops[0], LI->getType(), DL);
}
- if (auto *EVI = dyn_cast<ExtractValueInst>(I)) {
- return ConstantExpr::getExtractValue(
- cast<Constant>(EVI->getAggregateOperand()),
- EVI->getIndices());
- }
+ if (auto *IVI = dyn_cast<InsertValueInst>(I))
+ return ConstantExpr::getInsertValue(Ops[0], Ops[1], IVI->getIndices());
+
+ if (auto *EVI = dyn_cast<ExtractValueInst>(I))
+ return ConstantExpr::getExtractValue(Ops[0], EVI->getIndices());
return ConstantFoldInstOperands(I, Ops, DL, TLI);
}
More information about the llvm-commits
mailing list