From f71348171849b4ed77e6789eb4b8a7d339d4246f Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Tue, 29 Jan 2013 01:02:03 +0000 Subject: [PATCH] Convert the AttrBuilder into a list of Attributes instead of one Attribute object that holds all of its attributes. llvm-svn: 173742 --- llvm/lib/IR/Attributes.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp index 0bc9262..d947fff 100644 --- a/llvm/lib/IR/Attributes.cpp +++ b/llvm/lib/IR/Attributes.cpp @@ -445,8 +445,21 @@ AttributeSet AttributeSet::get(LLVMContext &C, AttributeSet AttributeSet::get(LLVMContext &C, unsigned Idx, AttrBuilder &B) { if (!B.hasAttributes()) return AttributeSet(); - return get(C, ArrayRef >( - std::make_pair(Idx, Attribute::get(C, B)))); + + SmallVector, 8> Attrs; + for (AttrBuilder::iterator I = B.begin(), E = B.end(); I != E; ++I) { + Attribute::AttrKind Kind = *I; + if (Kind == Attribute::Alignment) + Attrs.push_back(std::make_pair(Idx, Attribute:: + getWithAlignment(C, B.getAlignment()))); + else if (Kind == Attribute::StackAlignment) + Attrs.push_back(std::make_pair(Idx, Attribute:: + getWithStackAlignment(C, B.getStackAlignment()))); + else + Attrs.push_back(std::make_pair(Idx, Attribute::get(C, Kind))); + } + + return get(C, Attrs); } AttributeSet AttributeSet::get(LLVMContext &C, unsigned Idx, -- 2.7.4