return true;
}
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.zero' directive"))
+ if (parseEOL())
return true;
getStreamer().emitFill(*NumBytes, Val, NumBytesLoc);
return true;
}
}
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.fill' directive"))
+ if (parseEOL())
return true;
if (FillSize < 0) {
if (parseOptionalToken(AsmToken::Comma))
if (parseAbsoluteExpression(FillExpr))
return addErrorSuffix(" in '.org' directive");
- if (parseToken(AsmToken::EndOfStatement))
+ if (parseEOL())
return addErrorSuffix(" in '.org' directive");
getStreamer().emitValueToOffset(Offset, FillExpr, OffsetLoc);
parseAbsoluteExpression(MaxBytesToFill))
return true;
}
- return parseToken(AsmToken::EndOfStatement);
+ return parseEOL();
};
if (checkForValidSection())
// 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);
+ return parseEOL();
}
if (parseAlign())
return addErrorSuffix(" in directive");
if (!parseOptionalToken(AsmToken::EndOfStatement)) {
if (check(parseIdentifier(Simple) || Simple != "simple",
"unexpected token") ||
- parseToken(AsmToken::EndOfStatement))
+ parseEOL())
return addErrorSuffix(" in '.cfi_startproc' directive");
}
/// parseDirectiveCFIEndProc
/// ::= .cfi_endproc
bool AsmParser::parseDirectiveCFIEndProc() {
- if (parseToken(AsmToken::EndOfStatement))
+ if (parseEOL())
return addErrorSuffix(" in '.cfi_endproc' directive");
getStreamer().emitCFIEndProc();
return false;
int64_t Register = 0, Offset = 0;
if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
parseToken(AsmToken::Comma, "unexpected token in directive") ||
- parseAbsoluteExpression(Offset) || parseToken(AsmToken::EndOfStatement))
+ parseAbsoluteExpression(Offset) || parseEOL())
return true;
getStreamer().emitCFIDefCfa(Register, Offset);
/// ::= .cfi_def_cfa_offset offset
bool AsmParser::parseDirectiveCFIDefCfaOffset() {
int64_t Offset = 0;
- if (parseAbsoluteExpression(Offset) || parseToken(AsmToken::EndOfStatement))
+ if (parseAbsoluteExpression(Offset) || parseEOL())
return true;
getStreamer().emitCFIDefCfaOffset(Offset);
int64_t Register1 = 0, Register2 = 0;
if (parseRegisterOrRegisterNumber(Register1, DirectiveLoc) ||
parseToken(AsmToken::Comma, "unexpected token in directive") ||
- parseRegisterOrRegisterNumber(Register2, DirectiveLoc) ||
- parseToken(AsmToken::EndOfStatement))
+ parseRegisterOrRegisterNumber(Register2, DirectiveLoc) || parseEOL())
return true;
getStreamer().emitCFIRegister(Register1, Register2);
/// parseDirectiveCFIWindowSave
/// ::= .cfi_window_save
bool AsmParser::parseDirectiveCFIWindowSave() {
- if (parseToken(AsmToken::EndOfStatement))
+ if (parseEOL())
return true;
getStreamer().emitCFIWindowSave();
return false;
/// ::= .cfi_adjust_cfa_offset adjustment
bool AsmParser::parseDirectiveCFIAdjustCfaOffset() {
int64_t Adjustment = 0;
- if (parseAbsoluteExpression(Adjustment) ||
- parseToken(AsmToken::EndOfStatement))
+ if (parseAbsoluteExpression(Adjustment) || parseEOL())
return true;
getStreamer().emitCFIAdjustCfaOffset(Adjustment);
/// ::= .cfi_def_cfa_register register
bool AsmParser::parseDirectiveCFIDefCfaRegister(SMLoc DirectiveLoc) {
int64_t Register = 0;
- if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
- parseToken(AsmToken::EndOfStatement))
+ if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL())
return true;
getStreamer().emitCFIDefCfaRegister(Register);
if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
parseToken(AsmToken::Comma, "unexpected token in directive") ||
- parseAbsoluteExpression(Offset) || parseToken(AsmToken::EndOfStatement))
+ parseAbsoluteExpression(Offset) || parseEOL())
return true;
getStreamer().emitCFIOffset(Register, Offset);
if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
parseToken(AsmToken::Comma, "unexpected token in directive") ||
- parseAbsoluteExpression(Offset) || parseToken(AsmToken::EndOfStatement))
+ parseAbsoluteExpression(Offset) || parseEOL())
return true;
getStreamer().emitCFIRelOffset(Register, Offset);
if (check(!isValidEncoding(Encoding), "unsupported encoding.") ||
parseToken(AsmToken::Comma, "unexpected token in directive") ||
check(parseIdentifier(Name), "expected identifier in directive") ||
- parseToken(AsmToken::EndOfStatement))
+ parseEOL())
return true;
MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
/// parseDirectiveCFIRememberState
/// ::= .cfi_remember_state
bool AsmParser::parseDirectiveCFIRememberState() {
- if (parseToken(AsmToken::EndOfStatement))
+ if (parseEOL())
return true;
getStreamer().emitCFIRememberState();
return false;
/// parseDirectiveCFIRestoreState
/// ::= .cfi_remember_state
bool AsmParser::parseDirectiveCFIRestoreState() {
- if (parseToken(AsmToken::EndOfStatement))
+ if (parseEOL())
return true;
getStreamer().emitCFIRestoreState();
return false;
bool AsmParser::parseDirectiveCFISameValue(SMLoc DirectiveLoc) {
int64_t Register = 0;
- if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
- parseToken(AsmToken::EndOfStatement))
+ if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL())
return true;
getStreamer().emitCFISameValue(Register);
/// ::= .cfi_restore register
bool AsmParser::parseDirectiveCFIRestore(SMLoc DirectiveLoc) {
int64_t Register = 0;
- if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
- parseToken(AsmToken::EndOfStatement))
+ if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL())
return true;
getStreamer().emitCFIRestore(Register);
/// ::= .cfi_return_column register
bool AsmParser::parseDirectiveCFIReturnColumn(SMLoc DirectiveLoc) {
int64_t Register = 0;
- if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
- parseToken(AsmToken::EndOfStatement))
+ if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL())
return true;
getStreamer().emitCFIReturnColumn(Register);
return false;
bool AsmParser::parseDirectiveCFIUndefined(SMLoc DirectiveLoc) {
int64_t Register = 0;
- if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) ||
- parseToken(AsmToken::EndOfStatement))
+ if (parseRegisterOrRegisterNumber(Register, DirectiveLoc) || parseEOL())
return true;
getStreamer().emitCFIUndefined(Register);
/// ::= .altmacro
/// ::= .noaltmacro
bool AsmParser::parseDirectiveAltmacro(StringRef Directive) {
- if (getLexer().isNot(AsmToken::EndOfStatement))
- return TokError("unexpected token in '" + Directive + "' directive");
+ if (parseEOL())
+ return true;
AltMacroMode = (Directive == ".altmacro");
return false;
}
/// ::= .macros_on
/// ::= .macros_off
bool AsmParser::parseDirectiveMacrosOnOff(StringRef Directive) {
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '" + Directive + "' directive"))
+ if (parseEOL())
return true;
-
setMacrosEnabled(Directive == ".macros_on");
return false;
}
/// parseDirectiveExitMacro
/// ::= .exitm
bool AsmParser::parseDirectiveExitMacro(StringRef Directive) {
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '" + Directive + "' directive"))
+ if (parseEOL())
return true;
if (!isInsideMacroInstantiation())
/// parseDirectiveBundleLock
/// ::= {.bundle_lock}
bool AsmParser::parseDirectiveBundleUnlock() {
- if (checkForValidSection() ||
- parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.bundle_unlock' directive"))
+ if (checkForValidSection() || parseEOL())
return true;
getStreamer().emitBundleUnlock();
if (parseOptionalToken(AsmToken::Comma))
if (parseAbsoluteExpression(FillExpr))
return addErrorSuffix("in '" + Twine(IDVal) + "' directive");
- if (parseToken(AsmToken::EndOfStatement))
+ if (parseEOL())
return addErrorSuffix("in '" + Twine(IDVal) + "' directive");
// FIXME: Sometimes the fill expr is 'nop' if it isn't supplied, instead of 0.
}
}
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.comm' or '.lcomm' directive"))
+ if (parseEOL())
return true;
// NOTE: a size of zero for a .comm should create a undefined symbol
SMLoc Loc = getLexer().getLoc();
StringRef Str = parseStringToEndOfStatement();
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.abort' directive"))
+ if (parseEOL())
return true;
if (Str.empty())
}
}
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.incbin' directive"))
+ if (parseEOL())
return true;
if (check(Skip < 0, SkipLoc, "skip is negative"))
eatToEndOfStatement();
} else {
int64_t ExprValue;
- if (parseAbsoluteExpression(ExprValue) ||
- parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.if' directive"))
+ if (parseAbsoluteExpression(ExprValue) || parseEOL())
return true;
switch (DirKind) {
} else {
StringRef Str = parseStringToEndOfStatement();
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.ifb' directive"))
+ if (parseEOL())
return true;
TheCondState.CondMet = ExpectBlank == Str.empty();
StringRef Str2 = parseStringToEndOfStatement();
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.ifc' directive"))
+ if (parseEOL())
return true;
TheCondState.CondMet = ExpectEqual == (Str1.trim() == Str2.trim());
eatToEndOfStatement();
} else {
if (check(parseIdentifier(Name), "expected identifier after '.ifdef'") ||
- parseToken(AsmToken::EndOfStatement, "unexpected token in '.ifdef'"))
+ parseEOL())
return true;
MCSymbol *Sym = getContext().lookupSymbol(Name);
if (parseAbsoluteExpression(ExprValue))
return true;
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.elseif' directive"))
+ if (parseEOL())
return true;
TheCondState.CondMet = ExprValue;
/// parseDirectiveElse
/// ::= .else
bool AsmParser::parseDirectiveElse(SMLoc DirectiveLoc) {
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.else' directive"))
+ if (parseEOL())
return true;
if (TheCondState.TheCond != AsmCond::IfCond &&
/// parseDirectiveEndIf
/// ::= .endif
bool AsmParser::parseDirectiveEndIf(SMLoc DirectiveLoc) {
- if (parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.endif' directive"))
+ if (parseEOL())
return true;
if ((TheCondState.TheCond == AsmCond::NoCond) || TheCondStack.empty())
}
bool AsmParser::parseDirectiveAddrsig() {
- if (parseToken(AsmToken::EndOfStatement))
+ if (parseEOL())
return true;
getStreamer().emitAddrsig();
return false;
bool AsmParser::parseDirectiveAddrsigSym() {
StringRef Name;
- if (check(parseIdentifier(Name), "expected identifier") ||
- parseToken(AsmToken::EndOfStatement))
+ if (check(parseIdentifier(Name), "expected identifier") || parseEOL())
return true;
MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
getStreamer().emitAddrsigSym(Sym);
// a = b
// b = c
- if (Parser.parseToken(AsmToken::EndOfStatement))
+ if (Parser.parseEOL())
return true;
// Validate that the LHS is allowed to be a variable (either it has not been
// RUN: not llvm-mc -triple aarch64-none-eabi %s 2>&1 | FileCheck %s
// RUN: not llvm-mc -triple aarch64-none-eabi %s 2>&1 | grep "error:" | count 60
- // CHECK: [[@LINE+1]]:19: error: unexpected token in '.equ' directive
+ // CHECK: [[#@LINE+1]]:19: error: expected newline
.equ ident1, 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.equ ident1, 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:19: error: unexpected token in '.equiv' directive
+ // CHECK: [[#@LINE+1]]:19: error: expected newline
.equiv ident2, 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.equiv ident2, 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:19: error: unexpected token in '.set' directive
+ // CHECK: [[#@LINE+1]]:19: error: expected newline
.set ident3, 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.set ident3, 0 // EOL COMMENT
.dc.d 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.dc.d 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:13: error: unexpected token in '.fill' directive
+ // CHECK: [[#@LINE+1]]:13: error: expected newline
.fill 1, 1 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.fill 1, 1 // EOL COMMENT
- // CHECK: [[@LINE+1]]:17: error: unexpected token in '.fill' directive
+ // CHECK: [[#@LINE+1]]:17: error: expected newline
.fill 1, 1, 10 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.fill 1, 1, 10 // EOL COMMENT
- // CHECK: [[@LINE+1]]:16: error: unexpected token in '.org' directive
+ // CHECK: [[#@LINE+1]]:16: error: expected newline
.org 1 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.org 1 // EOL COMMENT
- // CHECK: [[@LINE+1]]:11: error: unexpected token in directive
+ // CHECK: [[#@LINE+1]]:11: error: expected newline
.align 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.align 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:13: error: unexpected token in directive
+ // CHECK: [[#@LINE+1]]:13: error: expected newline
.align32 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.align32 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:12: error: unexpected token in directive
+ // CHECK: [[#@LINE+1]]:12: error: expected newline
.balign 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.balign 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:13: error: unexpected token in directive
+ // CHECK: [[#@LINE+1]]:13: error: expected newline
.balignw 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.balignw 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:13: error: unexpected token in directive
+ // CHECK: [[#@LINE+1]]:13: error: expected newline
.balignl 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.balignl 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:13: error: unexpected token in directive
+ // CHECK: [[#@LINE+1]]:13: error: expected newline
.p2align 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.p2align 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:14: error: unexpected token in directive
+ // CHECK: [[#@LINE+1]]:14: error: expected newline
.p2alignw 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.p2alignw 0 // EOL COMMENT
- // CHECK: [[@LINE+1]]:14: error: unexpected token in directive
+ // CHECK: [[#@LINE+1]]:14: error: expected newline
.p2alignl 0 $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.p2alignl 0 // EOL COMMENT
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.cfi_startproc // EOL COMMENT
.cfi_endproc
- // CHECK: [[@LINE+1]]:24: error: unexpected token in '.cfi_startproc' directive
+ // CHECK: [[#@LINE+1]]:24: error: expected newline
.cfi_startproc simple $
// CHECK-NOT: [[@LINE+1]]:{{[0-9]+}}: error:
.cfi_startproc simple // EOL COMMENT