Here's a very slightly revised patch, fixing a couple of bugs found
during GDB testing.

In out_logical_entry, I should pass along the value of is_stmt when
creating a logical for the calling context, so that we get a
breakpoint location for the point of call:

       context = out_logical_entry (table, caller_file_num, s.line,
                                   caller_discrim, block->caller,
+                                  is_stmt, true);

And later in out_logical_entry, I should set table->is_stmt only when
we explicitly set is_stmt in the assembly output:

       if (is_stmt != table->is_stmt)
        {
          fputs (" is_stmt ", asm_out_file);
          putc (is_stmt ? '1' : '0', asm_out_file);
+         table->is_stmt = is_stmt;
        }

Instead of at the bottom of the function:

   table->file_num = file_num;
   table->line_num = line_num;
   table->discrim_num = discriminator;
-  table->is_stmt = is_stmt;
   table->in_use = true;

This sometimes caused lines where is_stmt should have been set to be
marked is_stmt == 0 because we thought it was already set.

-cary

Attachment: patch-two-level-2
Description: Binary data

Reply via email to