mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[MC] Consume EndOfStatement in .cfi_{sections,endproc}
Previously these directives were always interpreted as having an extra blank line after them. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D92612
This commit is contained in:
parent
4717c37c02
commit
9ea73ce446
@ -4077,6 +4077,9 @@ bool AsmParser::parseDirectiveCFISections() {
|
||||
Debug = true;
|
||||
}
|
||||
|
||||
if (parseToken(AsmToken::EndOfStatement))
|
||||
return addErrorSuffix(" in '.cfi_sections' directive");
|
||||
|
||||
getStreamer().emitCFISections(EH, Debug);
|
||||
return false;
|
||||
}
|
||||
@ -4104,6 +4107,8 @@ bool AsmParser::parseDirectiveCFIStartProc() {
|
||||
/// parseDirectiveCFIEndProc
|
||||
/// ::= .cfi_endproc
|
||||
bool AsmParser::parseDirectiveCFIEndProc() {
|
||||
if (parseToken(AsmToken::EndOfStatement))
|
||||
return addErrorSuffix(" in '.cfi_endproc' directive");
|
||||
getStreamer().emitCFIEndProc();
|
||||
return false;
|
||||
}
|
||||
|
15
test/MC/AsmParser/round-trip.s
Normal file
15
test/MC/AsmParser/round-trip.s
Normal file
@ -0,0 +1,15 @@
|
||||
# RUN: llvm-mc -preserve-comments -triple i386-unknown-unknown %s >%t-1.s
|
||||
# RUN: llvm-mc -preserve-comments -triple i386-unknown-unknown %t-1.s >%t-2.s
|
||||
# RUN: diff %t-1.s %t-2.s
|
||||
|
||||
# Test that various assembly round-trips when run through MC; the first
|
||||
# transition from hand-written to "canonical" output may introduce some small
|
||||
# differences, so we don't include the initial input in the comparison.
|
||||
|
||||
.text
|
||||
|
||||
# Some of these CFI instructions didn't consume the end of statement
|
||||
# consistently, which led to extra empty lines in the output.
|
||||
.cfi_sections .debug_frame
|
||||
.cfi_startproc
|
||||
.cfi_endproc
|
@ -1,4 +1,5 @@
|
||||
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -S --sr --sd - | FileCheck %s
|
||||
// RUN: not llvm-mc -triple=x86_64 -o - -defsym=ERR=1 %s 2>&1 | FileCheck %s --check-prefix=ERR
|
||||
|
||||
f1:
|
||||
.cfi_startproc
|
||||
@ -435,3 +436,20 @@ f37:
|
||||
// CHECK-NEXT: 0x6E4 R_X86_64_PC32 .text 0x21
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK: }
|
||||
|
||||
.ifdef ERR
|
||||
// ERR: [[#@LINE+1]]:15: error: Expected an identifier
|
||||
.cfi_sections $
|
||||
// ERR: [[#@LINE+1]]:28: error: unexpected token in '.cfi_sections' directive
|
||||
.cfi_sections .debug_frame $
|
||||
// ERR: [[#@LINE+1]]:39: error: unexpected token in '.cfi_sections' directive
|
||||
.cfi_sections .debug_frame, .eh_frame $
|
||||
|
||||
// ERR: [[#@LINE+1]]:16: error: unexpected token in '.cfi_startproc' directive
|
||||
.cfi_startproc $
|
||||
// ERR: [[#@LINE+1]]:23: error: unexpected token in '.cfi_startproc' directive
|
||||
.cfi_startproc simple $
|
||||
|
||||
// ERR: [[#@LINE+1]]:14: error: unexpected token in '.cfi_endproc' directive
|
||||
.cfi_endproc $
|
||||
.endif
|
||||
|
Loading…
Reference in New Issue
Block a user