re PR debug/54499 (GCC produces wrong debugging information, failure while assembling generated .s file)
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
This commit is contained in:
parent
3ad2d621f5
commit
68a5598093
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
22
gcc/testsuite/g++.dg/debug/pr54499.C
Normal file
22
gcc/testsuite/g++.dg/debug/pr54499.C
Normal file
@ -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 ()
|
||||
{
|
||||
}
|
Loading…
Reference in New Issue
Block a user