diff options
| -rw-r--r-- | llvm/include/llvm/Value.h | 8 | ||||
| -rw-r--r-- | llvm/lib/AsmParser/LLParser.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | 3 |
3 files changed, 7 insertions, 6 deletions
diff --git a/llvm/include/llvm/Value.h b/llvm/include/llvm/Value.h index 0f4c522d373..633063523fc 100644 --- a/llvm/include/llvm/Value.h +++ b/llvm/include/llvm/Value.h @@ -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 diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index e581a694586..c55a16520f9 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/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/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp index fdb2dd693d9..27ca345b067 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/llvm/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); |

