mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01: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 llvm-svn: 173195
This commit is contained in:
parent
390115c18e
commit
8bfddfebbb
@ -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…
x
Reference in New Issue
Block a user