forked from OSchip/llvm-project
[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
This commit is contained in:
parent
3a8e4d98f8
commit
d483a10791
|
@ -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");
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# RUN: not llvm-mc -triple i386-apple-darwin9 %s | FileCheck %s
|
||||
# RUN: not llvm-mc -triple i386-apple-darwin9 %s 2> %t.err | FileCheck %s
|
||||
# RUN: FileCheck < %t.err %s --check-prefix=CHECK-WARN
|
||||
|
||||
# CHECK: TEST0:
|
||||
# CHECK: .p2align 1
|
||||
|
@ -14,3 +15,7 @@ TEST1:
|
|||
# CHECK: .balign 3, 10
|
||||
TEST2:
|
||||
.balign 3,10
|
||||
|
||||
# CHECK-WARN: p2align directive with no operand(s) is ignored
|
||||
TEST3:
|
||||
.p2align
|
||||
|
|
Loading…
Reference in New Issue