forked from OSchip/llvm-project
Move implementation of isAssumeLikeIntrinsic into IntrinsicInst
This is remove dependency on ValueTracking in the future patch. Differential Revision: https://reviews.llvm.org/D96079
This commit is contained in:
parent
f47d7c145b
commit
8151c1b442
|
@ -82,6 +82,29 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
// Checks if the intrinsic is an annotation.
|
||||
bool isAssumeLikeIntrinsic() const {
|
||||
switch (getIntrinsicID()) {
|
||||
default: break;
|
||||
case Intrinsic::assume:
|
||||
case Intrinsic::sideeffect:
|
||||
case Intrinsic::pseudoprobe:
|
||||
case Intrinsic::dbg_declare:
|
||||
case Intrinsic::dbg_value:
|
||||
case Intrinsic::dbg_label:
|
||||
case Intrinsic::invariant_start:
|
||||
case Intrinsic::invariant_end:
|
||||
case Intrinsic::lifetime_start:
|
||||
case Intrinsic::lifetime_end:
|
||||
case Intrinsic::experimental_noalias_scope_decl:
|
||||
case Intrinsic::objectsize:
|
||||
case Intrinsic::ptr_annotation:
|
||||
case Intrinsic::var_annotation:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Methods for support type inquiry through isa, cast, and dyn_cast:
|
||||
static bool classof(const CallInst *I) {
|
||||
if (const Function *CF = I->getCalledFunction())
|
||||
|
|
|
@ -519,27 +519,8 @@ static bool isEphemeralValueOf(const Instruction *I, const Value *E) {
|
|||
|
||||
// Is this an intrinsic that cannot be speculated but also cannot trap?
|
||||
bool llvm::isAssumeLikeIntrinsic(const Instruction *I) {
|
||||
if (const CallInst *CI = dyn_cast<CallInst>(I))
|
||||
if (Function *F = CI->getCalledFunction())
|
||||
switch (F->getIntrinsicID()) {
|
||||
default: break;
|
||||
// FIXME: This list is repeated from NoTTI::getIntrinsicCost.
|
||||
case Intrinsic::assume:
|
||||
case Intrinsic::sideeffect:
|
||||
case Intrinsic::pseudoprobe:
|
||||
case Intrinsic::dbg_declare:
|
||||
case Intrinsic::dbg_value:
|
||||
case Intrinsic::dbg_label:
|
||||
case Intrinsic::invariant_start:
|
||||
case Intrinsic::invariant_end:
|
||||
case Intrinsic::lifetime_start:
|
||||
case Intrinsic::lifetime_end:
|
||||
case Intrinsic::experimental_noalias_scope_decl:
|
||||
case Intrinsic::objectsize:
|
||||
case Intrinsic::ptr_annotation:
|
||||
case Intrinsic::var_annotation:
|
||||
return true;
|
||||
}
|
||||
if (const IntrinsicInst *CI = dyn_cast<IntrinsicInst>(I))
|
||||
return CI->isAssumeLikeIntrinsic();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue