summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCParser/AsmParser.cpp
diff options
context:
space:
mode:
authorCoby Tayree <coby.tayree@intel.com>2017-08-02 17:36:10 +0000
committerCoby Tayree <coby.tayree@intel.com>2017-08-02 17:36:10 +0000
commitd483a107910c708cdd60901a28e0f5a4e360b6d2 (patch)
treef3f5c0cbf843154246984e0327f4f51f74ef2a52 /llvm/lib/MC/MCParser/AsmParser.cpp
parent3a8e4d98f88c0bc4436df6e37cf8dee3ea36c507 (diff)
downloadbcm5719-llvm-d483a107910c708cdd60901a28e0f5a4e360b6d2.tar.gz
bcm5719-llvm-d483a107910c708cdd60901a28e0f5a4e360b6d2.zip
[AsmParser][GAS-compatibility] Ignore an empty 'p2align' directive
GAS ignores the aforementioned issue this patch aligns LLVM + throws in an appropriate warning Differential Revision: https://reviews.llvm.org/D36060 llvm-svn: 309841
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmParser.cpp')
-rw-r--r--llvm/lib/MC/MCParser/AsmParser.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index 2756cb71ed9..a75476d2298 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -3199,7 +3199,7 @@ bool AsmParser::parseDirectiveAlign(bool IsPow2, unsigned ValueSize) {
int64_t MaxBytesToFill = 0;
auto parseAlign = [&]() -> bool {
- if (checkForValidSection() || parseAbsoluteExpression(Alignment))
+ if (parseAbsoluteExpression(Alignment))
return true;
if (parseOptionalToken(AsmToken::Comma)) {
// The fill expression can be omitted while specifying a maximum number of
@@ -3218,6 +3218,13 @@ bool AsmParser::parseDirectiveAlign(bool IsPow2, unsigned ValueSize) {
return parseToken(AsmToken::EndOfStatement);
};
+ if (checkForValidSection())
+ return addErrorSuffix(" in directive");
+ // Ignore empty '.p2align' directives for GNU-as compatibility
+ if (IsPow2 && (ValueSize == 1) && getTok().is(AsmToken::EndOfStatement)) {
+ Warning(AlignmentLoc, "p2align directive with no operand(s) is ignored");
+ return parseToken(AsmToken::EndOfStatement);
+ }
if (parseAlign())
return addErrorSuffix(" in directive");
OpenPOWER on IntegriCloud