1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- //===-- ModuleUtils.h - Functions to manipulate Modules ---------*- C++ -*-===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- //
- // This family of functions perform manipulations on Modules.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_TRANSFORMS_UTILS_MODULEUTILS_H
- #define LLVM_TRANSFORMS_UTILS_MODULEUTILS_H
- #include "llvm/ADT/ArrayRef.h"
- #include <utility> // for std::pair
- namespace llvm {
- class Module;
- class Function;
- class GlobalValue;
- class GlobalVariable;
- class Constant;
- class StringRef;
- class Value;
- class Type;
- template <class PtrType> class SmallPtrSetImpl;
- /// Append F to the list of global ctors of module M with the given Priority.
- /// This wraps the function in the appropriate structure and stores it along
- /// side other global constructors. For details see
- /// http://llvm.org/docs/LangRef.html#intg_global_ctors
- void appendToGlobalCtors(Module &M, Function *F, int Priority);
- /// Same as appendToGlobalCtors(), but for global dtors.
- void appendToGlobalDtors(Module &M, Function *F, int Priority);
- /// \brief Given "llvm.used" or "llvm.compiler.used" as a global name, collect
- /// the initializer elements of that global in Set and return the global itself.
- GlobalVariable *collectUsedGlobalVariables(Module &M,
- SmallPtrSetImpl<GlobalValue *> &Set,
- bool CompilerUsed);
- // Validate the result of Module::getOrInsertFunction called for an interface
- // function of given sanitizer. If the instrumented module defines a function
- // with the same name, their prototypes must match, otherwise
- // getOrInsertFunction returns a bitcast.
- Function *checkSanitizerInterfaceFunction(Constant *FuncOrBitcast);
- /// \brief Creates sanitizer constructor function, and calls sanitizer's init
- /// function from it.
- /// \return Returns pair of pointers to constructor, and init functions
- /// respectively.
- std::pair<Function *, Function *> createSanitizerCtorAndInitFunctions(
- Module &M, StringRef CtorName, StringRef InitName,
- ArrayRef<Type *> InitArgTypes, ArrayRef<Value *> InitArgs);
- } // End llvm namespace
- #endif // LLVM_TRANSFORMS_UTILS_MODULEUTILS_H
|