19 #define DEBUG_TYPE "forceattrs" 23 cl::desc(
"Add an attribute to a function. This should be a " 24 "pair of 'function-name:attribute-name', for " 25 "example -force-attribute=foo:noinline. This " 26 "option can be specified multiple times."));
80 <<
" unknown or not handled!\n");
102 struct ForceFunctionAttrsLegacyPass :
public ModulePass {
104 ForceFunctionAttrsLegacyPass() :
ModulePass(ID) {
109 bool runOnModule(
Module &M)
override {
124 "Force set function attributes",
false,
false)
127 return new ForceFunctionAttrsLegacyPass();
Super simple passes to force specific function attrs from the commandline into the IR for debugging p...
Pass interface - Implemented by all 'passes'.
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
This class represents lattice values for constants.
A Module instance is used to store all the information related to an LLVM module. ...
bool hasFnAttribute(Attribute::AttrKind Kind) const
Return true if the function has the attribute.
static void addForcedAttributes(Function &F)
If F has any forced attributes given on the command line, add them.
No attributes have been set.
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE R Default(T Value)
static PreservedAnalyses none()
Convenience factory function for the empty preserved set.
A switch()-like statement whose cases are string literals.
A set of analyses that are preserved following a run of a transformation pass.
iterator_range< iterator > functions()
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
static Attribute::AttrKind parseAttrKind(StringRef Kind)
static cl::list< std::string > ForceAttributes("force-attribute", cl::Hidden, cl::desc("Add an attribute to a function. This should be a " "pair of 'function-name:attribute-name', for " "example -force-attribute=foo:noinline. This " "option can be specified multiple times."))
Module.h This file contains the declarations for the Module class.
LLVM_NODISCARD std::pair< StringRef, StringRef > split(char Separator) const
Split into two substrings around the first occurrence of a separator character.
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
LLVM_ATTRIBUTE_ALWAYS_INLINE StringSwitch & Case(StringLiteral S, T Value)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &)
INITIALIZE_PASS(ForceFunctionAttrsLegacyPass, "forceattrs", "Force set function attributes", false, false) Pass *llvm
StringRef getName() const
Return a constant reference to the value's name.
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
void initializeForceFunctionAttrsLegacyPassPass(PassRegistry &)
void addFnAttr(Attribute::AttrKind Kind)
Add function attributes to this function.
StringRef - Represent a constant reference to a string, i.e.
A container for analyses that lazily runs them and caches their results.
Pass * createForceFunctionAttrsLegacyPass()
Create a legacy pass manager instance of a pass to force function attrs.
AttrKind
This enumeration lists the attributes that can be associated with parameters, function results...