Mercurial > hg > Members > tobaru > cbc > CbC_llvm
view lib/IR/Statepoint.cpp @ 107:a03ddd01be7e
resolve warnings
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 31 Jan 2016 17:34:49 +0900 |
parents | 7d135dc70f03 |
children | 1172e4bd9c6f |
line wrap: on
line source
//===-- IR/Statepoint.cpp -- gc.statepoint utilities --- -----------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // //===----------------------------------------------------------------------===// #include "llvm/IR/Function.h" #include "llvm/IR/Constant.h" #include "llvm/IR/Constants.h" #include "llvm/IR/Statepoint.h" #include "llvm/Support/CommandLine.h" 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 Value *inst) { if (isa<InvokeInst>(inst) || isa<CallInst>(inst)) { ImmutableCallSite CS(inst); return isStatepoint(CS); } return false; } bool llvm::isStatepoint(const Value &inst) { return isStatepoint(&inst); } bool llvm::isGCRelocate(const ImmutableCallSite &CS) { return CS.getInstruction() && isa<GCRelocateInst>(CS.getInstruction()); } 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 Value *inst) { if (const CallInst *call = dyn_cast<CallInst>(inst)) { if (Function *F = call->getCalledFunction()) { return F->getIntrinsicID() == Intrinsic::experimental_gc_result; } } return false; }