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
diff --git a/lib/Transforms/Scalar/ObjCARC.cpp b/lib/Transforms/Scalar/ObjCARC.cpp
index ffeee75..663ad86 100644
--- a/lib/Transforms/Scalar/ObjCARC.cpp
+++ b/lib/Transforms/Scalar/ObjCARC.cpp
@@ -1791,7 +1791,7 @@
Attributes::Builder B;
B.addAttribute(Attributes::NoUnwind);
AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
- Attributes::get(B));
+ Attributes::get(M->getContext(), B));
RetainRVCallee =
M->getOrInsertFunction("objc_retainAutoreleasedReturnValue", FTy,
Attributes);
@@ -1808,7 +1808,7 @@
Attributes::Builder B;
B.addAttribute(Attributes::NoUnwind);
AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
- Attributes::get(B));
+ Attributes::get(C, B));
AutoreleaseRVCallee =
M->getOrInsertFunction("objc_autoreleaseReturnValue", FTy,
Attributes);
@@ -1823,7 +1823,7 @@
Attributes::Builder B;
B.addAttribute(Attributes::NoUnwind);
AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
- Attributes::get(B));
+ Attributes::get(C, B));
ReleaseCallee =
M->getOrInsertFunction(
"objc_release",
@@ -1840,7 +1840,7 @@
Attributes::Builder B;
B.addAttribute(Attributes::NoUnwind);
AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
- Attributes::get(B));
+ Attributes::get(C, B));
RetainCallee =
M->getOrInsertFunction(
"objc_retain",
@@ -1872,7 +1872,7 @@
Attributes::Builder B;
B.addAttribute(Attributes::NoUnwind);
AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
- Attributes::get(B));
+ Attributes::get(C, B));
AutoreleaseCallee =
M->getOrInsertFunction(
"objc_autorelease",
@@ -3850,8 +3850,8 @@
Attributes::Builder BNoCapture;
BNoCapture.addAttribute(Attributes::NoCapture);
AttrListPtr Attributes = AttrListPtr()
- .addAttr(M->getContext(), ~0u, Attributes::get(BNoUnwind))
- .addAttr(M->getContext(), 1, Attributes::get(BNoCapture));
+ .addAttr(M->getContext(), ~0u, Attributes::get(C, BNoUnwind))
+ .addAttr(M->getContext(), 1, Attributes::get(C, BNoCapture));
StoreStrongCallee =
M->getOrInsertFunction(
@@ -3871,7 +3871,7 @@
Attributes::Builder B;
B.addAttribute(Attributes::NoUnwind);
AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
- Attributes::get(B));
+ Attributes::get(C, B));
RetainAutoreleaseCallee =
M->getOrInsertFunction("objc_retainAutorelease", FTy, Attributes);
}
@@ -3887,7 +3887,7 @@
Attributes::Builder B;
B.addAttribute(Attributes::NoUnwind);
AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
- Attributes::get(B));
+ Attributes::get(C, B));
RetainAutoreleaseRVCallee =
M->getOrInsertFunction("objc_retainAutoreleaseReturnValue", FTy,
Attributes);
diff --git a/lib/Transforms/Scalar/SimplifyLibCalls.cpp b/lib/Transforms/Scalar/SimplifyLibCalls.cpp
index 6df0ee2..e751750 100644
--- a/lib/Transforms/Scalar/SimplifyLibCalls.cpp
+++ b/lib/Transforms/Scalar/SimplifyLibCalls.cpp
@@ -350,7 +350,7 @@
// It would be readonly too, except that it still may write to errno.
Attributes::Builder B;
B.addAttribute(Attributes::NoCapture);
- CI->addAttribute(1, Attributes::get(B));
+ CI->addAttribute(1, Attributes::get(Callee->getContext(), B));
}
return 0;