[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

Bill Wendling isanbard at gmail.com
Sun Oct 14 11:11:25 PDT 2012


Hi Sean,

Yes. It's on my list of things to do when cleaning this mess up. :)

-bw

On Oct 14, 2012, at 7:39 AM, Sean Silva <silvas at purdue.edu> wrote:

> 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