re PR debug/54499 (GCC produces wrong debugging information, failure while assembling...
authorJakub Jelinek <jakub@redhat.com>
Thu, 8 Nov 2012 20:15:06 +0000 (21:15 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 8 Nov 2012 20:15:06 +0000 (21:15 +0100)
PR debug/54499
* cgraphunit.c (assemble_thunk): Don't call source_line debug hook
here, instead call insn_locations_{init,finalize} and initialize
prologue_location.

* g++.dg/debug/pr54499.C: New test.

From-SVN: r193338

gcc/ChangeLog
gcc/cgraphunit.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/debug/pr54499.C [new file with mode: 0644]

index 1730844..c06016c 100644 (file)
@@ -1,3 +1,10 @@
+2012-11-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/54499
+       * cgraphunit.c (assemble_thunk): Don't call source_line debug hook
+       here, instead call insn_locations_{init,finalize} and initialize
+       prologue_location.
+
 2012-11-08  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
 
        PR driver/54789
index bf1326b..e14e52e 100644 (file)
@@ -1413,16 +1413,16 @@ assemble_thunk (struct cgraph_node *node)
       DECL_INITIAL (thunk_fndecl) = fn_block;
       init_function_start (thunk_fndecl);
       cfun->is_thunk = 1;
+      insn_locations_init ();
+      set_curr_insn_location (DECL_SOURCE_LOCATION (thunk_fndecl));
+      prologue_location = curr_insn_location ();
       assemble_start_function (thunk_fndecl, fnname);
-      (*debug_hooks->source_line) (DECL_SOURCE_LINE (thunk_fndecl),
-                                  DECL_SOURCE_FILE (thunk_fndecl),
-                                  /* discriminator */ 0,
-                                  /* is_stmt */ 1);
 
       targetm.asm_out.output_mi_thunk (asm_out_file, thunk_fndecl,
                                       fixed_offset, virtual_value, alias);
 
       assemble_end_function (thunk_fndecl, fnname);
+      insn_locations_finalize ();
       init_insn_lengths ();
       free_after_compilation (cfun);
       set_cfun (NULL);
index e9d319b..a93996c 100644 (file)
@@ -1,3 +1,8 @@
+2012-11-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/54499
+       * g++.dg/debug/pr54499.C: New test.
+
 2012-11-08  Jan Hubicka  <jh@suse.cz>
 
        PR middle-end/48636
diff --git a/gcc/testsuite/g++.dg/debug/pr54499.C b/gcc/testsuite/g++.dg/debug/pr54499.C
new file mode 100644 (file)
index 0000000..0f7ce3f
--- /dev/null
@@ -0,0 +1,22 @@
+// PR debug/54499
+// { dg-do assemble }
+
+struct S1
+{
+  virtual void f () = 0;
+};
+
+struct S2
+{
+  virtual ~S2 () { }
+};
+
+struct S3 : public S1, public S2
+{
+  void f ();
+};
+
+void
+S3::f ()
+{
+}