[PATCH] D60364: [DWARF] Set discriminator to 0 for DW_LNS_copy

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 10 18:58:47 PDT 2019


MaskRay updated this revision to Diff 194628.
MaskRay added a comment.

Rebase and fix DW_LNCT_directory_index in the test (2 -> 0)


Repository:
  rL LLVM

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

https://reviews.llvm.org/D60364

Files:
  lib/DebugInfo/DWARF/DWARFDebugLine.cpp
  test/tools/llvm-dwarfdump/X86/debug-line-dw-lns-copy.s


Index: test/tools/llvm-dwarfdump/X86/debug-line-dw-lns-copy.s
===================================================================
--- /dev/null
+++ test/tools/llvm-dwarfdump/X86/debug-line-dw-lns-copy.s
@@ -0,0 +1,47 @@
+# RUN: llvm-mc -filetype obj -triple x86_64-pc-linux %s -o %t.o
+# RUN: llvm-dwarfdump -debug-line %t.o | FileCheck %s
+
+# CHECK:      Address            Line   Column File   ISA Discriminator Flags
+# CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- -------------
+# CHECK-NEXT: 0x0000000000000000      1      0      1   0             1  is_stmt
+# CHECK-NEXT: 0x0000000000000001      2      0      1   0             0  is_stmt
+# CHECK-NEXT: 0x0000000000000001      2      0      1   0             0  is_stmt end_sequence
+
+.section .debug_line,"", at progbits
+.Line_table_start0:
+  .long   .Line_table_end0-.Line_table_start0-4   # Length of Unit
+  .short  5               # DWARF version number
+  .byte   8               # Address Size
+  .byte   0               # Segment Selector Size
+  .long   .Line_table_header_end0-.Line_table_params0     # Length of Prologue
+.Line_table_params0:
+  .byte   1               # Minimum Instruction Length
+  .byte   1               # Maximum Operations per Instruction
+  .byte   1               # Default is_stmt
+  .byte   -5              # Line Base
+  .byte   14              # Line Range
+  .byte   13              # Opcode Base
+  .byte   0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 # Standard Opcode Lengths
+  # Directory table format
+  .byte   1               # One element per directory entry
+  .byte   1               # DW_LNCT_path
+  .byte   0x08            # DW_FORM_string
+  # Directory table entries
+  .byte   1               # 1 directory
+  .asciz  "/tmp"
+  # File table format
+  .byte   2               # 2 elements per file entry
+  .byte   1               # DW_LNCT_path
+  .byte   0x08            # DW_FORM_string
+  .byte   0               # DW_LNCT_directory_index
+  .byte   0x0b            # DW_FORM_data1
+  # File table entries
+  .byte   1               # 1 file
+  .asciz  "a.c"
+  .byte   0
+.Line_table_header_end0:
+  .byte   0,2,4,1         # DW_LNE_set_discriminator 1
+  .byte   1               # DW_LNS_copy
+  .byte   33              # address += 1, line += 1
+  .byte   0,1,1           # DW_LNE_end_sequence
+.Line_table_end0:
Index: lib/DebugInfo/DWARF/DWARFDebugLine.cpp
===================================================================
--- lib/DebugInfo/DWARF/DWARFDebugLine.cpp
+++ lib/DebugInfo/DWARF/DWARFDebugLine.cpp
@@ -347,6 +347,7 @@
 DWARFDebugLine::Row::Row(bool DefaultIsStmt) { reset(DefaultIsStmt); }
 
 void DWARFDebugLine::Row::postAppend() {
+  Discriminator = 0;
   BasicBlock = false;
   PrologueEnd = false;
   EpilogueBegin = false;
@@ -640,15 +641,14 @@
       // Standard Opcodes
       case DW_LNS_copy:
         // Takes no arguments. Append a row to the matrix using the
-        // current values of the state-machine registers. Then set
-        // the basic_block register to false.
-        State.appendRowToMatrix();
+        // current values of the state-machine registers.
         if (OS) {
           *OS << "\n";
           OS->indent(12);
           State.Row.dump(*OS);
           *OS << "\n";
         }
+        State.appendRowToMatrix();
         break;
 
       case DW_LNS_advance_pc:
@@ -828,8 +828,6 @@
       }
 
       State.appendRowToMatrix();
-      // Reset discriminator to 0.
-      State.Row.Discriminator = 0;
     }
     if(OS)
       *OS << "\n";


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60364.194628.patch
Type: text/x-patch
Size: 3534 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190411/c9de1f6b/attachment.bin>


More information about the llvm-commits mailing list