ArgumentListType ArgumentList; ///< The formal arguments
ValueSymbolTable *SymTab; ///< Symbol table of args/instructions
ParamAttrsList *ParamAttrs; ///< Parameter attributes
- unsigned CallingConvention; ///< Calling convention to use
+
+
+ // The Calling Convention is stored in Value::SubclassData.
+ /*unsigned CallingConvention;*/
friend class SymbolTableListTraits<Function, Module>;
void setNext(Function *N) { Next = N; }
void setPrev(Function *N) { Prev = N; }
+ // getNext/Prev - Return the next or previous function in the list. These
+ // methods should never be used directly, and are only used to implement the
+ // function list as part of the module.
+ //
+ Function *getNext() { return Next; }
+ const Function *getNext() const { return Next; }
+ Function *getPrev() { return Prev; }
+ const Function *getPrev() const { return Prev; }
+
public:
/// Function ctor - If the (optional) Module argument is specified, the
/// function is automatically inserted into the end of the function list for
/// getCallingConv()/setCallingConv(uint) - 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 CallingConvention; }
- void setCallingConv(unsigned CC) { CallingConvention = CC; }
+ unsigned getCallingConv() const { return SubclassData; }
+ void setCallingConv(unsigned CC) { SubclassData = CC; }
/// Obtains a constant pointer to the ParamAttrsList object which holds the
/// parameter attributes information, if any.
/// Sets the parameter attributes for this Function. To construct a
/// ParamAttrsList, see ParameterAttributes.h
/// @brief Set the parameter attributes.
- void setParamAttrs(ParamAttrsList *attrs) { ParamAttrs = attrs; }
+ void setParamAttrs(ParamAttrsList *attrs);
/// deleteBody - This method deletes the body of the function, and converts
/// the linkage to external.
void eraseFromParent();
- // getNext/Prev - Return the next or previous function in the list. These
- // methods should never be used directly, and are only used to implement the
- // function list as part of the module.
- //
- Function *getNext() { return Next; }
- const Function *getNext() const { return Next; }
- Function *getPrev() { return Prev; }
- const Function *getPrev() const { return Prev; }
-
/// Get the underlying elements of the Function... the basic block list is
/// empty for external functions.
///
static unsigned getBasicBlockListOffset() {
Function *Obj = 0;
- return reinterpret_cast<unsigned>(&Obj->BasicBlocks);
+ return unsigned(reinterpret_cast<uintptr_t>(&Obj->BasicBlocks));
}
static unsigned getArgumentListOffset() {
Function *Obj = 0;
- return reinterpret_cast<unsigned>(&Obj->ArgumentList);
+ return unsigned(reinterpret_cast<uintptr_t>(&Obj->ArgumentList));
}
};