LLVM: lib/Transforms/Utils/LowerGlobalDtors.cpp File Reference (original) (raw)

Lower @llvm.global_dtors. More...

Go to the source code of this file.

Macros
#define DEBUG_TYPE "lower-global-dtors"

Detailed Description

Lower @llvm.global_dtors.

Implement @llvm.global_dtors by creating wrapper functions that are registered in @llvm.global_ctors and which contain a call to __cxa_atexit to register their destructor functions.

Definition in file LowerGlobalDtors.cpp.

Macro Definition Documentation

DEBUG_TYPE

#define DEBUG_TYPE "lower-global-dtors"

Function Documentation

INITIALIZE_PASS()

INITIALIZE_PASS ( LowerGlobalDtorsLegacyPass ,
DEBUG_TYPE ,
"Lower @llvm.global_dtors via `__cxa_atexit`" ,
false ,
false )

runImpl()

Definition at line 77 of file LowerGlobalDtors.cpp.

References llvm::appendToGlobalCtors(), llvm::CallingConv::C, llvm::cast(), llvm::BasicBlock::Create(), llvm::BranchInst::Create(), llvm::CallInst::Create(), llvm::Function::Create(), llvm::ReturnInst::Create(), llvm::dyn_cast(), llvm::GlobalVariable::eraseFromParent(), llvm::GlobalValue::ExternalWeakLinkage, F, llvm::ConstantPointerNull::get(), llvm::FunctionType::get(), llvm::PointerType::get(), llvm::FunctionCallee::getCallee(), llvm::ArrayType::getElementType(), llvm::GlobalVariable::getInitializer(), llvm::Type::getInt32Ty(), llvm::Type::getInt8Ty(), llvm::Value::getName(), llvm::Constant::getNullValue(), llvm::User::getOperand(), llvm::Intrinsic::getOrInsertDeclaration(), llvm::ConstantArray::getType(), llvm::Value::getType(), llvm::PointerType::getUnqual(), llvm::Type::getVoidTy(), llvm::GlobalVariable::hasInitializer(), llvm::GlobalValue::HiddenVisibility, llvm::CmpInst::ICMP_NE, llvm::Constant::isNullValue(), llvm::Null, llvm::User::operands(), llvm::GlobalValue::PrivateLinkage, llvm::reverse(), llvm::GlobalValue::setVisibility(), and llvm::Constant::stripPointerCasts().