diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/LICM.cpp | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp index a642d2ef9ff..94fcdaf3c08 100644 --- a/llvm/lib/Transforms/Scalar/LICM.cpp +++ b/llvm/lib/Transforms/Scalar/LICM.cpp @@ -681,14 +681,10 @@ bool llvm::canSinkOrHoistInst(Instruction &I, AAResults *AA, DominatorTree *DT, if (CI->mayThrow()) return false; - if (Function *F = CI->getCalledFunction()) - switch (F->getIntrinsicID()) { - default: break; - // TODO: support invariant.start, and experimental.guard here - case Intrinsic::assume: - // Assumes don't actually alias anything or throw - return true; - }; + using namespace PatternMatch; + if (match(CI, m_Intrinsic<Intrinsic::assume>())) + // Assumes don't actually alias anything or throw + return true; // Handle simple cases by querying alias analysis. FunctionModRefBehavior Behavior = AA->getModRefBehavior(CI); |

