[PATCH] D78102: [MC][DWARF] Corrected handling of is_stmt flag in .loc directives

Dmitry Preobrazhensky via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 17 04:50:07 PDT 2020


dp updated this revision to Diff 258288.
dp edited the summary of this revision.
dp added a comment.

Updated as suggested by Paul and Matt. Thank you for your help!


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D78102/new/

https://reviews.llvm.org/D78102

Files:
  llvm/lib/MC/MCParser/AsmParser.cpp
  llvm/lib/MC/MCParser/MasmParser.cpp
  llvm/test/MC/AsmParser/directive_loc_2.s


Index: llvm/test/MC/AsmParser/directive_loc_2.s
===================================================================
--- /dev/null
+++ llvm/test/MC/AsmParser/directive_loc_2.s
@@ -0,0 +1,25 @@
+# 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
Index: llvm/lib/MC/MCParser/MasmParser.cpp
===================================================================
--- llvm/lib/MC/MCParser/MasmParser.cpp
+++ llvm/lib/MC/MCParser/MasmParser.cpp
@@ -3235,7 +3235,8 @@
     Lex();
   }
 
-  unsigned Flags = DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0;
+  auto PrevFlags = getContext().getCurrentDwarfLoc().getFlags();
+  unsigned Flags = PrevFlags & DWARF2_FLAG_IS_STMT;
   unsigned Isa = 0;
   int64_t Discriminator = 0;
 
Index: llvm/lib/MC/MCParser/AsmParser.cpp
===================================================================
--- llvm/lib/MC/MCParser/AsmParser.cpp
+++ llvm/lib/MC/MCParser/AsmParser.cpp
@@ -3528,7 +3528,8 @@
     Lex();
   }
 
-  unsigned Flags = DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0;
+  auto PrevFlags = getContext().getCurrentDwarfLoc().getFlags();
+  unsigned Flags = PrevFlags & DWARF2_FLAG_IS_STMT;
   unsigned Isa = 0;
   int64_t Discriminator = 0;
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D78102.258288.patch
Type: text/x-patch
Size: 1819 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200417/35ad10f8/attachment.bin>


More information about the llvm-commits mailing list