mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Add invoke related functionality into StatepointSite classes.
Differential Revision: http://reviews.llvm.org/D7364 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229838 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -20,24 +20,34 @@ using namespace std;
|
||||
using namespace llvm;
|
||||
|
||||
bool llvm::isStatepoint(const ImmutableCallSite &CS) {
|
||||
if (!CS.getInstruction()) {
|
||||
// This is not a call site
|
||||
return false;
|
||||
}
|
||||
|
||||
const Function *F = CS.getCalledFunction();
|
||||
return (F && F->getIntrinsicID() == Intrinsic::experimental_gc_statepoint);
|
||||
}
|
||||
bool llvm::isStatepoint(const Instruction *inst) {
|
||||
bool llvm::isStatepoint(const Value *inst) {
|
||||
if (isa<InvokeInst>(inst) || isa<CallInst>(inst)) {
|
||||
ImmutableCallSite CS(inst);
|
||||
return isStatepoint(CS);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool llvm::isStatepoint(const Instruction &inst) {
|
||||
bool llvm::isStatepoint(const Value &inst) {
|
||||
return isStatepoint(&inst);
|
||||
}
|
||||
|
||||
bool llvm::isGCRelocate(const ImmutableCallSite &CS) {
|
||||
if (!CS.getInstruction()) {
|
||||
// This is not a call site
|
||||
return false;
|
||||
}
|
||||
|
||||
return isGCRelocate(CS.getInstruction());
|
||||
}
|
||||
bool llvm::isGCRelocate(const Instruction *inst) {
|
||||
bool llvm::isGCRelocate(const Value *inst) {
|
||||
if (const CallInst *call = dyn_cast<CallInst>(inst)) {
|
||||
if (const Function *F = call->getCalledFunction()) {
|
||||
return F->getIntrinsicID() == Intrinsic::experimental_gc_relocate;
|
||||
@@ -47,9 +57,14 @@ bool llvm::isGCRelocate(const Instruction *inst) {
|
||||
}
|
||||
|
||||
bool llvm::isGCResult(const ImmutableCallSite &CS) {
|
||||
if (!CS.getInstruction()) {
|
||||
// This is not a call site
|
||||
return false;
|
||||
}
|
||||
|
||||
return isGCResult(CS.getInstruction());
|
||||
}
|
||||
bool llvm::isGCResult(const Instruction *inst) {
|
||||
bool llvm::isGCResult(const Value *inst) {
|
||||
if (const CallInst *call = dyn_cast<CallInst>(inst)) {
|
||||
if (Function *F = call->getCalledFunction()) {
|
||||
return (F->getIntrinsicID() == Intrinsic::experimental_gc_result_int ||
|
||||
|
Reference in New Issue
Block a user