Attributes Rewrite

Convert the internal representation of the Attributes class into a pointer to an
opaque object that's uniqued by and stored in the LLVMContext object. The
Attributes class then becomes a thin wrapper around this opaque
object. Eventually, the internal representation will be expanded to include
attributes that represent code generation options, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165917 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bill Wendling
2012-10-15 04:46:55 +00:00
parent a239c2e6a7
commit cb3de0bc80
21 changed files with 165 additions and 125 deletions

View File

@ -180,7 +180,7 @@ public:
// Function Attributes are stored at ~0 index
Attributes::Builder B;
B.addAttribute(N);
addAttribute(~0U, Attributes::get(B));
addAttribute(~0U, Attributes::get(getContext(), B));
}
/// removeFnAttr - Remove function attributes from this function.
@ -280,7 +280,7 @@ public:
void setDoesNotAlias(unsigned n) {
Attributes::Builder B;
B.addAttribute(Attributes::NoAlias);
addAttribute(n, Attributes::get(B));
addAttribute(n, Attributes::get(getContext(), B));
}
/// @brief Determine if the parameter can be captured.
@ -291,7 +291,7 @@ public:
void setDoesNotCapture(unsigned n) {
Attributes::Builder B;
B.addAttribute(Attributes::NoCapture);
addAttribute(n, Attributes::get(B));
addAttribute(n, Attributes::get(getContext(), B));
}
/// copyAttributesFrom - copy all additional attributes (those not needed to