mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-22 13:29:44 +00:00
ARM: use a more precise check for MachO
Rather than relying on support for a specific directive to determine if we are targeting MachO, explicitly check the output format. As an additional bonus, cleanup the caret diagnostic for the non-MachO case and avoid the spurious error caused by not discarding the statement. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218012 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
710fc316fb
commit
5bf65590d0
@ -8473,12 +8473,12 @@ void ARMAsmParser::onLabelParsed(MCSymbol *Symbol) {
|
||||
/// parseDirectiveThumbFunc
|
||||
/// ::= .thumbfunc symbol_name
|
||||
bool ARMAsmParser::parseDirectiveThumbFunc(SMLoc L) {
|
||||
const MCAsmInfo *MAI = getParser().getStreamer().getContext().getAsmInfo();
|
||||
bool isMachO = MAI->hasSubsectionsViaSymbols();
|
||||
const auto Format = getContext().getObjectFileInfo()->getObjectFileType();
|
||||
bool IsMachO = Format == MCObjectFileInfo::IsMachO;
|
||||
|
||||
// Darwin asm has (optionally) function name after .thumb_func direction
|
||||
// ELF doesn't
|
||||
if (isMachO) {
|
||||
if (IsMachO) {
|
||||
const AsmToken &Tok = Parser.getTok();
|
||||
if (Tok.isNot(AsmToken::EndOfStatement)) {
|
||||
if (Tok.isNot(AsmToken::Identifier) && Tok.isNot(AsmToken::String)) {
|
||||
@ -8495,7 +8495,8 @@ bool ARMAsmParser::parseDirectiveThumbFunc(SMLoc L) {
|
||||
}
|
||||
|
||||
if (getLexer().isNot(AsmToken::EndOfStatement)) {
|
||||
Error(L, "unexpected token in directive");
|
||||
Error(Parser.getTok().getLoc(), "unexpected token in directive");
|
||||
Parser.eatToEndOfStatement();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
22
test/MC/ARM/directive-thumb_func.s
Normal file
22
test/MC/ARM/directive-thumb_func.s
Normal file
@ -0,0 +1,22 @@
|
||||
@ RUN: not llvm-mc -triple armv7-eabi -filetype asm -o /dev/null %s 2>&1 \
|
||||
@ RUN: | FileCheck %s -check-prefix CHECK-EABI
|
||||
|
||||
@ NOTE: this test ensures that both forms are accepted for MachO
|
||||
@ RUN: llvm-mc -triple armv7-darwin -filetype asm -o /dev/null %s
|
||||
|
||||
.syntax unified
|
||||
|
||||
.thumb_func
|
||||
no_suffix:
|
||||
bx lr
|
||||
|
||||
.thumb_func suffix
|
||||
suffix:
|
||||
bx lr
|
||||
|
||||
// CHECK-EABI: error: unexpected token in directive
|
||||
// CHECK-EABI: .thumb_func suffix
|
||||
// CHECK-EABI: ^
|
||||
|
||||
// CHECK-EABI-NOT: error: invalid instruction
|
||||
|
Loading…
x
Reference in New Issue
Block a user