1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/MC/AsmParser/directive_loc_2.s
Dmitry Preobrazhensky abab96c577 [MC][DWARF] Corrected handling of is_stmt flag in .loc directives
According to DWARF standard, is_stmt is a global flag; when set or cleared it should affect subsequent .loc directives.

However llvm assembler handled is_stmt differently: it forced all locations to have is_stmt=1 unless is_stmt was specified explicitly as 0.

The fix utilizes current DWARF state flags to compute correct is_stmt values.

See https://bugs.llvm.org/show_bug.cgi?id=45529 for a detailed issue description.

Reviewers: arsenm, probinson, enderby

Differential Revision: https://reviews.llvm.org/D78102
2020-04-20 13:57:49 +03:00

26 lines
647 B
ArmAsm

# RUN: llvm-mc -triple i386-unknown-unknown -filetype=obj %s -o %t
# RUN: llvm-dwarfdump -debug-line %t | FileCheck %s
.file 1 "test.c"
.loc 1 2
nop
.loc 1 4 is_stmt 0
nop
.loc 1 6
nop
.loc 1 8 is_stmt 1
nop
.loc 1 10
nop
# CHECK: .debug_line
# CHECK: file_names[ 1]:
# CHECK-NEXT: name: "test.c"
# CHECK-NEXT: dir_index: 0
# CHECK: 0x{{0+}}0 2 0 1 0 0 is_stmt
# CHECK: 0x{{0+}}1 4 0 1 0 0 {{$}}
# CHECK: 0x{{0+}}2 6 0 1 0 0 {{$}}
# CHECK: 0x{{0+}}3 8 0 1 0 0 is_stmt
# CHECK: 0x{{0+}}4 10 0 1 0 0 is_stmt
# CHECK: 0x{{0+}}5 10 0 1 0 0 is_stmt end_sequence