LLVM API Documentation

llvm::Function Class Reference

#include <Function.h>

Inheritance diagram for llvm::Function:
[legend]
Collaboration diagram for llvm::Function:
[legend]

List of all members.

Public Types

typedef iplist< Argument > ArgumentListType
typedef iplist< BasicBlock > BasicBlockListType
typedef
BasicBlockListType::iterator 
iterator
typedef
BasicBlockListType::const_iterator 
const_iterator
typedef ArgumentListType::iterator arg_iterator
typedef
ArgumentListType::const_iterator 
const_arg_iterator

Public Member Functions

 ~Function ()
const Type * getReturnType () const
const FunctionType * getFunctionType () const
bool isVarArg () const
virtual bool isDeclaration () const
unsigned getIntrinsicID (bool noAssert=false) const
bool isIntrinsic () const
unsigned getCallingConv () const
void setCallingConv (unsigned CC)
const AttrListPtr & getAttributes () const
void setAttributes (const AttrListPtr &attrs)
bool hasFnAttr (Attributes N) const
 hasFnAttr - Return true if this function has the given attribute.
void addFnAttr (Attributes N)
void removeFnAttr (Attributes N)
bool hasGC () const
const char * getGC () const
void setGC (const char *Str)
void clearGC ()
bool paramHasAttr (unsigned i, Attributes attr) const
 Determine whether the function has the given attribute.
void addAttribute (unsigned i, Attributes attr)
 addAttribute - adds the attribute to the list of attributes.
void removeAttribute (unsigned i, Attributes attr)
 removeAttribute - removes the attribute from the list of attributes.
unsigned getParamAlignment (unsigned i) const
 Extract the alignment for a call or parameter (0=unknown).
bool doesNotAccessMemory () const
 Determine if the function does not access memory.
void setDoesNotAccessMemory (bool DoesNotAccessMemory=true)
bool onlyReadsMemory () const
 Determine if the function does not access or only reads memory.
void setOnlyReadsMemory (bool OnlyReadsMemory=true)
bool doesNotReturn () const
 Determine if the function cannot return.
void setDoesNotReturn (bool DoesNotReturn=true)
bool doesNotThrow () const
 Determine if the function cannot unwind.
void setDoesNotThrow (bool DoesNotThrow=true)
bool hasStructRetAttr () const
 Determine if the function returns a structure through first pointer argument.
bool doesNotAlias (unsigned n) const
 Determine if the parameter does not alias other parameters.
void setDoesNotAlias (unsigned n, bool DoesNotAlias=true)
bool doesNotCapture (unsigned n) const
 Determine if the parameter can be captured.
void setDoesNotCapture (unsigned n, bool DoesNotCapture=true)
void copyAttributesFrom (const GlobalValue *Src)
void deleteBody ()
virtual void removeFromParent ()
virtual void eraseFromParent ()
const ArgumentListType & getArgumentList () const
ArgumentListType & getArgumentList ()
const BasicBlockListType & getBasicBlockList () const
BasicBlockListType & getBasicBlockList ()
const BasicBlock & getEntryBlock () const
BasicBlock & getEntryBlock ()
ValueSymbolTable & getValueSymbolTable ()
const ValueSymbolTable & getValueSymbolTable () const
iterator begin ()
const_iterator begin () const
iterator end ()
const_iterator end () const
size_t size () const
bool empty () const
const BasicBlock & front () const
BasicBlock & front ()
const BasicBlock & back () const
BasicBlock & back ()
arg_iterator arg_begin ()
const_arg_iterator arg_begin () const
arg_iterator arg_end ()
const_arg_iterator arg_end () const
size_t arg_size () const
bool arg_empty () const
void viewCFG () const
void viewCFGOnly () const
void dropAllReferences ()

Static Public Member Functions

static Function * Create (const FunctionType *Ty, LinkageTypes Linkage, const std::string &N="", Module *M=0)
static bool classof (const Function *)
 Methods for support type inquiry through isa, cast, and dyn_cast:.
static bool classof (const Value *V)
static unsigned getBasicBlockListOffset ()
static unsigned getArgumentListOffset ()

Friends

class SymbolTableListTraits< Function, Module >


Detailed Description

Definition at line 54 of file Function.h.


Member Typedef Documentation

Definition at line 57 of file Function.h.

Definition at line 58 of file Function.h.

typedef BasicBlockListType::iterator llvm::Function::iterator

Definition at line 61 of file Function.h.

typedef BasicBlockListType::const_iterator llvm::Function::const_iterator

Definition at line 62 of file Function.h.

typedef ArgumentListType::iterator llvm::Function::arg_iterator

Definition at line 64 of file Function.h.

typedef ArgumentListType::const_iterator llvm::Function::const_arg_iterator

Definition at line 65 of file Function.h.


Constructor & Destructor Documentation

Function::~Function (  ) 

Definition at line 183 of file Function.cpp.

References clearGC(), and dropAllReferences().


Member Function Documentation

static Function* llvm::Function::Create ( const FunctionType *  Ty,
LinkageTypes  Linkage,
const std::string &  N = "",
Module *  M = 0 
) [inline, static]

const Type * Function::getReturnType (  )  const

const FunctionType * Function::getFunctionType (  )  const

bool Function::isVarArg (  )  const

virtual bool llvm::Function::isDeclaration (  )  const [inline, virtual]

unsigned Function::getIntrinsicID ( bool  noAssert = false  )  const

getIntrinsicID - This method returns the ID number of the specified function, or Intrinsic::not_intrinsic if the function is not an instrinsic, or if the pointer is null. This value is always defined to be zero to allow easy checking for whether a function is intrinsic or not. The particular intrinsic functions which correspond to this value are defined in llvm/Intrinsics.h.

getIntrinsicID - This method returns the ID number of the specified function, or Intrinsic::not_intrinsic if the function is not an intrinsic, or if the pointer is null. This value is always defined to be zero to allow easy checking for whether a function is intrinsic or not. The particular intrinsic functions which correspond to this value are defined in llvm/Intrinsics.h.

Definition at line 307 of file Function.cpp.

References llvm::StringMapEntry< ValueTy >::getKeyData(), llvm::StringMapEntryBase::getKeyLength(), llvm::Value::getValueName(), and Name.

Referenced by llvm::canConstantFoldCallTo(), llvm::IntrinsicInst::getIntrinsicID(), isIntrinsic(), llvm::IntrinsicLowering::LowerIntrinsicCall(), llvm::UpgradeIntrinsicCall(), llvm::UpgradeIntrinsicFunction(), and llvm::Interpreter::visitCallSite().

bool llvm::Function::isIntrinsic (  )  const [inline]

Definition at line 133 of file Function.h.

References getIntrinsicID().

Referenced by llvm::Module::getOrInsertFunction().

unsigned llvm::Function::getCallingConv (  )  const [inline]

void llvm::Function::setCallingConv ( unsigned  CC  )  [inline]

Definition at line 139 of file Function.h.

References llvm::Value::SubclassData.

Referenced by copyAttributesFrom().

const AttrListPtr& llvm::Function::getAttributes (  )  const [inline]

void llvm::Function::setAttributes ( const AttrListPtr &  attrs  )  [inline]

bool llvm::Function::hasFnAttr ( Attributes  N  )  const [inline]

void llvm::Function::addFnAttr ( Attributes  N  )  [inline]

addFnAttr - Add function attributes to this function.

Definition at line 159 of file Function.h.

References addAttribute().

Referenced by InlineCallIfPossible(), setDoesNotAccessMemory(), setDoesNotReturn(), setDoesNotThrow(), and setOnlyReadsMemory().

void llvm::Function::removeFnAttr ( Attributes  N  )  [inline]

removeFnAttr - Remove function attributes from this function.

Definition at line 166 of file Function.h.

References removeAttribute().

Referenced by setDoesNotAccessMemory(), setDoesNotReturn(), setDoesNotThrow(), and setOnlyReadsMemory().

bool Function::hasGC (  )  const

hasGC/getGC/setGC/clearGC - The name of the garbage collection algorithm to use during code generation.

Definition at line 255 of file Function.cpp.

References llvm::DenseMap< KeyT, ValueT, KeyInfoT, ValueInfoT >::count().

Referenced by copyAttributesFrom(), equals(), llvm::GCModuleInfo::getFunctionInfo(), getGC(), llvm::InlineFunction(), LLVMGetGC(), and llvm::SelectionDAGISel::runOnFunction().

const char * Function::getGC (  )  const

void Function::setGC ( const char *  Str  ) 

Definition at line 264 of file Function.cpp.

References llvm::StringPool::intern().

Referenced by copyAttributesFrom(), llvm::InlineFunction(), and LLVMSetGC().

void Function::clearGC (  ) 

bool llvm::Function::paramHasAttr ( unsigned  i,
Attributes  attr 
) const [inline]

void Function::addAttribute ( unsigned  i,
Attributes  attr 
)

addAttribute - adds the attribute to the list of attributes.

Definition at line 236 of file Function.cpp.

References llvm::AttrListPtr::addAttr(), getAttributes(), and setAttributes().

Referenced by llvm::Argument::addAttr(), addFnAttr(), setDoesNotAlias(), and setDoesNotCapture().

void Function::removeAttribute ( unsigned  i,
Attributes  attr 
)

removeAttribute - removes the attribute from the list of attributes.

Definition at line 242 of file Function.cpp.

References getAttributes(), llvm::AttrListPtr::removeAttr(), and setAttributes().

Referenced by llvm::Argument::removeAttr(), removeFnAttr(), setDoesNotAlias(), and setDoesNotCapture().

unsigned llvm::Function::getParamAlignment ( unsigned  i  )  const [inline]

Extract the alignment for a call or parameter (0=unknown).

Definition at line 190 of file Function.h.

References llvm::AttrListPtr::getParamAlignment().

Referenced by llvm::TargetLowering::LowerArguments().

bool llvm::Function::doesNotAccessMemory (  )  const [inline]

Determine if the function does not access memory.

Definition at line 195 of file Function.h.

References hasFnAttr(), and llvm::Attribute::ReadNone.

Referenced by llvm::AliasAnalysis::getModRefBehavior(), and onlyReadsMemory().

void llvm::Function::setDoesNotAccessMemory ( bool  DoesNotAccessMemory = true  )  [inline]

Definition at line 198 of file Function.h.

References addFnAttr(), llvm::Attribute::ReadNone, and removeFnAttr().

bool llvm::Function::onlyReadsMemory (  )  const [inline]

Determine if the function does not access or only reads memory.

Definition at line 204 of file Function.h.

References doesNotAccessMemory(), hasFnAttr(), and llvm::Attribute::ReadOnly.

Referenced by llvm::AliasAnalysis::getModRefBehavior().

void llvm::Function::setOnlyReadsMemory ( bool  OnlyReadsMemory = true  )  [inline]

bool llvm::Function::doesNotReturn (  )  const [inline]

Determine if the function cannot return.

Definition at line 213 of file Function.h.

References hasFnAttr(), and llvm::Attribute::NoReturn.

void llvm::Function::setDoesNotReturn ( bool  DoesNotReturn = true  )  [inline]

Definition at line 216 of file Function.h.

References addFnAttr(), llvm::Attribute::NoReturn, and removeFnAttr().

bool llvm::Function::doesNotThrow (  )  const [inline]

Determine if the function cannot unwind.

Definition at line 222 of file Function.h.

References hasFnAttr(), and llvm::Attribute::NoUnwind.

Referenced by llvm::X86RegisterInfo::emitPrologue(), llvm::PPCRegisterInfo::emitPrologue(), and llvm::XCoreRegisterInfo::needsFrameMoves().

void llvm::Function::setDoesNotThrow ( bool  DoesNotThrow = true  )  [inline]

Definition at line 225 of file Function.h.

References addFnAttr(), llvm::Attribute::NoUnwind, and removeFnAttr().

bool llvm::Function::hasStructRetAttr (  )  const [inline]

Determine if the function returns a structure through first pointer argument.

Definition at line 232 of file Function.h.

References paramHasAttr(), and llvm::Attribute::StructRet.

Referenced by llvm::X86IntelAsmPrinter::decorateName(), and llvm::X86ATTAsmPrinter::decorateName().

bool llvm::Function::doesNotAlias ( unsigned  n  )  const [inline]

Determine if the parameter does not alias other parameters.

Parameters:
n The parameter to check. 1 is the first parameter, 0 is the return

Definition at line 238 of file Function.h.

References llvm::Attribute::NoAlias, and paramHasAttr().

void llvm::Function::setDoesNotAlias ( unsigned  n,
bool  DoesNotAlias = true 
) [inline]

Definition at line 241 of file Function.h.

References addAttribute(), llvm::Attribute::NoAlias, and removeAttribute().

bool llvm::Function::doesNotCapture ( unsigned  n  )  const [inline]

Determine if the parameter can be captured.

Parameters:
n The parameter to check. 1 is the first parameter, 0 is the return

Definition at line 248 of file Function.h.

References llvm::Attribute::NoCapture, and paramHasAttr().

void llvm::Function::setDoesNotCapture ( unsigned  n,
bool  DoesNotCapture = true 
) [inline]

Definition at line 251 of file Function.h.

References addAttribute(), llvm::Attribute::NoCapture, and removeAttribute().

void Function::copyAttributesFrom ( const GlobalValue *  Src  )  [virtual]

copyAttributesFrom - copy all additional attributes (those not needed to create a Function) from the Function Src to this one.

copyAttributesFrom - copy all additional attributes (those not needed to create a Function) from the Function Src to this one.

Reimplemented from llvm::GlobalValue.

Definition at line 288 of file Function.cpp.

References clearGC(), llvm::GlobalValue::copyAttributesFrom(), getAttributes(), getCallingConv(), getGC(), hasGC(), setAttributes(), setCallingConv(), and setGC().

Referenced by llvm::CloneFunctionInto(), and llvm::CloneModule().

void llvm::Function::deleteBody (  )  [inline]

deleteBody - This method deletes the body of the function, and converts the linkage to external.

Definition at line 263 of file Function.h.

References dropAllReferences(), llvm::GlobalValue::ExternalLinkage, and llvm::GlobalValue::setLinkage().

Referenced by llvm::BitcodeReader::dematerializeFunction().

void Function::removeFromParent (  )  [virtual]

removeFromParent - This method unlinks 'this' from the containing module, but does not delete it.

Implements llvm::GlobalValue.

Definition at line 147 of file Function.cpp.

References llvm::Module::getFunctionList(), and llvm::GlobalValue::getParent().

void Function::eraseFromParent (  )  [virtual]

eraseFromParent - This method unlinks 'this' from the containing module and deletes it.

Implements llvm::GlobalValue.

Definition at line 151 of file Function.cpp.

References llvm::Module::getFunctionList(), and llvm::GlobalValue::getParent().

Referenced by fold(), StripDebugInfo(), and llvm::UpgradeCallsToIntrinsic().

const ArgumentListType& llvm::Function::getArgumentList (  )  const [inline]

Get the underlying elements of the Function... the basic block list is empty for external functions.

Definition at line 282 of file Function.h.

Referenced by llvm::Argument::Argument().

ArgumentListType& llvm::Function::getArgumentList (  )  [inline]

Definition at line 286 of file Function.h.

const BasicBlockListType& llvm::Function::getBasicBlockList (  )  const [inline]

BasicBlockListType& llvm::Function::getBasicBlockList (  )  [inline]

Definition at line 292 of file Function.h.

const BasicBlock& llvm::Function::getEntryBlock (  )  const [inline]

BasicBlock& llvm::Function::getEntryBlock (  )  [inline]

Definition at line 295 of file Function.h.

References front().

ValueSymbolTable& llvm::Function::getValueSymbolTable (  )  [inline]

getSymbolTable() - Return the symbol table...

Definition at line 302 of file Function.h.

Referenced by llvm::ilist_traits< Argument >::getSymTab(), llvm::ilist_traits< BasicBlock >::getSymTab(), and WriteFunction().

const ValueSymbolTable& llvm::Function::getValueSymbolTable (  )  const [inline]

Definition at line 303 of file Function.h.

iterator llvm::Function::begin (  )  [inline]

const_iterator llvm::Function::begin (  )  const [inline]

Definition at line 310 of file Function.h.

iterator llvm::Function::end (  )  [inline]

const_iterator llvm::Function::end (  )  const [inline]

Definition at line 312 of file Function.h.

size_t llvm::Function::size (  )  const [inline]

bool llvm::Function::empty (  )  const [inline]

Definition at line 315 of file Function.h.

const BasicBlock& llvm::Function::front (  )  const [inline]

BasicBlock& llvm::Function::front (  )  [inline]

Definition at line 317 of file Function.h.

const BasicBlock& llvm::Function::back (  )  const [inline]

Definition at line 318 of file Function.h.

Referenced by llvm::InlineFunction().

BasicBlock& llvm::Function::back (  )  [inline]

Definition at line 319 of file Function.h.

arg_iterator llvm::Function::arg_begin (  )  [inline]

const_arg_iterator llvm::Function::arg_begin (  )  const [inline]

Definition at line 328 of file Function.h.

arg_iterator llvm::Function::arg_end (  )  [inline]

const_arg_iterator llvm::Function::arg_end (  )  const [inline]

Definition at line 336 of file Function.h.

size_t Function::arg_size (  )  const

bool Function::arg_empty (  )  const

Definition at line 210 of file Function.cpp.

References getFunctionType(), and llvm::FunctionType::getNumParams().

void Function::viewCFG (  )  const

viewCFG - This function is meant for use from the debugger. You can just say 'call F->viewCFG()' and a ghostview window should pop up from the program, displaying the CFG of the current function with the code for each basic block inside. This depends on there being a 'dot' and 'gv' program in your path.

viewCFG - This function is meant for use from the debugger. You can just say 'call F->viewCFG()' and a ghostview window should pop up from the program, displaying the CFG of the current function. This depends on there being a 'dot' and 'gv' program in your path.

Definition at line 199 of file CFGPrinter.cpp.

References llvm::Value::getName(), and llvm::ViewGraph().

Referenced by LLVMViewFunctionCFG(), and viewCFGOnly().

void Function::viewCFGOnly (  )  const

viewCFGOnly - This function is meant for use from the debugger. It works just like viewCFG, but it does not include the contents of basic blocks into the nodes, just the label. If you are only interested in the CFG this can make the graph smaller.

viewCFGOnly - This function is meant for use from the debugger. It works just like viewCFG, but it does not include the contents of basic blocks into the nodes, just the label. If you are only interested in the CFG t his can make the graph smaller.

Definition at line 208 of file CFGPrinter.cpp.

References CFGOnly, and viewCFG().

Referenced by LLVMViewFunctionCFGOnly().

static bool llvm::Function::classof ( const Function *   )  [inline, static]

Methods for support type inquiry through isa, cast, and dyn_cast:.

Definition at line 360 of file Function.h.

static bool llvm::Function::classof ( const Value *  V  )  [inline, static]

Reimplemented from llvm::GlobalValue.

Definition at line 361 of file Function.h.

References llvm::Value::FunctionVal, and llvm::Value::getValueID().

void Function::dropAllReferences (  ) 

dropAllReferences() - This method causes all the subinstructions to "let go" of all references that they are maintaining. This allows one to 'delete' a whole module at a time, even though there may be circular references... first all references are dropped, and all use counts go to zero. Then everything is deleted for real. Note that no operations are valid on an object that has "dropped all references", except operator delete.

Since no other object in the module can have references into the body of a function, dropping all references deletes the entire body of the function, including any contained basic blocks.

Reimplemented from llvm::User.

Definition at line 230 of file Function.cpp.

References begin(), E, and end().

Referenced by deleteBody(), and ~Function().

static unsigned llvm::Function::getBasicBlockListOffset (  )  [inline, static]

Definition at line 379 of file Function.h.

References BasicBlocks.

Referenced by llvm::ilist_traits< BasicBlock >::getListOffset().

static unsigned llvm::Function::getArgumentListOffset (  )  [inline, static]

Definition at line 383 of file Function.h.

References ArgumentList.

Referenced by llvm::ilist_traits< Argument >::getListOffset().


Friends And Related Function Documentation

friend class SymbolTableListTraits< Function, Module > [friend]

Definition at line 77 of file Function.h.


The documentation for this class was generated from the following files: