[llvm-commits] [llvm] r164370 - in /llvm/trunk: include/llvm/Attributes.h lib/AsmParser/LLParser.cpp lib/CodeGen/MachineFunction.cpp lib/Target/CppBackend/CPPBackend.cpp lib/VMCore/Attributes.cpp
Bill Wendling
isanbard at gmail.com
Fri Sep 21 08:26:31 PDT 2012
Author: void
Date: Fri Sep 21 10:26:31 2012
New Revision: 164370
URL: http://llvm.org/viewvc/llvm-project?rev=164370&view=rev
Log:
Make the 'get*AlignmentFromAttr' functions into member functions within the Attributes class. Now with fix.
Modified:
llvm/trunk/include/llvm/Attributes.h
llvm/trunk/lib/AsmParser/LLParser.cpp
llvm/trunk/lib/CodeGen/MachineFunction.cpp
llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp
llvm/trunk/lib/VMCore/Attributes.cpp
Modified: llvm/trunk/include/llvm/Attributes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Attributes.h?rev=164370&r1=164369&r2=164370&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Attributes.h (original)
+++ llvm/trunk/include/llvm/Attributes.h Fri Sep 21 10:26:31 2012
@@ -205,6 +205,24 @@
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; }
@@ -294,14 +312,6 @@
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) {
@@ -314,15 +324,6 @@
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
@@ -450,7 +451,7 @@
/// getParamAlignment - Return the alignment for the specified function
/// parameter.
unsigned getParamAlignment(unsigned Idx) const {
- return Attribute::getAlignmentFromAttrs(getAttributes(Idx));
+ return getAttributes(Idx).getAlignment();
}
/// hasAttrSomewhere - Return true if the specified attribute is set for at
Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=164370&r1=164369&r2=164370&view=diff
==============================================================================
--- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
+++ llvm/trunk/lib/AsmParser/LLParser.cpp Fri Sep 21 10:26:31 2012
@@ -2717,7 +2717,7 @@
// If the alignment was parsed as an attribute, move to the alignment field.
if (FuncAttrs & Attribute::Alignment) {
- Alignment = Attribute::getAlignmentFromAttrs(FuncAttrs);
+ Alignment = FuncAttrs.getAlignment();
FuncAttrs &= ~Attribute::Alignment;
}
Modified: llvm/trunk/lib/CodeGen/MachineFunction.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineFunction.cpp?rev=164370&r1=164369&r2=164370&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MachineFunction.cpp (original)
+++ llvm/trunk/lib/CodeGen/MachineFunction.cpp Fri Sep 21 10:26:31 2012
@@ -60,8 +60,8 @@
MFInfo = 0;
FrameInfo = new (Allocator) MachineFrameInfo(*TM.getFrameLowering());
if (Fn->hasFnAttr(Attribute::StackAlignment))
- FrameInfo->ensureMaxAlignment(Attribute::getStackAlignmentFromAttrs(
- Fn->getAttributes().getFnAttributes()));
+ FrameInfo->ensureMaxAlignment(Fn->getAttributes().
+ getFnAttributes().getStackAlignment());
ConstantPool = new (Allocator) MachineConstantPool(TM.getTargetData());
Alignment = TM.getTargetLowering()->getMinFunctionAlignment();
// FIXME: Shouldn't use pref alignment if explicit alignment is set on Fn.
Modified: llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp?rev=164370&r1=164369&r2=164370&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp (original)
+++ llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp Fri Sep 21 10:26:31 2012
@@ -508,7 +508,7 @@
#undef HANDLE_ATTR
if (attrs & Attribute::StackAlignment)
Out << " | Attribute::constructStackAlignmentFromInt("
- << Attribute::getStackAlignmentFromAttrs(attrs)
+ << attrs.getStackAlignment()
<< ")";
attrs &= ~Attribute::StackAlignment;
assert(attrs == 0 && "Unhandled attribute!");
Modified: llvm/trunk/lib/VMCore/Attributes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Attributes.cpp?rev=164370&r1=164369&r2=164370&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/Attributes.cpp (original)
+++ llvm/trunk/lib/VMCore/Attributes.cpp Fri Sep 21 10:26:31 2012
@@ -80,12 +80,12 @@
Result += "address_safety ";
if (hasStackAlignmentAttr()) {
Result += "alignstack(";
- Result += utostr(Attribute::getStackAlignmentFromAttrs(*this));
+ Result += utostr(getStackAlignment());
Result += ") ";
}
if (hasAlignmentAttr()) {
Result += "align ";
- Result += utostr(Attribute::getAlignmentFromAttrs(*this));
+ Result += utostr(getAlignment());
Result += " ";
}
// Trim the trailing space.
@@ -174,7 +174,7 @@
#ifndef NDEBUG
for (unsigned i = 0, e = Attrs.size(); i != e; ++i) {
- assert(Attrs[i].Attrs != Attribute::None &&
+ assert(Attrs[i].Attrs.hasAttributes() &&
"Pointless attribute!");
assert((!i || Attrs[i-1].Index < Attrs[i].Index) &&
"Misordered AttributesList!");
@@ -247,13 +247,14 @@
/// 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 Attribute::None;
+ if (AttrList == 0) return Attributes();
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 Attribute::None;
+
+ return Attributes();
}
/// hasAttrSomewhere - Return true if the specified attribute is set for at
@@ -274,8 +275,8 @@
#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 = Attribute::getAlignmentFromAttrs(OldAttrs);
- unsigned NewAlign = Attribute::getAlignmentFromAttrs(Attrs);
+ unsigned OldAlign = OldAttrs.getAlignment();
+ unsigned NewAlign = Attrs.getAlignment();
assert((!OldAlign || !NewAlign || OldAlign == NewAlign) &&
"Attempt to change alignment!");
#endif
More information about the llvm-commits
mailing list