LLVM
8.0.1
|
EscapeEnumerator - This is a little algorithm to find all escape points from a function so that "finally"-style code can be inserted. More...
#include "llvm/Transforms/Utils/EscapeEnumerator.h"
Public Member Functions | |
EscapeEnumerator (Function &F, const char *N="cleanup", bool HandleExceptions=true) | |
IRBuilder * | Next () |
EscapeEnumerator - This is a little algorithm to find all escape points from a function so that "finally"-style code can be inserted.
In addition to finding the existing return and unwind instructions, it also (if necessary) transforms any call instructions into invokes and sends them to a landing pad.
Definition at line 28 of file EscapeEnumerator.h.
|
inline |
Definition at line 38 of file EscapeEnumerator.h.
References Next().
IRBuilder * EscapeEnumerator::Next | ( | ) |
Definition at line 30 of file EscapeEnumerator.cpp.
References llvm::AMDGPU::HSAMD::Kernel::Key::Args, C, llvm::changeToInvokeAndSplitBasicBlock(), llvm::classifyEHPersonality(), llvm::BasicBlock::Create(), llvm::LandingPadInst::Create(), llvm::ResumeInst::Create(), llvm::Function::doesNotThrow(), llvm::SmallVectorBase::empty(), llvm::StructType::get(), llvm::Value::getContext(), getDefaultPersonalityFn(), llvm::Type::getInt32Ty(), llvm::Type::getInt8PtrTy(), llvm::BasicBlock::getTerminator(), I, llvm::isScopedEHPersonality(), llvm::SmallVectorTemplateBase< T >::push_back(), llvm::report_fatal_error(), llvm::LandingPadInst::setCleanup(), llvm::IRBuilderBase::SetInsertPoint(), and llvm::SmallVectorBase::size().
Referenced by llvm::createShadowStackGCLoweringPass(), EscapeEnumerator(), and isAtomic().