[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