diff options
Diffstat (limited to 'include/llvm/Function.h')
-rw-r--r-- | include/llvm/Function.h | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/include/llvm/Function.h b/include/llvm/Function.h index 34ced97..088c999 100644 --- a/include/llvm/Function.h +++ b/include/llvm/Function.h @@ -19,9 +19,9 @@ #define LLVM_FUNCTION_H #include "llvm/GlobalValue.h" +#include "llvm/CallingConv.h" #include "llvm/BasicBlock.h" #include "llvm/Argument.h" -#include "llvm/Support/Annotation.h" #include "llvm/Attributes.h" namespace llvm { @@ -46,7 +46,7 @@ template<> struct ilist_traits<BasicBlock> static ValueSymbolTable *getSymTab(Function *ItemParent); private: - mutable ilist_node<BasicBlock> Sentinel; + mutable ilist_half_node<BasicBlock> Sentinel; }; template<> struct ilist_traits<Argument> @@ -63,10 +63,10 @@ template<> struct ilist_traits<Argument> static ValueSymbolTable *getSymTab(Function *ItemParent); private: - mutable ilist_node<Argument> Sentinel; + mutable ilist_half_node<Argument> Sentinel; }; -class Function : public GlobalValue, public Annotable, +class Function : public GlobalValue, public ilist_node<Function> { public: typedef iplist<Argument> ArgumentListType; @@ -87,7 +87,7 @@ private: AttrListPtr AttributeList; ///< Parameter attributes // The Calling Convention is stored in Value::SubclassData. - /*unsigned CallingConvention;*/ + /*CallingConv::ID CallingConvention;*/ friend class SymbolTableListTraits<Function, Module>; @@ -114,11 +114,11 @@ private: /// the module. /// Function(const FunctionType *Ty, LinkageTypes Linkage, - const std::string &N = "", Module *M = 0); + const Twine &N = "", Module *M = 0); public: static Function *Create(const FunctionType *Ty, LinkageTypes Linkage, - const std::string &N = "", Module *M = 0) { + const Twine &N = "", Module *M = 0) { return new(0) Function(Ty, Linkage, N, M); } @@ -129,7 +129,7 @@ public: /// getContext - Return a pointer to the LLVMContext associated with this /// function, or NULL if this function is not bound to a context yet. - LLVMContext* getContext(); + LLVMContext &getContext() const; /// isVarArg - Return true if this function takes a variable number of /// arguments. @@ -151,12 +151,14 @@ public: unsigned getIntrinsicID() const; bool isIntrinsic() const { return getIntrinsicID() != 0; } - /// getCallingConv()/setCallingConv(uint) - These method get and set the + /// getCallingConv()/setCallingConv(CC) - These method get and set the /// calling convention of this function. The enum values for the known /// calling conventions are defined in CallingConv.h. - unsigned getCallingConv() const { return SubclassData >> 1; } - void setCallingConv(unsigned CC) { - SubclassData = (SubclassData & 1) | (CC << 1); + CallingConv::ID getCallingConv() const { + return static_cast<CallingConv::ID>(SubclassData >> 1); + } + void setCallingConv(CallingConv::ID CC) { + SubclassData = (SubclassData & 1) | (static_cast<unsigned>(CC) << 1); } /// getAttributes - Return the attribute list for this Function. |