forked from OSchip/llvm-project
AsmParser: Disable Darwin-style macro argument expansion on non-darwin targets.
There is code in the wild that relies on $0 not being expanded. llvm-svn: 201784
This commit is contained in:
parent
b106f2c0ac
commit
513e744d9b
|
@ -1730,7 +1730,7 @@ bool AsmParser::expandMacro(raw_svector_ostream &OS, StringRef Body,
|
|||
ArrayRef<MCAsmMacroParameter> Parameters,
|
||||
ArrayRef<MCAsmMacroArgument> A, const SMLoc &L) {
|
||||
unsigned NParameters = Parameters.size();
|
||||
if (NParameters != 0 && NParameters != A.size())
|
||||
if ((!IsDarwin || NParameters != 0) && NParameters != A.size())
|
||||
return Error(L, "Wrong number of arguments");
|
||||
|
||||
// A macro without parameters is handled differently on Darwin:
|
||||
|
@ -1740,7 +1740,7 @@ bool AsmParser::expandMacro(raw_svector_ostream &OS, StringRef Body,
|
|||
std::size_t End = Body.size(), Pos = 0;
|
||||
for (; Pos != End; ++Pos) {
|
||||
// Check for a substitution or escape.
|
||||
if (!NParameters) {
|
||||
if (IsDarwin && !NParameters) {
|
||||
// This macro has no parameters, look for $0, $1, etc.
|
||||
if (Body[Pos] != '$' || Pos + 1 == End)
|
||||
continue;
|
||||
|
@ -1763,7 +1763,7 @@ bool AsmParser::expandMacro(raw_svector_ostream &OS, StringRef Body,
|
|||
if (Pos == End)
|
||||
break;
|
||||
|
||||
if (!NParameters) {
|
||||
if (IsDarwin && !NParameters) {
|
||||
switch (Body[Pos + 1]) {
|
||||
// $$ => $
|
||||
case '$':
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: llvm-mc -triple i386-unknown-unknown %s > %t
|
||||
// RUN: llvm-mc -triple i386-apple-darwin %s
|
||||
|
||||
.macro check_expr
|
||||
.if ($0) != ($1)
|
||||
|
|
|
@ -91,3 +91,15 @@ test8 1,2 3
|
|||
|
||||
// CHECK: .ascii "1,2,3"
|
||||
test8 1 2, 3
|
||||
|
||||
.macro test10
|
||||
.ascii "$20"
|
||||
.endm
|
||||
|
||||
test10
|
||||
// CHECK: .ascii "$20"
|
||||
|
||||
test10 42
|
||||
// CHECK-ERRORS: 102:10: error: Wrong number of arguments
|
||||
// CHECK-ERRORS-NEXT: test10 42
|
||||
// CHECK-ERRORS-NEXT: ^
|
||||
|
|
Loading…
Reference in New Issue