LLVM API Documentation

Defines | Enumerations | Functions | Variables
Function.cpp File Reference
#include "llvm/IR/Function.h"
#include "LLVMContextImpl.h"
#include "SymbolTableListTraitsImpl.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/CallSite.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/LeakDetector.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/RWMutex.h"
#include "llvm/Support/StringPool.h"
#include "llvm/Support/Threading.h"
#include "llvm/IR/Intrinsics.gen"
Include dependency graph for Function.cpp:

Go to the source code of this file.

Defines

#define GET_FUNCTION_RECOGNIZER
#define GET_INTRINSIC_NAME_TABLE
#define GET_INTRINSIC_GENERATOR_GLOBAL
#define GET_INTRINSIC_OVERLOAD_TABLE
#define GET_INTRINSIC_ATTRIBUTES
 This defines the "Intrinsic::getAttributes(ID id)" method.
#define GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN
#define GET_LLVM_INTRINSIC_FOR_MS_BUILTIN

Enumerations

enum  IIT_Info {
  IIT_Done = 0, IIT_I1 = 1, IIT_I8 = 2, IIT_I16 = 3,
  IIT_I32 = 4, IIT_I64 = 5, IIT_F16 = 6, IIT_F32 = 7,
  IIT_F64 = 8, IIT_V2 = 9, IIT_V4 = 10, IIT_V8 = 11,
  IIT_V16 = 12, IIT_V32 = 13, IIT_PTR = 14, IIT_ARG = 15,
  IIT_V64 = 16, IIT_MMX = 17, IIT_METADATA = 18, IIT_EMPTYSTRUCT = 19,
  IIT_STRUCT2 = 20, IIT_STRUCT3 = 21, IIT_STRUCT4 = 22, IIT_STRUCT5 = 23,
  IIT_EXTEND_ARG = 24, IIT_TRUNC_ARG = 25, IIT_ANYPTR = 26, IIT_V1 = 27,
  IIT_VARARG = 28, IIT_HALF_VEC_ARG = 29, IIT_SAME_VEC_WIDTH_ARG = 30
}

Functions

static std::string getMangledTypeStr (Type *Ty)
static void DecodeIITType (unsigned &NextElt, ArrayRef< unsigned char > Infos, SmallVectorImpl< Intrinsic::IITDescriptor > &OutputTable)
static TypeDecodeFixedType (ArrayRef< Intrinsic::IITDescriptor > &Infos, ArrayRef< Type * > Tys, LLVMContext &Context)

Variables

static DenseMap< const
Function *, PooledStringPtr > * 
GCNames
static StringPoolGCNamePool
static ManagedStatic
< sys::SmartRWMutex< true > > 
GCLock

Define Documentation

This defines the "Intrinsic::getAttributes(ID id)" method.

Definition at line 812 of file Function.cpp.

Definition at line 682 of file Function.cpp.

Definition at line 825 of file Function.cpp.

Definition at line 830 of file Function.cpp.


Enumeration Type Documentation

enum IIT_Info

IIT_Info - These are enumerators that describe the entries returned by the getIntrinsicInfoTableEntries function.

NOTE: This must be kept in synch with the copy in TblGen/IntrinsicEmitter!

Enumerator:
IIT_Done 
IIT_I1 
IIT_I8 
IIT_I16 
IIT_I32 
IIT_I64 
IIT_F16 
IIT_F32 
IIT_F64 
IIT_V2 
IIT_V4 
IIT_V8 
IIT_V16 
IIT_V32 
IIT_PTR 
IIT_ARG 
IIT_V64 
IIT_MMX 
IIT_METADATA 
IIT_EMPTYSTRUCT 
IIT_STRUCT2 
IIT_STRUCT3 
IIT_STRUCT4 
IIT_STRUCT5 
IIT_EXTEND_ARG 
IIT_TRUNC_ARG 
IIT_ANYPTR 
IIT_V1 
IIT_VARARG 
IIT_HALF_VEC_ARG 
IIT_SAME_VEC_WIDTH_ARG 

Definition at line 516 of file Function.cpp.


Function Documentation

static Type* DecodeFixedType ( ArrayRef< Intrinsic::IITDescriptor > &  Infos,
ArrayRef< Type * >  Tys,
LLVMContext Context 
) [static]
static void DecodeIITType ( unsigned NextElt,
ArrayRef< unsigned char >  Infos,
SmallVectorImpl< Intrinsic::IITDescriptor > &  OutputTable 
) [static]
static std::string getMangledTypeStr ( Type Ty) [static]

Returns a stable mangling for the type specified for use in the name mangling scheme used by 'any' types in intrinsic signatures. The mangling of named types is simply their name. Manglings for unnamed types consist of a prefix ('p' for pointers, 'a' for arrays, 'f_' for functions) combined with the mangling of their component types. A vararg function type will have a suffix of 'vararg'. Since function types can contain other function types, we close a function type mangling with suffix 'f' which can't be confused with it's prefix. This ensures we don't have collisions between two unrelated function types. Otherwise, you might parse ffXX as f(fXX) or f(fX)X. (X is a placeholder for any other type.)

Definition at line 468 of file Function.cpp.

References llvm::EVT::getEVT(), llvm::EVT::getEVTString(), llvm::FunctionType::getNumParams(), llvm::FunctionType::getParamType(), llvm::FunctionType::getReturnType(), llvm::FunctionType::isVarArg(), llvm_unreachable, and llvm::utostr().

Referenced by llvm::Intrinsic::getName().


Variable Documentation

Definition at line 365 of file Function.cpp.

Referenced by llvm::Function::clearGC(), and llvm::Function::setGC().