#include "CGCleanup.h"
#include "CodeGenFunction.h"
#include "llvm/Support/SaveAndRestore.h"
usingnamespaceclang;
usingnamespaceCodeGen;
bool DominatingValue<RValue>::saved_type::needsSaving(RValue rv) { … }
DominatingValue<RValue>::saved_type
DominatingValue<RValue>::saved_type::save(CodeGenFunction &CGF, RValue rv) { … }
RValue DominatingValue<RValue>::saved_type::restore(CodeGenFunction &CGF) { … }
char *EHScopeStack::allocate(size_t Size) { … }
void EHScopeStack::deallocate(size_t Size) { … }
bool EHScopeStack::containsOnlyLifetimeMarkers(
EHScopeStack::stable_iterator Old) const { … }
bool EHScopeStack::requiresLandingPad() const { … }
EHScopeStack::stable_iterator
EHScopeStack::getInnermostActiveNormalCleanup() const { … }
void *EHScopeStack::pushCleanup(CleanupKind Kind, size_t Size) { … }
void EHScopeStack::popCleanup() { … }
EHFilterScope *EHScopeStack::pushFilter(unsigned numFilters) { … }
void EHScopeStack::popFilter() { … }
EHCatchScope *EHScopeStack::pushCatch(unsigned numHandlers) { … }
void EHScopeStack::pushTerminate() { … }
void EHScopeStack::popNullFixups() { … }
RawAddress CodeGenFunction::createCleanupActiveFlag() { … }
void CodeGenFunction::initFullExprCleanupWithFlag(RawAddress ActiveFlag) { … }
void EHScopeStack::Cleanup::anchor() { … }
static void createStoreInstBefore(llvm::Value *value, Address addr,
llvm::BasicBlock::iterator beforeInst,
CodeGenFunction &CGF) { … }
static llvm::LoadInst *
createLoadInstBefore(Address addr, const Twine &name,
llvm::BasicBlock::iterator beforeInst,
CodeGenFunction &CGF) { … }
static llvm::LoadInst *createLoadInstBefore(Address addr, const Twine &name,
CodeGenFunction &CGF) { … }
static void ResolveAllBranchFixups(CodeGenFunction &CGF,
llvm::SwitchInst *Switch,
llvm::BasicBlock *CleanupEntry) { … }
static llvm::SwitchInst *TransitionToCleanupSwitch(CodeGenFunction &CGF,
llvm::BasicBlock *Block) { … }
void CodeGenFunction::ResolveBranchFixups(llvm::BasicBlock *Block) { … }
void CodeGenFunction::PopCleanupBlocks(
EHScopeStack::stable_iterator Old,
std::initializer_list<llvm::Value **> ValuesToReload) { … }
void CodeGenFunction::PopCleanupBlocks(
EHScopeStack::stable_iterator Old, size_t OldLifetimeExtendedSize,
std::initializer_list<llvm::Value **> ValuesToReload) { … }
static llvm::BasicBlock *CreateNormalEntry(CodeGenFunction &CGF,
EHCleanupScope &Scope) { … }
static llvm::BasicBlock *SimplifyCleanupEntry(CodeGenFunction &CGF,
llvm::BasicBlock *Entry) { … }
static void EmitCleanup(CodeGenFunction &CGF,
EHScopeStack::Cleanup *Fn,
EHScopeStack::Cleanup::Flags flags,
Address ActiveFlag) { … }
static void ForwardPrebranchedFallthrough(llvm::BasicBlock *Exit,
llvm::BasicBlock *From,
llvm::BasicBlock *To) { … }
static void destroyOptimisticNormalEntry(CodeGenFunction &CGF,
EHCleanupScope &scope) { … }
void CodeGenFunction::PopCleanupBlock(bool FallthroughIsBranchThrough,
bool ForDeactivation) { … }
bool CodeGenFunction::isObviouslyBranchWithoutCleanups(JumpDest Dest) const { … }
void CodeGenFunction::EmitBranchThroughCleanup(JumpDest Dest) { … }
static bool IsUsedAsEHCleanup(EHScopeStack &EHStack,
EHScopeStack::stable_iterator cleanup) { … }
enum ForActivation_t { … };
static void SetupCleanupBlockActivation(CodeGenFunction &CGF,
EHScopeStack::stable_iterator C,
ForActivation_t kind,
llvm::Instruction *dominatingIP) { … }
void CodeGenFunction::ActivateCleanupBlock(EHScopeStack::stable_iterator C,
llvm::Instruction *dominatingIP) { … }
void CodeGenFunction::DeactivateCleanupBlock(EHScopeStack::stable_iterator C,
llvm::Instruction *dominatingIP) { … }
RawAddress CodeGenFunction::getNormalCleanupDestSlot() { … }
void CodeGenFunction::EmitCXXTemporary(const CXXTemporary *Temporary,
QualType TempType,
Address Ptr) { … }
static void EmitSehScope(CodeGenFunction &CGF,
llvm::FunctionCallee &SehCppScope) { … }
void CodeGenFunction::EmitSehCppScopeBegin() { … }
void CodeGenFunction::EmitSehCppScopeEnd() { … }
void CodeGenFunction::EmitSehTryScopeBegin() { … }
void CodeGenFunction::EmitSehTryScopeEnd() { … }