[llvm] r301697 - [IR] Make add/remove Attributes use AttrBuilder instead of AttributeList

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 28 16:15:02 PDT 2017


Reverted in r301712.

Was there a Clang-side patch that got lost?

On Fri, Apr 28, 2017 at 3:29 PM, Craig Topper via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> I think this broke the clang build.
>
> ~Craig
>
> On Fri, Apr 28, 2017 at 2:48 PM, Reid Kleckner via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
>>
>> Author: rnk
>> Date: Fri Apr 28 16:48:28 2017
>> New Revision: 301697
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=301697&view=rev
>> Log:
>> [IR] Make add/remove Attributes use AttrBuilder instead of AttributeList
>>
>> This change cleans up call sites and avoids creating temporary
>> AttributeList objects.
>>
>> NFC
>>
>> Modified:
>>     llvm/trunk/include/llvm/CodeGen/CommandFlags.h
>>     llvm/trunk/include/llvm/IR/Attributes.h
>>     llvm/trunk/include/llvm/IR/Function.h
>>     llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp
>>     llvm/trunk/lib/IR/Attributes.cpp
>>     llvm/trunk/lib/IR/Function.cpp
>>     llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp
>>     llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp
>>     llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
>>     llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
>>     llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
>>     llvm/trunk/unittests/IR/AttributesTest.cpp
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/CommandFlags.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/CommandFlags.h?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/CodeGen/CommandFlags.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/CommandFlags.h Fri Apr 28 16:48:28
>> 2017
>> @@ -346,29 +346,21 @@ static inline void setFunctionAttributes
>>                                           Module &M) {
>>    for (auto &F : M) {
>>      auto &Ctx = F.getContext();
>> -    AttributeList Attrs = F.getAttributes(), NewAttrs;
>> +    AttributeList Attrs = F.getAttributes();
>> +    AttrBuilder NewAttrs;
>>
>>      if (!CPU.empty())
>> -      NewAttrs = NewAttrs.addAttribute(Ctx, AttributeList::FunctionIndex,
>> -                                       "target-cpu", CPU);
>> -
>> +      NewAttrs.addAttribute("target-cpu", CPU);
>>      if (!Features.empty())
>> -      NewAttrs = NewAttrs.addAttribute(Ctx, AttributeList::FunctionIndex,
>> -                                       "target-features", Features);
>> -
>> +      NewAttrs.addAttribute("target-features", Features);
>>      if (DisableFPElim.getNumOccurrences() > 0)
>> -      NewAttrs = NewAttrs.addAttribute(Ctx, AttributeList::FunctionIndex,
>> -                                       "no-frame-pointer-elim",
>> -                                       DisableFPElim ? "true" : "false");
>> -
>> +      NewAttrs.addAttribute("no-frame-pointer-elim",
>> +                            DisableFPElim ? "true" : "false");
>>      if (DisableTailCalls.getNumOccurrences() > 0)
>> -      NewAttrs = NewAttrs.addAttribute(Ctx, AttributeList::FunctionIndex,
>> -                                       "disable-tail-calls",
>> -                                       toStringRef(DisableTailCalls));
>> -
>> +      NewAttrs.addAttribute("disable-tail-calls",
>> +                            toStringRef(DisableTailCalls));
>>      if (StackRealign)
>> -      NewAttrs = NewAttrs.addAttribute(Ctx, AttributeList::FunctionIndex,
>> -                                       "stackrealign");
>> +      NewAttrs.addAttribute("stackrealign");
>>
>>      if (TrapFuncName.getNumOccurrences() > 0)
>>        for (auto &B : F)
>> @@ -382,8 +374,8 @@ static inline void setFunctionAttributes
>>                      Attribute::get(Ctx, "trap-func-name", TrapFuncName));
>>
>>      // Let NewAttrs override Attrs.
>> -    NewAttrs = Attrs.addAttributes(Ctx, AttributeList::FunctionIndex,
>> NewAttrs);
>> -    F.setAttributes(NewAttrs);
>> +    F.setAttributes(
>> +        Attrs.addAttributes(Ctx, AttributeList::FunctionIndex,
>> NewAttrs));
>>    }
>>  }
>>
>>
>> Modified: llvm/trunk/include/llvm/IR/Attributes.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Attributes.h?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/Attributes.h (original)
>> +++ llvm/trunk/include/llvm/IR/Attributes.h Fri Apr 28 16:48:28 2017
>> @@ -354,9 +354,6 @@ public:
>>    /// \brief Add attributes to the attribute set at the given index.
>> Because
>>    /// attribute sets are immutable, this returns a new set.
>>    AttributeList addAttributes(LLVMContext &C, unsigned Index,
>> -                              AttributeList Attrs) const;
>> -
>> -  AttributeList addAttributes(LLVMContext &C, unsigned Index,
>>                                const AttrBuilder &B) const;
>>
>>    /// \brief Remove the specified attribute at the specified index from
>> this
>> @@ -375,13 +372,7 @@ public:
>>    /// attribute list. Because attribute lists are immutable, this returns
>> the
>>    /// new list.
>>    AttributeList removeAttributes(LLVMContext &C, unsigned Index,
>> -                                 AttributeList Attrs) const;
>> -
>> -  /// \brief Remove the specified attributes at the specified index from
>> this
>> -  /// attribute list. Because attribute lists are immutable, this returns
>> the
>> -  /// new list.
>> -  AttributeList removeAttributes(LLVMContext &C, unsigned Index,
>> -                                 const AttrBuilder &Attrs) const;
>> +                                 const AttrBuilder &AttrsToRemove) const;
>>
>>    /// \brief Remove all attributes at the specified index from this
>>    /// attribute list. Because attribute lists are immutable, this returns
>> the
>>
>> Modified: llvm/trunk/include/llvm/IR/Function.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Function.h?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/Function.h (original)
>> +++ llvm/trunk/include/llvm/IR/Function.h Fri Apr 28 16:48:28 2017
>> @@ -279,7 +279,7 @@ public:
>>    void addAttribute(unsigned i, Attribute Attr);
>>
>>    /// @brief adds the attributes to the list of attributes.
>> -  void addAttributes(unsigned i, AttributeList Attrs);
>> +  void addAttributes(unsigned i, const AttrBuilder &Attrs);
>>
>>    /// @brief removes the attribute from the list of attributes.
>>    void removeAttribute(unsigned i, Attribute::AttrKind Kind);
>> @@ -288,7 +288,7 @@ public:
>>    void removeAttribute(unsigned i, StringRef Kind);
>>
>>    /// @brief removes the attributes from the list of attributes.
>> -  void removeAttributes(unsigned i, AttributeList Attrs);
>> +  void removeAttributes(unsigned i, const AttrBuilder &Attrs);
>>
>>    /// @brief check if an attributes is in the list of attributes.
>>    bool hasAttribute(unsigned i, Attribute::AttrKind Kind) const {
>>
>> Modified: llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp Fri Apr 28 16:48:28
>> 2017
>> @@ -83,8 +83,8 @@ void CallLowering::setArgFlags(CallLower
>>      // For ByVal, alignment should be passed from FE.  BE will guess if
>>      // this info is not there but there are cases it cannot get right.
>>      unsigned FrameAlign;
>> -    if (FuncInfo.getParamAlignment(OpIdx - 1))
>> -      FrameAlign = FuncInfo.getParamAlignment(OpIdx - 1);
>> +    if (FuncInfo.getParamAlignment(OpIdx - 2))
>> +      FrameAlign = FuncInfo.getParamAlignment(OpIdx - 2);
>>      else
>>        FrameAlign = getTLI()->getByValTypeAlignment(ElementTy, DL);
>>      Arg.Flags.setByValAlign(FrameAlign);
>>
>> Modified: llvm/trunk/lib/IR/Attributes.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Attributes.cpp?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/IR/Attributes.cpp (original)
>> +++ llvm/trunk/lib/IR/Attributes.cpp Fri Apr 28 16:48:28 2017
>> @@ -936,7 +936,9 @@ AttributeList AttributeList::get(LLVMCon
>>  AttributeList AttributeList::addAttribute(LLVMContext &C, unsigned Index,
>>                                            Attribute::AttrKind Kind) const
>> {
>>    if (hasAttribute(Index, Kind)) return *this;
>> -  return addAttributes(C, Index, AttributeList::get(C, Index, Kind));
>> +  AttrBuilder B;
>> +  B.addAttribute(Kind);
>> +  return addAttributes(C, Index, B);
>>  }
>>
>>  AttributeList AttributeList::addAttribute(LLVMContext &C, unsigned Index,
>> @@ -944,7 +946,7 @@ AttributeList AttributeList::addAttribut
>>                                            StringRef Value) const {
>>    AttrBuilder B;
>>    B.addAttribute(Kind, Value);
>> -  return addAttributes(C, Index, AttributeList::get(C, Index, B));
>> +  return addAttributes(C, Index, B);
>>  }
>>
>>  AttributeList AttributeList::addAttribute(LLVMContext &C,
>> @@ -978,14 +980,6 @@ AttributeList AttributeList::addAttribut
>>  }
>>
>>  AttributeList AttributeList::addAttributes(LLVMContext &C, unsigned
>> Index,
>> -                                           AttributeList Attrs) const {
>> -  if (!pImpl) return Attrs;
>> -  if (!Attrs.pImpl) return *this;
>> -
>> -  return addAttributes(C, Index, Attrs.getAttributes(Index));
>> -}
>> -
>> -AttributeList AttributeList::addAttributes(LLVMContext &C, unsigned
>> Index,
>>                                             const AttrBuilder &B) const {
>>    if (!B.hasAttributes())
>>      return *this;
>> @@ -1034,18 +1028,17 @@ AttributeList AttributeList::addAttribut
>>  AttributeList AttributeList::removeAttribute(LLVMContext &C, unsigned
>> Index,
>>                                               Attribute::AttrKind Kind)
>> const {
>>    if (!hasAttribute(Index, Kind)) return *this;
>> -  return removeAttributes(C, Index, AttributeList::get(C, Index, Kind));
>> +  AttrBuilder B;
>> +  B.addAttribute(Kind);
>> +  return removeAttributes(C, Index, B);
>>  }
>>
>>  AttributeList AttributeList::removeAttribute(LLVMContext &C, unsigned
>> Index,
>>                                               StringRef Kind) const {
>>    if (!hasAttribute(Index, Kind)) return *this;
>> -  return removeAttributes(C, Index, AttributeList::get(C, Index, Kind));
>> -}
>> -
>> -AttributeList AttributeList::removeAttributes(LLVMContext &C, unsigned
>> Index,
>> -                                              AttributeList Attrs) const
>> {
>> -  return removeAttributes(C, Index,
>> AttrBuilder(Attrs.getAttributes(Index)));
>> +  AttrBuilder B;
>> +  B.addAttribute(Kind);
>> +  return removeAttributes(C, Index, B);
>>  }
>>
>>  AttributeList AttributeList::removeAttributes(LLVMContext &C, unsigned
>> Index,
>> @@ -1103,7 +1096,7 @@ AttributeList AttributeList::addDerefere
>>                                                      uint64_t Bytes) const
>> {
>>    AttrBuilder B;
>>    B.addDereferenceableAttr(Bytes);
>> -  return addAttributes(C, Index, AttributeList::get(C, Index, B));
>> +  return addAttributes(C, Index, B);
>>  }
>>
>>  AttributeList
>> @@ -1111,7 +1104,7 @@ AttributeList::addDereferenceableOrNullA
>>                                              uint64_t Bytes) const {
>>    AttrBuilder B;
>>    B.addDereferenceableOrNullAttr(Bytes);
>> -  return addAttributes(C, Index, AttributeList::get(C, Index, B));
>> +  return addAttributes(C, Index, B);
>>  }
>>
>>  AttributeList
>> @@ -1120,7 +1113,7 @@ AttributeList::addAllocSizeAttr(LLVMCont
>>                                  const Optional<unsigned> &NumElemsArg) {
>>    AttrBuilder B;
>>    B.addAllocSizeAttr(ElemSizeArg, NumElemsArg);
>> -  return addAttributes(C, Index, AttributeList::get(C, Index, B));
>> +  return addAttributes(C, Index, B);
>>  }
>>
>>
>> //===----------------------------------------------------------------------===//
>> @@ -1610,12 +1603,10 @@ static void adjustCallerSSPLevel(Functio
>>    // If upgrading the SSP attribute, clear out the old SSP Attributes
>> first.
>>    // Having multiple SSP attributes doesn't actually hurt, but it adds
>> useless
>>    // clutter to the IR.
>> -  AttrBuilder B;
>> -  B.addAttribute(Attribute::StackProtect)
>> -    .addAttribute(Attribute::StackProtectStrong)
>> -    .addAttribute(Attribute::StackProtectReq);
>> -  AttributeList OldSSPAttr =
>> -      AttributeList::get(Caller.getContext(),
>> AttributeList::FunctionIndex, B);
>> +  AttrBuilder OldSSPAttr;
>> +  OldSSPAttr.addAttribute(Attribute::StackProtect)
>> +      .addAttribute(Attribute::StackProtectStrong)
>> +      .addAttribute(Attribute::StackProtectReq);
>>
>>    if (Callee.hasFnAttribute(Attribute::StackProtectReq)) {
>>      Caller.removeAttributes(AttributeList::FunctionIndex, OldSSPAttr);
>>
>> Modified: llvm/trunk/lib/IR/Function.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Function.cpp?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/IR/Function.cpp (original)
>> +++ llvm/trunk/lib/IR/Function.cpp Fri Apr 28 16:48:28 2017
>> @@ -328,7 +328,7 @@ void Function::addAttribute(unsigned i,
>>    setAttributes(PAL);
>>  }
>>
>> -void Function::addAttributes(unsigned i, AttributeList Attrs) {
>> +void Function::addAttributes(unsigned i, const AttrBuilder &Attrs) {
>>    AttributeList PAL = getAttributes();
>>    PAL = PAL.addAttributes(getContext(), i, Attrs);
>>    setAttributes(PAL);
>> @@ -346,7 +346,7 @@ void Function::removeAttribute(unsigned
>>    setAttributes(PAL);
>>  }
>>
>> -void Function::removeAttributes(unsigned i, AttributeList Attrs) {
>> +void Function::removeAttributes(unsigned i, const AttrBuilder &Attrs) {
>>    AttributeList PAL = getAttributes();
>>    PAL = PAL.removeAttributes(getContext(), i, Attrs);
>>    setAttributes(PAL);
>>
>> Modified: llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp (original)
>> +++ llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp Fri Apr 28 16:48:28
>> 2017
>> @@ -490,15 +490,14 @@ static void createFPFnStub(Function *F,
>>  // remove the use-soft-float attribute
>>  //
>>  static void removeUseSoftFloat(Function &F) {
>> -  AttributeList A;
>> +  AttrBuilder B;
>>    DEBUG(errs() << "removing -use-soft-float\n");
>> -  A = A.addAttribute(F.getContext(), AttributeList::FunctionIndex,
>> -                     "use-soft-float", "false");
>> -  F.removeAttributes(AttributeList::FunctionIndex, A);
>> +  B.addAttribute("use-soft-float", "false");
>> +  F.removeAttributes(AttributeList::FunctionIndex, B);
>>    if (F.hasFnAttribute("use-soft-float")) {
>>      DEBUG(errs() << "still has -use-soft-float\n");
>>    }
>> -  F.addAttributes(AttributeList::FunctionIndex, A);
>> +  F.addAttributes(AttributeList::FunctionIndex, B);
>>  }
>>
>>
>>
>> Modified: llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp Fri Apr 28 16:48:28
>> 2017
>> @@ -245,9 +245,7 @@ static Function *createClone(Function &F
>>    // Remove old return attributes.
>>    NewF->removeAttributes(
>>        AttributeList::ReturnIndex,
>> -      AttributeList::get(
>> -          NewF->getContext(), AttributeList::ReturnIndex,
>> -          AttributeFuncs::typeIncompatible(NewF->getReturnType())));
>> +      AttributeFuncs::typeIncompatible(NewF->getReturnType()));
>>
>>    // Make AllocaSpillBlock the new entry block.
>>    auto *SwitchBB = cast<BasicBlock>(VMap[ResumeEntry]);
>>
>> Modified: llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp Fri
>> Apr 28 16:48:28 2017
>> @@ -254,7 +254,7 @@ class DataFlowSanitizer : public ModuleP
>>    MDNode *ColdCallWeights;
>>    DFSanABIList ABIList;
>>    DenseMap<Value *, Function *> UnwrappedFnMap;
>> -  AttributeList ReadOnlyNoneAttrs;
>> +  AttrBuilder ReadOnlyNoneAttrs;
>>    bool DFSanRuntimeShadowMask;
>>
>>    Value *getShadowAddress(Value *Addr, Instruction *Pos);
>> @@ -544,16 +544,12 @@ DataFlowSanitizer::buildWrapperFunction(
>>    NewF->copyAttributesFrom(F);
>>    NewF->removeAttributes(
>>        AttributeList::ReturnIndex,
>> -      AttributeList::get(
>> -          F->getContext(), AttributeList::ReturnIndex,
>> -          AttributeFuncs::typeIncompatible(NewFT->getReturnType())));
>> +      AttributeFuncs::typeIncompatible(NewFT->getReturnType()));
>>
>>    BasicBlock *BB = BasicBlock::Create(*Ctx, "entry", NewF);
>>    if (F->isVarArg()) {
>> -    NewF->removeAttributes(
>> -        AttributeList::FunctionIndex,
>> -        AttributeList().addAttribute(*Ctx, AttributeList::FunctionIndex,
>> -                                     "split-stack"));
>> +    NewF->removeAttributes(AttributeList::FunctionIndex,
>> +                           AttrBuilder().addAttribute("split-stack"));
>>      CallInst::Create(DFSanVarargWrapperFn,
>>                       IRBuilder<>(BB).CreateGlobalStringPtr(F->getName()),
>> "",
>>                       BB);
>> @@ -698,9 +694,8 @@ bool DataFlowSanitizer::runOnModule(Modu
>>      }
>>    }
>>
>> -  AttrBuilder B;
>> -  B.addAttribute(Attribute::ReadOnly).addAttribute(Attribute::ReadNone);
>> -  ReadOnlyNoneAttrs = AttributeList::get(*Ctx,
>> AttributeList::FunctionIndex, B);
>> +  ReadOnlyNoneAttrs.addAttribute(Attribute::ReadOnly)
>> +      .addAttribute(Attribute::ReadNone);
>>
>>    // First, change the ABI of every function in the module.  ABI-listed
>>    // functions keep their original ABI and get a wrapper function.
>> @@ -722,9 +717,7 @@ bool DataFlowSanitizer::runOnModule(Modu
>>          NewF->copyAttributesFrom(&F);
>>          NewF->removeAttributes(
>>              AttributeList::ReturnIndex,
>> -            AttributeList::get(
>> -                NewF->getContext(), AttributeList::ReturnIndex,
>> -
>> AttributeFuncs::typeIncompatible(NewFT->getReturnType())));
>> +            AttributeFuncs::typeIncompatible(NewFT->getReturnType()));
>>          for (Function::arg_iterator FArg = F.arg_begin(),
>>                                      NewFArg = NewF->arg_begin(),
>>                                      FArgEnd = F.arg_end();
>>
>> Modified: llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp Fri Apr
>> 28 16:48:28 2017
>> @@ -2607,10 +2607,7 @@ struct MemorySanitizerVisitor : public I
>>          AttrBuilder B;
>>          B.addAttribute(Attribute::ReadOnly)
>>            .addAttribute(Attribute::ReadNone);
>> -        Func->removeAttributes(AttributeList::FunctionIndex,
>> -                               AttributeList::get(Func->getContext(),
>> -
>> AttributeList::FunctionIndex,
>> -                                                  B));
>> +        Func->removeAttributes(AttributeList::FunctionIndex, B);
>>        }
>>
>>        maybeMarkSanitizerLibraryCallNoBuiltin(Call, TLI);
>> @@ -3659,9 +3656,7 @@ bool MemorySanitizer::runOnFunction(Func
>>    AttrBuilder B;
>>    B.addAttribute(Attribute::ReadOnly)
>>      .addAttribute(Attribute::ReadNone);
>> -  F.removeAttributes(
>> -      AttributeList::FunctionIndex,
>> -      AttributeList::get(F.getContext(), AttributeList::FunctionIndex,
>> B));
>> +  F.removeAttributes(AttributeList::FunctionIndex, B);
>>
>>    return Visitor.runOnFunction();
>>  }
>>
>> Modified: llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp Fri Apr
>> 28 16:48:28 2017
>> @@ -2290,8 +2290,7 @@ static void RemoveNonValidAttrAtIndex(LL
>>      R.addAttribute(Attribute::NoAlias);
>>
>>    if (!R.empty())
>> -    AH.setAttributes(AH.getAttributes().removeAttributes(
>> -        Ctx, Index, AttributeList::get(Ctx, Index, R)));
>> +    AH.setAttributes(AH.getAttributes().removeAttributes(Ctx, Index, R));
>>  }
>>
>>  void
>>
>> Modified: llvm/trunk/unittests/IR/AttributesTest.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/AttributesTest.cpp?rev=301697&r1=301696&r2=301697&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/unittests/IR/AttributesTest.cpp (original)
>> +++ llvm/trunk/unittests/IR/AttributesTest.cpp Fri Apr 28 16:48:28 2017
>> @@ -45,7 +45,7 @@ TEST(Attributes, Ordering) {
>>                           AttributeList::get(C, 1, Attribute::SExt)};
>>
>>    AttributeList SetA = AttributeList::get(C, ASs);
>> -  AttributeList SetB = SetA.removeAttributes(C, 1, ASs[1]);
>> +  AttributeList SetB = SetA.removeAttributes(C, 1,
>> ASs[1].getAttributes(1));
>>    EXPECT_NE(SetA, SetB);
>>  }
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>


More information about the llvm-commits mailing list