re PR debug/83550 (Bad location of DW_TAG_structure_type with forward declaration since r224161)
PR debug/83550 * c-decl.c (finish_struct): Set DECL_SOURCE_LOCATION on TYPE_STUB_DECL and call rest_of_type_compilation before processing incomplete vars rather than after it. * c-c++-common/dwarf2/pr83550.c: New test. From-SVN: r255982
This commit is contained in:
parent
b4b883cee3
commit
b58d01a977
@ -1,3 +1,10 @@
|
||||
2017-12-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/83550
|
||||
* c-decl.c (finish_struct): Set DECL_SOURCE_LOCATION on
|
||||
TYPE_STUB_DECL and call rest_of_type_compilation before processing
|
||||
incomplete vars rather than after it.
|
||||
|
||||
2017-12-10 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
backport from trunk:
|
||||
|
@ -8123,6 +8123,14 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes,
|
||||
warning_at (loc, 0, "union cannot be made transparent");
|
||||
}
|
||||
|
||||
/* Update type location to the one of the definition, instead of e.g.
|
||||
a forward declaration. */
|
||||
if (TYPE_STUB_DECL (t))
|
||||
DECL_SOURCE_LOCATION (TYPE_STUB_DECL (t)) = loc;
|
||||
|
||||
/* Finish debugging output for this type. */
|
||||
rest_of_type_compilation (t, toplevel);
|
||||
|
||||
/* If this structure or union completes the type of any previous
|
||||
variable declaration, lay it out and output its rtl. */
|
||||
for (x = incomplete_vars; x; x = TREE_CHAIN (x))
|
||||
@ -8139,14 +8147,6 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes,
|
||||
}
|
||||
}
|
||||
|
||||
/* Update type location to the one of the definition, instead of e.g.
|
||||
a forward declaration. */
|
||||
if (TYPE_STUB_DECL (t))
|
||||
DECL_SOURCE_LOCATION (TYPE_STUB_DECL (t)) = loc;
|
||||
|
||||
/* Finish debugging output for this type. */
|
||||
rest_of_type_compilation (t, toplevel);
|
||||
|
||||
/* If we're inside a function proper, i.e. not file-scope and not still
|
||||
parsing parameters, then arrange for the size of a variable sized type
|
||||
to be bound now. */
|
||||
|
@ -1,5 +1,8 @@
|
||||
2017-12-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/83550
|
||||
* c-c++-common/dwarf2/pr83550.c: New test.
|
||||
|
||||
Backported from mainline
|
||||
2017-12-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
10
gcc/testsuite/c-c++-common/dwarf2/pr83550.c
Normal file
10
gcc/testsuite/c-c++-common/dwarf2/pr83550.c
Normal file
@ -0,0 +1,10 @@
|
||||
/* PR debug/83550 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-gdwarf -dA -fno-merge-debug-strings" } */
|
||||
|
||||
struct my_struct;
|
||||
extern struct my_struct s;
|
||||
struct my_struct { int a, b; };
|
||||
struct my_struct q;
|
||||
|
||||
/* { dg-final { scan-assembler "DW_TAG_structure_type\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"my_struct\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0x)?7\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
|
Loading…
Reference in New Issue
Block a user