[llvm-commits] [llvm] r165895 - in /llvm/trunk: include/llvm/Attributes.h lib/Transforms/IPO/PruneEH.cpp lib/Transforms/Scalar/ObjCARC.cpp lib/Transforms/Utils/CloneFunction.cpp lib/VMCore/Attributes.cpp lib/VMCore/Core.cpp lib/VMCore/Function.cp
Sean Silva
silvas at purdue.edu
Sun Oct 14 07:39:02 PDT 2012
Hi Bill,
This new Attributes code you are putting in seems to have an alarming
number of naked `~0` all of the place. After briefly looking at the
source code, it looks like it is being used as a sentinel value to
refer to the function itself. Are you planning on making this a named
constant at some point?
-- Sean Silva
On Sun, Oct 14, 2012 at 3:36 AM, Bill Wendling <isanbard at gmail.com> wrote:
> Author: void
> Date: Sun Oct 14 02:35:59 2012
> New Revision: 165895
>
> URL: http://llvm.org/viewvc/llvm-project?rev=165895&view=rev
> Log:
> Remove the bitwise assignment OR operator from the Attributes class. Replace it with the equivalent from the builder class.
>
> Modified:
> llvm/trunk/include/llvm/Attributes.h
> llvm/trunk/lib/Transforms/IPO/PruneEH.cpp
> llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp
> llvm/trunk/lib/Transforms/Utils/CloneFunction.cpp
> llvm/trunk/lib/VMCore/Attributes.cpp
> llvm/trunk/lib/VMCore/Core.cpp
> llvm/trunk/lib/VMCore/Function.cpp
> llvm/trunk/lib/VMCore/Instructions.cpp
>
> Modified: llvm/trunk/include/llvm/Attributes.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Attributes.h?rev=165895&r1=165894&r2=165895&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Attributes.h (original)
> +++ llvm/trunk/include/llvm/Attributes.h Sun Oct 14 02:35:59 2012
> @@ -236,7 +236,6 @@
> }
>
> Attributes operator & (const Attributes &A) const;
> - Attributes &operator |= (const Attributes &A);
> Attributes &operator &= (const Attributes &A);
>
> uint64_t Raw() const;
> @@ -351,7 +350,7 @@
> /// addAttr - Add the specified attribute at the specified index to this
> /// attribute list. Since attribute lists are immutable, this
> /// returns the new list.
> - AttrListPtr addAttr(unsigned Idx, Attributes Attrs) const;
> + AttrListPtr addAttr(LLVMContext &C, unsigned Idx, Attributes Attrs) const;
>
> /// removeAttr - Remove the specified attribute at the specified index from
> /// this attribute list. Since attribute lists are immutable, this
>
> Modified: llvm/trunk/lib/Transforms/IPO/PruneEH.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PruneEH.cpp?rev=165895&r1=165894&r2=165895&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/PruneEH.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/PruneEH.cpp Sun Oct 14 02:35:59 2012
> @@ -146,7 +146,8 @@
>
> Function *F = (*I)->getFunction();
> const AttrListPtr &PAL = F->getAttributes();
> - const AttrListPtr &NPAL = PAL.addAttr(~0, Attributes::get(NewAttributes));
> + const AttrListPtr &NPAL = PAL.addAttr(F->getContext(), ~0,
> + Attributes::get(NewAttributes));
> if (PAL != NPAL) {
> MadeChange = true;
> F->setAttributes(NPAL);
>
> Modified: llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp?rev=165895&r1=165894&r2=165895&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp Sun Oct 14 02:35:59 2012
> @@ -1790,7 +1790,8 @@
> FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false);
> Attributes::Builder B;
> B.addAttribute(Attributes::NoUnwind);
> - AttrListPtr Attributes = AttrListPtr().addAttr(~0u, Attributes::get(B));
> + AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
> + Attributes::get(B));
> RetainRVCallee =
> M->getOrInsertFunction("objc_retainAutoreleasedReturnValue", FTy,
> Attributes);
> @@ -1806,7 +1807,8 @@
> FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false);
> Attributes::Builder B;
> B.addAttribute(Attributes::NoUnwind);
> - AttrListPtr Attributes = AttrListPtr().addAttr(~0u, Attributes::get(B));
> + AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
> + Attributes::get(B));
> AutoreleaseRVCallee =
> M->getOrInsertFunction("objc_autoreleaseReturnValue", FTy,
> Attributes);
> @@ -1820,7 +1822,8 @@
> Type *Params[] = { PointerType::getUnqual(Type::getInt8Ty(C)) };
> Attributes::Builder B;
> B.addAttribute(Attributes::NoUnwind);
> - AttrListPtr Attributes = AttrListPtr().addAttr(~0u, Attributes::get(B));
> + AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
> + Attributes::get(B));
> ReleaseCallee =
> M->getOrInsertFunction(
> "objc_release",
> @@ -1836,7 +1839,8 @@
> Type *Params[] = { PointerType::getUnqual(Type::getInt8Ty(C)) };
> Attributes::Builder B;
> B.addAttribute(Attributes::NoUnwind);
> - AttrListPtr Attributes = AttrListPtr().addAttr(~0u, Attributes::get(B));
> + AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
> + Attributes::get(B));
> RetainCallee =
> M->getOrInsertFunction(
> "objc_retain",
> @@ -1867,7 +1871,8 @@
> Type *Params[] = { PointerType::getUnqual(Type::getInt8Ty(C)) };
> Attributes::Builder B;
> B.addAttribute(Attributes::NoUnwind);
> - AttrListPtr Attributes = AttrListPtr().addAttr(~0u, Attributes::get(B));
> + AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
> + Attributes::get(B));
> AutoreleaseCallee =
> M->getOrInsertFunction(
> "objc_autorelease",
> @@ -3845,8 +3850,8 @@
> Attributes::Builder BNoCapture;
> BNoCapture.addAttribute(Attributes::NoCapture);
> AttrListPtr Attributes = AttrListPtr()
> - .addAttr(~0u, Attributes::get(BNoUnwind))
> - .addAttr(1, Attributes::get(BNoCapture));
> + .addAttr(M->getContext(), ~0u, Attributes::get(BNoUnwind))
> + .addAttr(M->getContext(), 1, Attributes::get(BNoCapture));
>
> StoreStrongCallee =
> M->getOrInsertFunction(
> @@ -3865,7 +3870,8 @@
> FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false);
> Attributes::Builder B;
> B.addAttribute(Attributes::NoUnwind);
> - AttrListPtr Attributes = AttrListPtr().addAttr(~0u, Attributes::get(B));
> + AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
> + Attributes::get(B));
> RetainAutoreleaseCallee =
> M->getOrInsertFunction("objc_retainAutorelease", FTy, Attributes);
> }
> @@ -3880,7 +3886,8 @@
> FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false);
> Attributes::Builder B;
> B.addAttribute(Attributes::NoUnwind);
> - AttrListPtr Attributes = AttrListPtr().addAttr(~0u, Attributes::get(B));
> + AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), ~0u,
> + Attributes::get(B));
> RetainAutoreleaseRVCallee =
> M->getOrInsertFunction("objc_retainAutoreleaseReturnValue", FTy,
> Attributes);
>
> Modified: llvm/trunk/lib/Transforms/Utils/CloneFunction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/CloneFunction.cpp?rev=165895&r1=165894&r2=165895&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/CloneFunction.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/CloneFunction.cpp Sun Oct 14 02:35:59 2012
> @@ -98,10 +98,12 @@
> Anew->addAttr( OldFunc->getAttributes()
> .getParamAttributes(I->getArgNo() + 1));
> NewFunc->setAttributes(NewFunc->getAttributes()
> - .addAttr(0, OldFunc->getAttributes()
> + .addAttr(NewFunc->getContext(), 0,
> + OldFunc->getAttributes()
> .getRetAttributes()));
> NewFunc->setAttributes(NewFunc->getAttributes()
> - .addAttr(~0, OldFunc->getAttributes()
> + .addAttr(NewFunc->getContext(), ~0,
> + OldFunc->getAttributes()
> .getFnAttributes()));
>
> }
>
> Modified: llvm/trunk/lib/VMCore/Attributes.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Attributes.cpp?rev=165895&r1=165894&r2=165895&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Attributes.cpp (original)
> +++ llvm/trunk/lib/VMCore/Attributes.cpp Sun Oct 14 02:35:59 2012
> @@ -96,10 +96,6 @@
> Attributes Attributes::operator & (const Attributes &A) const {
> return Attributes(Raw() & A.Raw());
> }
> -Attributes &Attributes::operator |= (const Attributes &A) {
> - Attrs.Bits |= A.Raw();
> - return *this;
> -}
> Attributes &Attributes::operator &= (const Attributes &A) {
> Attrs.Bits &= A.Raw();
> return *this;
> @@ -504,7 +500,8 @@
> return AttrList->Attrs[i].Attrs;
> }
>
> -AttrListPtr AttrListPtr::addAttr(unsigned Idx, Attributes Attrs) const {
> +AttrListPtr AttrListPtr::addAttr(LLVMContext &C, unsigned Idx,
> + Attributes Attrs) const {
> Attributes OldAttrs = getAttributes(Idx);
> #ifndef NDEBUG
> // FIXME it is not obvious how this should work for alignment.
> @@ -532,7 +529,9 @@
>
> // If there are attributes already at this index, merge them in.
> if (i != e && OldAttrList[i].Index == Idx) {
> - Attrs |= OldAttrList[i].Attrs;
> + Attrs =
> + Attributes::get(C, Attributes::Builder(Attrs).
> + addAttributes(OldAttrList[i].Attrs));
> ++i;
> }
>
>
> Modified: llvm/trunk/lib/VMCore/Core.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Core.cpp?rev=165895&r1=165894&r2=165895&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Core.cpp (original)
> +++ llvm/trunk/lib/VMCore/Core.cpp Sun Oct 14 02:35:59 2012
> @@ -1381,7 +1381,8 @@
> void LLVMAddFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) {
> Function *Func = unwrap<Function>(Fn);
> const AttrListPtr PAL = Func->getAttributes();
> - const AttrListPtr PALnew = PAL.addAttr(~0U, Attributes(PA));
> + const AttrListPtr PALnew = PAL.addAttr(Func->getContext(), ~0U,
> + Attributes(PA));
> Func->setAttributes(PALnew);
> }
>
> @@ -1667,7 +1668,7 @@
> LLVMAttribute PA) {
> CallSite Call = CallSite(unwrap<Instruction>(Instr));
> Call.setAttributes(
> - Call.getAttributes().addAttr(index, Attributes(PA)));
> + Call.getAttributes().addAttr(Call->getContext(), index, Attributes(PA)));
> }
>
> void LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index,
> @@ -1682,7 +1683,8 @@
> CallSite Call = CallSite(unwrap<Instruction>(Instr));
> Attributes::Builder B;
> B.addAlignmentAttr(align);
> - Call.setAttributes(Call.getAttributes().addAttr(index, Attributes::get(B)));
> + Call.setAttributes(Call.getAttributes().addAttr(Call->getContext(), index,
> + Attributes::get(B)));
> }
>
> /*--.. Operations on call instructions (only) ..............................--*/
>
> Modified: llvm/trunk/lib/VMCore/Function.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Function.cpp?rev=165895&r1=165894&r2=165895&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Function.cpp (original)
> +++ llvm/trunk/lib/VMCore/Function.cpp Sun Oct 14 02:35:59 2012
> @@ -249,7 +249,7 @@
>
> void Function::addAttribute(unsigned i, Attributes attr) {
> AttrListPtr PAL = getAttributes();
> - PAL = PAL.addAttr(i, attr);
> + PAL = PAL.addAttr(getContext(), i, attr);
> setAttributes(PAL);
> }
>
>
> Modified: llvm/trunk/lib/VMCore/Instructions.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Instructions.cpp?rev=165895&r1=165894&r2=165895&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Instructions.cpp (original)
> +++ llvm/trunk/lib/VMCore/Instructions.cpp Sun Oct 14 02:35:59 2012
> @@ -332,7 +332,7 @@
>
> void CallInst::addAttribute(unsigned i, Attributes attr) {
> AttrListPtr PAL = getAttributes();
> - PAL = PAL.addAttr(i, attr);
> + PAL = PAL.addAttr(getContext(), i, attr);
> setAttributes(PAL);
> }
>
> @@ -588,7 +588,7 @@
>
> void InvokeInst::addAttribute(unsigned i, Attributes attr) {
> AttrListPtr PAL = getAttributes();
> - PAL = PAL.addAttr(i, attr);
> + PAL = PAL.addAttr(getContext(), i, attr);
> setAttributes(PAL);
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list