mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
Have the integrated assembler give an error if $1 is used as an identifier in
an expression. Currently this bug causes the line to be ignored in a release build and an assert in a debug build. rdar://13062484 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173195 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bf6a77b987
commit
5de048ec30
@ -734,7 +734,9 @@ bool AsmParser::ParseBracketExpr(const MCExpr *&Res, SMLoc &EndLoc) {
|
||||
/// primaryexpr ::= '.'
|
||||
/// primaryexpr ::= ~,+,- primaryexpr
|
||||
bool AsmParser::ParsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc) {
|
||||
switch (Lexer.getKind()) {
|
||||
SMLoc FirstTokenLoc = getLexer().getLoc();
|
||||
AsmToken::TokenKind FirstTokenKind = Lexer.getKind();
|
||||
switch (FirstTokenKind) {
|
||||
default:
|
||||
return TokError("unknown token in expression");
|
||||
// If we have an error assume that we've already handled it.
|
||||
@ -750,8 +752,11 @@ bool AsmParser::ParsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc) {
|
||||
case AsmToken::String:
|
||||
case AsmToken::Identifier: {
|
||||
StringRef Identifier;
|
||||
if (ParseIdentifier(Identifier))
|
||||
if (ParseIdentifier(Identifier)) {
|
||||
if (FirstTokenKind == AsmToken::Dollar)
|
||||
return Error(FirstTokenLoc, "invalid token in expression");
|
||||
return true;
|
||||
}
|
||||
|
||||
EndLoc = SMLoc::getFromPointer(Identifier.end());
|
||||
|
||||
|
5
test/MC/MachO/bad-dollar.s
Normal file
5
test/MC/MachO/bad-dollar.s
Normal file
@ -0,0 +1,5 @@
|
||||
// RUN: not llvm-mc -triple x86_64-apple-darwin10 %s 2> %t.err > %t
|
||||
// RUN: FileCheck --check-prefix=CHECK-ERROR < %t.err %s
|
||||
|
||||
.long $1
|
||||
// CHECK-ERROR: 4:7: error: invalid token in expression
|
Loading…
Reference in New Issue
Block a user