[llvm] [InstCombine] Do not use operand info in `replaceInInstruction` (PR #99492)
Yingwei Zheng via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 21 07:51:56 PDT 2024
================
@@ -822,15 +822,25 @@ bool isSafeToSpeculativelyExecute(const Instruction *I,
const Instruction *CtxI = nullptr,
AssumptionCache *AC = nullptr,
const DominatorTree *DT = nullptr,
- const TargetLibraryInfo *TLI = nullptr);
+ const TargetLibraryInfo *TLI = nullptr,
+ bool UseOperandInfo = true);
+
+inline bool isSafeToSpeculativelyExecute(const Instruction *I,
+ BasicBlock::iterator CtxI,
+ AssumptionCache *AC = nullptr,
+ const DominatorTree *DT = nullptr,
+ const TargetLibraryInfo *TLI = nullptr,
+ bool UseOperandInfo = true) {
+ // Take an iterator, and unwrap it into an Instruction *.
+ return isSafeToSpeculativelyExecute(I, &*CtxI, AC, DT, TLI, UseOperandInfo);
+}
+/// Don't use information from its non-constant operands. This helper is used
+/// when its operands are going to be replaced.
inline bool
-isSafeToSpeculativelyExecute(const Instruction *I, BasicBlock::iterator CtxI,
- AssumptionCache *AC = nullptr,
- const DominatorTree *DT = nullptr,
- const TargetLibraryInfo *TLI = nullptr) {
- // Take an iterator, and unwrap it into an Instruction *.
- return isSafeToSpeculativelyExecute(I, &*CtxI, AC, DT, TLI);
+isSafeToSpeculativelyExecuteWithOperandsReplaced(const Instruction *I) {
+ return isSafeToSpeculativelyExecute(I, nullptr, nullptr, nullptr, nullptr,
+ /*UseOperandInfo=*/false);
----------------
dtcxzyw wrote:
```suggestion
/*UseVariableInfo=*/false);
```
https://github.com/llvm/llvm-project/pull/99492
More information about the llvm-commits
mailing list