diff --git a/include/llvm/Value.h b/include/llvm/Value.h index 0f4c522d373..633063523fc 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -307,6 +307,10 @@ public: return const_cast(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 diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index e581a694586..c55a16520f9 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -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; } diff --git a/lib/Transforms/InstCombine/InstCombineCalls.cpp b/lib/Transforms/InstCombine/InstCombineCalls.cpp index fdb2dd693d9..27ca345b067 100644 --- a/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -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);