LLVM
8.0.1
|
#include "llvm/Transforms/Scalar/MakeGuardsExplicit.h"
#include "llvm/Analysis/GuardUtils.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/Pass.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils/GuardUtils.h"
Go to the source code of this file.
Functions | |
static void | turnToExplicitForm (CallInst *Guard, Function *DeoptIntrinsic) |
static bool | explicifyGuards (Function &F) |
INITIALIZE_PASS (MakeGuardsExplicitLegacyPass, "make-guards-explicit", "Lower the guard intrinsic to explicit control flow form", false, false) PreservedAnalyses MakeGuardsExplicitPass | |
Definition at line 80 of file MakeGuardsExplicit.cpp.
References llvm::SmallVectorBase::empty(), llvm::Intrinsic::experimental_deoptimize, llvm::Intrinsic::experimental_guard, F(), llvm::Intrinsic::getDeclaration(), llvm::Module::getFunction(), llvm::Intrinsic::getName(), llvm::GlobalValue::getParent(), llvm::Function::getReturnType(), I, llvm::instructions(), llvm::isGuard(), llvm::SmallVectorTemplateBase< T >::push_back(), runOnFunction(), llvm::Function::setCallingConv(), and turnToExplicitForm().
Referenced by INITIALIZE_PASS().
INITIALIZE_PASS | ( | MakeGuardsExplicitLegacyPass | , |
"make-guards-explicit" | , | ||
"Lower the guard intrinsic to explicit control flow form" | , | ||
false | , | ||
false | |||
) |
Definition at line 111 of file MakeGuardsExplicit.cpp.
References llvm::PreservedAnalyses::all(), explicifyGuards(), and llvm::PreservedAnalyses::none().
Definition at line 58 of file MakeGuardsExplicit.cpp.
References assert(), B, llvm::Instruction::eraseFromParent(), llvm::Intrinsic::experimental_widenable_condition, llvm::CallBase::getCallingConv(), llvm::BranchInst::getCondition(), llvm::Instruction::getParent(), llvm::BasicBlock::getTerminator(), llvm::BranchInst::isConditional(), llvm::makeGuardControlFlowExplicit(), and llvm::BranchInst::setCondition().
Referenced by explicifyGuards().