dwarf2: Set DW_AT_declaration for undefined fns [PR97060]
If DECL_INITIAL isn't set, we can't emit anything about the body of the function, so add the declaration attribute. gcc/ChangeLog: PR debug/97060 * dwarf2out.c (gen_subprogram_die): It's a declaration if DECL_INITIAL isn't set. gcc/testsuite/ChangeLog: PR debug/97060 * gcc.dg/debug/dwarf2/pr97060.c: New test.
This commit is contained in:
parent
d33bc98f5b
commit
87b7d45e35
2 changed files with 14 additions and 0 deletions
|
@ -22859,6 +22859,7 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
|
|||
available.
|
||||
*/
|
||||
int declaration = (current_function_decl != decl
|
||||
|| (!DECL_INITIAL (decl) && !origin)
|
||||
|| class_or_namespace_scope_p (context_die));
|
||||
|
||||
/* A declaration that has been previously dumped needs no
|
||||
|
|
13
gcc/testsuite/gcc.dg/debug/dwarf2/pr97060.c
Normal file
13
gcc/testsuite/gcc.dg/debug/dwarf2/pr97060.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* PR debug/97060 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-g -dA" } */
|
||||
/* { dg-final { scan-assembler-times "DW_AT_declaration" 2 } } */
|
||||
|
||||
extern int foo (unsigned int, unsigned int);
|
||||
|
||||
int
|
||||
bar (void)
|
||||
{
|
||||
foo (1, 2);
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue