[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