mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Fix macros arguments with an underscore, dot or dollar in them. This is based
on a patch by Andy/PaX. I added the support for dot and dollar. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162298 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
64bfcbbc58
commit
799aacfb27
@ -1454,6 +1454,14 @@ void AsmParser::DiagHandler(const SMDiagnostic &Diag, void *Context) {
|
|||||||
NewDiag.print(0, OS);
|
NewDiag.print(0, OS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: This is mostly duplicated from the function in AsmLexer.cpp. The
|
||||||
|
// difference being that that function accepts '@' as part of identifiers and
|
||||||
|
// we can't do that. AsmLexer.cpp should probably be changed to handle
|
||||||
|
// '@' as a special case when needed.
|
||||||
|
static bool isIdentifierChar(char c) {
|
||||||
|
return isalnum(c) || c == '_' || c == '$' || c == '.';
|
||||||
|
}
|
||||||
|
|
||||||
bool AsmParser::expandMacro(raw_svector_ostream &OS, StringRef Body,
|
bool AsmParser::expandMacro(raw_svector_ostream &OS, StringRef Body,
|
||||||
const MacroParameters &Parameters,
|
const MacroParameters &Parameters,
|
||||||
const MacroArguments &A,
|
const MacroArguments &A,
|
||||||
@ -1518,7 +1526,7 @@ bool AsmParser::expandMacro(raw_svector_ostream &OS, StringRef Body,
|
|||||||
Pos += 2;
|
Pos += 2;
|
||||||
} else {
|
} else {
|
||||||
unsigned I = Pos + 1;
|
unsigned I = Pos + 1;
|
||||||
while (isalnum(Body[I]) && I + 1 != End)
|
while (isIdentifierChar(Body[I]) && I + 1 != End)
|
||||||
++I;
|
++I;
|
||||||
|
|
||||||
const char *Begin = Body.data() + Pos +1;
|
const char *Begin = Body.data() + Pos +1;
|
||||||
|
@ -37,3 +37,24 @@ test3 1,2 3
|
|||||||
|
|
||||||
// CHECK: .globl "ab)(,) -- (cd)"
|
// CHECK: .globl "ab)(,) -- (cd)"
|
||||||
test4 a b)(,),(cd)
|
test4 a b)(,),(cd)
|
||||||
|
|
||||||
|
.macro test5 _a
|
||||||
|
.globl "\_a"
|
||||||
|
.endm
|
||||||
|
|
||||||
|
test5 zed1
|
||||||
|
// CHECK: .globl zed1
|
||||||
|
|
||||||
|
.macro test6 $a
|
||||||
|
.globl "\$a"
|
||||||
|
.endm
|
||||||
|
|
||||||
|
test6 zed2
|
||||||
|
// CHECK: .globl zed2
|
||||||
|
|
||||||
|
.macro test7 .a
|
||||||
|
.globl "\.a"
|
||||||
|
.endm
|
||||||
|
|
||||||
|
test7 zed3
|
||||||
|
// CHECK: .globl zed3
|
||||||
|
Loading…
Reference in New Issue
Block a user