LLVM 20.0.0git
|
#include "llvm/Transforms/Utils/CtorUtils.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include <numeric>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "ctor_utils" |
Functions | |
static void | removeGlobalCtors (GlobalVariable *GCL, const BitVector &CtorsToRemove) |
Given a specified llvm.global_ctors list, remove the listed elements. | |
static std::vector< std::pair< uint32_t, Function * > > | parseGlobalCtors (GlobalVariable *GV) |
Given a llvm.global_ctors list that we can understand, return a list of the functions and null terminator as a vector. | |
static GlobalVariable * | findGlobalCtors (Module &M) |
Find the llvm.global_ctors list. | |
#define DEBUG_TYPE "ctor_utils" |
Definition at line 23 of file CtorUtils.cpp.
|
static |
Find the llvm.global_ctors list.
Definition at line 77 of file CtorUtils.cpp.
References F, llvm::GlobalVariable::getInitializer(), llvm::User::getOperand(), llvm::GlobalVariable::hasUniqueInitializer(), and llvm::User::operands().
Referenced by llvm::optimizeGlobalCtorsList().
|
static |
Given a llvm.global_ctors list that we can understand, return a list of the functions and null terminator as a vector.
Definition at line 64 of file CtorUtils.cpp.
References llvm::GlobalVariable::getInitializer(), llvm::User::getNumOperands(), llvm::User::getOperand(), and llvm::User::operands().
Referenced by llvm::optimizeGlobalCtorsList().
|
static |
Given a specified llvm.global_ctors list, remove the listed elements.
Definition at line 28 of file CtorUtils.cpp.
References llvm::GlobalVariable::eraseFromParent(), llvm::ConstantArray::get(), llvm::GlobalValue::getAddressSpace(), llvm::ArrayType::getElementType(), llvm::GlobalVariable::getInitializer(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::GlobalValue::getLinkage(), llvm::User::getNumOperands(), llvm::User::getOperand(), llvm::GlobalValue::getParent(), llvm::GlobalValue::getThreadLocalMode(), llvm::ConstantArray::getType(), llvm::Value::getType(), I, llvm::Module::insertGlobalVariable(), llvm::GlobalVariable::isConstant(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::Value::replaceAllUsesWith(), llvm::GlobalVariable::setInitializer(), llvm::SmallVectorBase< Size_T >::size(), llvm::Value::takeName(), llvm::BitVector::test(), and llvm::Value::use_empty().
Referenced by llvm::optimizeGlobalCtorsList().