| Index: include/llvm/Function.h | |
| =================================================================== | |
| --- include/llvm/Function.h (revision 3710) | |
| +++ include/llvm/Function.h (working copy) | |
| @@ -93,6 +93,8 @@ | |
| // The Calling Convention is stored in Value::SubclassData. | |
| /*CallingConv::ID CallingConvention;*/ | |
| + unsigned intrinsicID; ///< ID of intrinsic, 0 otherwise | |
| + | |
| friend class SymbolTableListTraits<Function, Module>; | |
| void setParent(Module *parent); | |
| @@ -109,6 +111,8 @@ | |
| BuildLazyArguments(); | |
| } | |
| void BuildLazyArguments() const; | |
| + | |
| + unsigned initIntrinsicID() const; | |
| Function(const Function&); // DO NOT IMPLEMENT | |
| void operator=(const Function&); // DO NOT IMPLEMENT | |
| @@ -146,8 +150,8 @@ | |
| /// The particular intrinsic functions which correspond to this value are | |
| /// defined in llvm/Intrinsics.h. | |
| /// | |
| - unsigned getIntrinsicID() const LLVM_ATTRIBUTE_READONLY; | |
| - bool isIntrinsic() const { return getIntrinsicID() != 0; } | |
| + unsigned getIntrinsicID() const { return intrinsicID; } | |
| + bool isIntrinsic() const { return intrinsicID != 0; } | |
| /// getCallingConv()/setCallingConv(CC) - These method get and set the | |
| /// calling convention of this function. The enum values for the known | |
| Index: lib/VMCore/Function.cpp | |
| =================================================================== | |
| --- lib/VMCore/Function.cpp (revision 3710) | |
| +++ lib/VMCore/Function.cpp (working copy) | |
| @@ -178,9 +178,9 @@ | |
| ParentModule->getFunctionList().push_back(this); | |
| // Ensure intrinsics have the right parameter attributes. | |
| - if (unsigned IID = getIntrinsicID()) | |
| - setAttributes(Intrinsic::getAttributes(Intrinsic::ID(IID))); | |
| - | |
| + intrinsicID = initIntrinsicID(); | |
| + if (intrinsicID) | |
| + setAttributes(Intrinsic::getAttributes(Intrinsic::ID(intrinsicID))); | |
| } | |
| Function::~Function() { | |
| @@ -310,14 +310,14 @@ | |
| clearGC(); | |
| } | |
| -/// getIntrinsicID - This method returns the ID number of the specified | |
| +/// initIntrinsicID - 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. | |
| /// | |
| -unsigned Function::getIntrinsicID() const { | |
| +unsigned Function::initIntrinsicID() const { | |
| const ValueName *ValName = this->getValueName(); | |
| if (!ValName) | |
| return 0; |