|
LLVM
4.0.0
|
#include "llvm/Transforms/Scalar/LowerGuardIntrinsic.h"#include "llvm/ADT/SmallVector.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/Function.h"#include "llvm/IR/InstIterator.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/Intrinsics.h"#include "llvm/IR/IRBuilder.h"#include "llvm/IR/MDBuilder.h"#include "llvm/IR/Module.h"#include "llvm/Pass.h"#include "llvm/Transforms/Scalar.h"#include "llvm/Transforms/Utils/BasicBlockUtils.h"Go to the source code of this file.
Functions | |
| static void | MakeGuardControlFlowExplicit (Function *DeoptIntrinsic, CallInst *CI) |
| static bool | lowerGuardIntrinsic (Function &F) |
| INITIALIZE_PASS (LowerGuardIntrinsicLegacyPass,"lower-guard-intrinsic","Lower the guard intrinsic to normal control flow", false, false) Pass *llvm | |
Variables | |
| static cl::opt< uint32_t > | PredicatePassBranchWeight ("guards-predicate-pass-branch-weight", cl::Hidden, cl::init(1<< 20), cl::desc("The probability of a guard failing is assumed to be the ""reciprocal of this value (default = 1 << 20)")) |
| INITIALIZE_PASS | ( | LowerGuardIntrinsicLegacyPass | , |
| "lower-guard-intrinsic" | , | ||
| "Lower the guard intrinsic to normal control flow" | , | ||
| false | , | ||
| false | |||
| ) |
Definition at line 123 of file LowerGuardIntrinsic.cpp.
Definition at line 88 of file LowerGuardIntrinsic.cpp.
References llvm::SmallVectorBase::empty(), llvm::Intrinsic::getDeclaration(), llvm::Module::getFunction(), llvm::Function::getIntrinsicID(), llvm::Intrinsic::getName(), llvm::GlobalValue::getParent(), llvm::Function::getReturnType(), I, llvm::instructions(), MakeGuardControlFlowExplicit(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and llvm::Function::setCallingConv().
Referenced by llvm::LowerGuardIntrinsicPass::run().
Definition at line 49 of file LowerGuardIntrinsic.cpp.
References llvm::CallInst::arg_begin(), llvm::CallInst::arg_end(), AMDGPU::RuntimeMD::KeyName::Args, B, llvm::IRBuilder< T, Inserter >::CreateCall(), llvm::IRBuilder< T, Inserter >::CreateRet(), llvm::IRBuilder< T, Inserter >::CreateRetVoid(), llvm::Instruction::eraseFromParent(), llvm::CallInst::getArgOperand(), llvm::CallInst::getCallingConv(), llvm::Value::getContext(), llvm::Instruction::getMetadata(), llvm::OperandBundleUser< InstrTy, OpIteratorTy >::getOperandBundle(), llvm::Instruction::getParent(), llvm::Function::getReturnType(), llvm::TerminatorInst::getSuccessor(), llvm::Type::isVoidTy(), llvm::LLVMContext::MD_make_implicit, llvm::LLVMContext::MD_prof, llvm::LLVMContext::OB_deopt, PredicatePassBranchWeight, llvm::Value::setName(), and llvm::SplitBlockAndInsertIfThen().
Referenced by lowerGuardIntrinsic().
|
static |
Referenced by MakeGuardControlFlowExplicit().
1.8.6