Move MaximumAlignment to be a member of the Value class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109891 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2010-07-30 21:07:05 +00:00
parent 81881bcd35
commit e16829b401
3 changed files with 7 additions and 6 deletions

View File

@ -307,6 +307,10 @@ public:
return const_cast<Value*>(this)->DoPHITranslation(CurBB, PredBB);
}
/// MaximumAlignment - This is the greatest alignment value supported by
/// load, store, and alloca instructions, and global values.
static const unsigned MaximumAlignment = 1u << 29;
protected:
unsigned short getSubclassDataFromValue() const { return SubclassData; }
void setValueSubclassData(unsigned short D) { SubclassData = D; }
@ -401,10 +405,6 @@ public:
enum { NumLowBitsAvailable = 2 };
};
/// MaximumAlignment - This is the greatest alignment value supported by
/// load, store, and alloca instructions, and global values.
static const unsigned MaximumAlignment = 1u << 29;
} // End llvm namespace
#endif

View File

@ -1154,7 +1154,7 @@ bool LLParser::ParseOptionalAlignment(unsigned &Alignment) {
if (ParseUInt32(Alignment)) return true;
if (!isPowerOf2_32(Alignment))
return Error(AlignLoc, "alignment is not a power of two");
if (Alignment > MaximumAlignment)
if (Alignment > Value::MaximumAlignment)
return Error(AlignLoc, "huge alignments are not supported yet");
return false;
}

View File

@ -109,9 +109,10 @@ unsigned InstCombiner::GetOrEnforceKnownAlignment(Value *V,
TrailZ = std::min(TrailZ, unsigned(sizeof(unsigned) * CHAR_BIT - 1));
unsigned Align = 1u << std::min(BitWidth - 1, TrailZ);
unsigned MaxAlign = Value::MaximumAlignment;
// LLVM doesn't support alignments larger than this currently.
Align = std::min(Align, MaximumAlignment);
Align = std::min(Align, MaxAlign);
if (PrefAlign > Align)
Align = EnforceKnownAlignment(V, Align, PrefAlign);