summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2012-09-20 16:59:57 +0000
committerBill Wendling <isanbard@gmail.com>2012-09-20 16:59:57 +0000
commit4aa189909a194b4b858aefa0c186fa6504845bfd (patch)
treeb90e4e6e867110dbb787064518af32b70aa5c1d7
parentf2e89e00b4c4ecfa5a092a479ccab1ed8677eede (diff)
downloadllvm-4aa189909a194b4b858aefa0c186fa6504845bfd.tar.gz
llvm-4aa189909a194b4b858aefa0c186fa6504845bfd.tar.bz2
llvm-4aa189909a194b4b858aefa0c186fa6504845bfd.tar.xz
Revert r164308 to fix buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164309 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Attributes.h40
-rw-r--r--lib/AsmParser/LLParser.cpp2
-rw-r--r--lib/CodeGen/MachineFunction.cpp4
-rw-r--r--lib/Target/CppBackend/CPPBackend.cpp2
-rw-r--r--lib/VMCore/Attributes.cpp15
5 files changed, 30 insertions, 33 deletions
diff --git a/include/llvm/Attributes.h b/include/llvm/Attributes.h
index 2a7e0dea4f..01b3be8cb6 100644
--- a/include/llvm/Attributes.h
+++ b/include/llvm/Attributes.h
@@ -205,24 +205,6 @@ public:
return Bits & Attribute::StackAlignment_i;
}
- /// This returns the alignment field of an attribute as a byte alignment
- /// value.
- unsigned getAlignment() const {
- if (!hasAlignmentAttr())
- return 0;
-
- return 1U << ((getRawAlignment() >> 16) - 1);
- }
-
- /// This returns the stack alignment field of an attribute as a byte alignment
- /// value.
- unsigned getStackAlignment() const {
- if (!hasStackAlignmentAttr())
- return 0;
-
- return 1U << ((getRawStackAlignment() >> 26) - 1);
- }
-
// This is a "safe bool() operator".
operator const void *() const { return Bits ? this : 0; }
bool isEmptyOrSingleton() const { return (Bits & (Bits - 1)) == 0; }
@@ -230,9 +212,8 @@ public:
return Bits == Attrs.Bits;
}
bool operator != (const Attributes &Attrs) const {
- return !(this == Attrs);
+ return Bits != Attrs.Bits;
}
-
Attributes operator | (const Attributes &Attrs) const {
return Attributes(Bits | Attrs.Bits);
}
@@ -313,6 +294,14 @@ inline Attributes constructAlignmentFromInt(unsigned i) {
return Attributes((Log2_32(i)+1) << 16);
}
+/// This returns the alignment field of an attribute as a byte alignment value.
+inline unsigned getAlignmentFromAttrs(Attributes A) {
+ if (!A.hasAlignmentAttr())
+ return 0;
+
+ return 1U << ((A.getRawAlignment() >> 16) - 1);
+}
+
/// This turns an int stack alignment (which must be a power of 2) into
/// the form used internally in Attributes.
inline Attributes constructStackAlignmentFromInt(unsigned i) {
@@ -325,6 +314,15 @@ inline Attributes constructStackAlignmentFromInt(unsigned i) {
return Attributes((Log2_32(i)+1) << 26);
}
+/// This returns the stack alignment field of an attribute as a byte alignment
+/// value.
+inline unsigned getStackAlignmentFromAttrs(Attributes A) {
+ if (!A.hasStackAlignmentAttr())
+ return 0;
+
+ return 1U << ((A.getRawStackAlignment() >> 26) - 1);
+}
+
/// This returns an integer containing an encoding of all the
/// LLVM attributes found in the given attribute bitset. Any
/// change to this encoding is a breaking change to bitcode
@@ -452,7 +450,7 @@ public:
/// getParamAlignment - Return the alignment for the specified function
/// parameter.
unsigned getParamAlignment(unsigned Idx) const {
- return getAttributes(Idx).getAlignment();
+ return Attribute::getAlignmentFromAttrs(getAttributes(Idx));
}
/// hasAttrSomewhere - Return true if the specified attribute is set for at
diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp
index c1d5272ca5..2e4af3abb7 100644
--- a/lib/AsmParser/LLParser.cpp
+++ b/lib/AsmParser/LLParser.cpp
@@ -2717,7 +2717,7 @@ bool LLParser::ParseFunctionHeader(Function *&Fn, bool isDefine) {
// If the alignment was parsed as an attribute, move to the alignment field.
if (FuncAttrs & Attribute::Alignment) {
- Alignment = FuncAttrs.getAlignment();
+ Alignment = Attribute::getAlignmentFromAttrs(FuncAttrs);
FuncAttrs &= ~Attribute::Alignment;
}
diff --git a/lib/CodeGen/MachineFunction.cpp b/lib/CodeGen/MachineFunction.cpp
index 304e39e159..328722bad4 100644
--- a/lib/CodeGen/MachineFunction.cpp
+++ b/lib/CodeGen/MachineFunction.cpp
@@ -60,8 +60,8 @@ MachineFunction::MachineFunction(const Function *F, const TargetMachine &TM,
MFInfo = 0;
FrameInfo = new (Allocator) MachineFrameInfo(*TM.getFrameLowering());
if (Fn->hasFnAttr(Attribute::StackAlignment))
- FrameInfo->ensureMaxAlignment(Fn->getAttributes().
- getFnAttributes().getStackAlignment());
+ FrameInfo->ensureMaxAlignment(Attribute::getStackAlignmentFromAttrs(
+ Fn->getAttributes().getFnAttributes()));
ConstantPool = new (Allocator) MachineConstantPool(TM.getTargetData());
Alignment = TM.getTargetLowering()->getMinFunctionAlignment();
// FIXME: Shouldn't use pref alignment if explicit alignment is set on Fn.
diff --git a/lib/Target/CppBackend/CPPBackend.cpp b/lib/Target/CppBackend/CPPBackend.cpp
index 444da2bb21..4ddcd38aca 100644
--- a/lib/Target/CppBackend/CPPBackend.cpp
+++ b/lib/Target/CppBackend/CPPBackend.cpp
@@ -508,7 +508,7 @@ void CppWriter::printAttributes(const AttrListPtr &PAL,
#undef HANDLE_ATTR
if (attrs & Attribute::StackAlignment)
Out << " | Attribute::constructStackAlignmentFromInt("
- << attrs.getStackAlignment()
+ << Attribute::getStackAlignmentFromAttrs(attrs)
<< ")";
attrs &= ~Attribute::StackAlignment;
assert(attrs == 0 && "Unhandled attribute!");
diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp
index af8163fd40..3a87da44dd 100644
--- a/lib/VMCore/Attributes.cpp
+++ b/lib/VMCore/Attributes.cpp
@@ -80,12 +80,12 @@ std::string Attributes::getAsString() const {
Result += "address_safety ";
if (hasStackAlignmentAttr()) {
Result += "alignstack(";
- Result += utostr(getStackAlignment());
+ Result += utostr(Attribute::getStackAlignmentFromAttrs(*this));
Result += ") ";
}
if (hasAlignmentAttr()) {
Result += "align ";
- Result += utostr(getAlignment());
+ Result += utostr(Attribute::getAlignmentFromAttrs(*this));
Result += " ";
}
// Trim the trailing space.
@@ -174,7 +174,7 @@ AttrListPtr AttrListPtr::get(ArrayRef<AttributeWithIndex> Attrs) {
#ifndef NDEBUG
for (unsigned i = 0, e = Attrs.size(); i != e; ++i) {
- assert(Attrs[i].Attrs.hasAttributes() &&
+ assert(Attrs[i].Attrs != Attribute::None &&
"Pointless attribute!");
assert((!i || Attrs[i-1].Index < Attrs[i].Index) &&
"Misordered AttributesList!");
@@ -247,14 +247,13 @@ const AttributeWithIndex &AttrListPtr::getSlot(unsigned Slot) const {
/// returned. Attributes for the result are denoted with Idx = 0.
/// Function notes are denoted with idx = ~0.
Attributes AttrListPtr::getAttributes(unsigned Idx) const {
- if (AttrList == 0) return Attributes();
+ if (AttrList == 0) return Attribute::None;
const SmallVector<AttributeWithIndex, 4> &Attrs = AttrList->Attrs;
for (unsigned i = 0, e = Attrs.size(); i != e && Attrs[i].Index <= Idx; ++i)
if (Attrs[i].Index == Idx)
return Attrs[i].Attrs;
-
- return Attributes();
+ return Attribute::None;
}
/// hasAttrSomewhere - Return true if the specified attribute is set for at
@@ -275,8 +274,8 @@ AttrListPtr AttrListPtr::addAttr(unsigned Idx, Attributes Attrs) const {
#ifndef NDEBUG
// FIXME it is not obvious how this should work for alignment.
// For now, say we can't change a known alignment.
- unsigned OldAlign = OldAttrs.getAlignment();
- unsigned NewAlign = Attrs.getAlignment();
+ unsigned OldAlign = Attribute::getAlignmentFromAttrs(OldAttrs);
+ unsigned NewAlign = Attribute::getAlignmentFromAttrs(Attrs);
assert((!OldAlign || !NewAlign || OldAlign == NewAlign) &&
"Attempt to change alignment!");
#endif