LLVM  8.0.1
Macros | Functions
SjLjEHPrepare.cpp File Reference
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for SjLjEHPrepare.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "sjljehprepare"
 

Functions

 STATISTIC (NumInvokes, "Number of invokes replaced")
 
 STATISTIC (NumSpilled, "Number of registers live across unwind edges")
 
 INITIALIZE_PASS (SjLjEHPrepare, DEBUG_TYPE, "Prepare SjLj exceptions", false, false) FunctionPass *llvm
 
static void MarkBlocksLiveIn (BasicBlock *BB, SmallPtrSetImpl< BasicBlock *> &LiveBBs)
 MarkBlocksLiveIn - Insert BB and all of its predecessors into LiveBBs until we reach blocks we've already seen. More...
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "sjljehprepare"

Definition at line 33 of file SjLjEHPrepare.cpp.

Function Documentation

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( SjLjEHPrepare  ,
DEBUG_TYPE  ,
"Prepare SjLj exceptions ,
false  ,
false   
)

◆ MarkBlocksLiveIn()

static void MarkBlocksLiveIn ( BasicBlock BB,
SmallPtrSetImpl< BasicBlock *> &  LiveBBs 
)
static

MarkBlocksLiveIn - Insert BB and all of its predecessors into LiveBBs until we reach blocks we've already seen.

Definition at line 122 of file SjLjEHPrepare.cpp.

References llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Align, llvm::Function::args(), assert(), B, llvm::SetVector< T, SmallVector< T, N >, SmallDenseSet< T, N > >::begin(), llvm::BasicBlock::begin(), llvm::Function::begin(), Callee, llvm::SmallPtrSetImpl< PtrType >::count(), llvm::CallInst::Create(), llvm::SelectInst::Create(), llvm::BranchInst::Create(), llvm::dbgs(), llvm::DemotePHIToStack(), llvm::DemoteRegToStack(), llvm::Intrinsic::donothing, llvm::dyn_cast(), E, llvm::Intrinsic::eh_sjlj_callsite, llvm::Intrinsic::eh_sjlj_functioncontext, llvm::Intrinsic::eh_sjlj_lsda, llvm::Intrinsic::eh_sjlj_setup_dispatch, llvm::SmallVectorBase::empty(), llvm::SmallPtrSetImplBase::empty(), llvm::SetVector< T, SmallVector< T, N >, SmallDenseSet< T, N > >::end(), llvm::BasicBlock::end(), llvm::Instruction::eraseFromParent(), F(), llvm::Intrinsic::frameaddress, llvm::BasicBlock::front(), llvm::Function::front(), llvm::ConstantInt::get(), llvm::UndefValue::get(), llvm::Function::getContext(), llvm::Module::getContext(), llvm::Module::getDataLayout(), llvm::Intrinsic::getDeclaration(), llvm::BasicBlock::getFirstInsertionPt(), llvm::PHINode::getIncomingBlock(), llvm::PHINode::getIncomingValue(), llvm::Type::getInt32Ty(), llvm::IRBuilderBase::getInt8PtrTy(), llvm::BasicBlock::getLandingPadInst(), llvm::Value::getName(), llvm::PHINode::getNumIncomingValues(), llvm::Module::getOrInsertFunction(), llvm::Instruction::getParent(), llvm::GlobalValue::getParent(), getParent(), llvm::Function::getPersonalityFn(), llvm::BasicBlock::getTerminator(), llvm::ConstantInt::getTrue(), llvm::Value::getType(), llvm::PointerType::getUnqual(), llvm::Type::getVoidTy(), I, llvm::SetVector< T, SmallVector< T, N >, SmallDenseSet< T, N > >::insert(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::Instruction::insertAfter(), llvm::inverse_depth_first_ext(), LLVM_DEBUG, llvm::makeArrayRef(), llvm::Instruction::mayThrow(), llvm::Instruction::moveBefore(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T >::push_back(), Register, llvm::Value::replaceAllUsesWith(), llvm::MCID::Return, runOnFunction(), llvm::CallBase::setDoesNotThrow(), llvm::User::setOperand(), SI, llvm::SmallVectorBase::size(), llvm::Intrinsic::stackrestore, llvm::Intrinsic::stacksave, llvm::Value::use_empty(), llvm::Value::user_begin(), llvm::Value::user_end(), Users, and llvm::Value::users().

◆ STATISTIC() [1/2]

STATISTIC ( NumInvokes  ,
"Number of invokes replaced"   
)

◆ STATISTIC() [2/2]

STATISTIC ( NumSpilled  ,
"Number of registers live across unwind edges"   
)