mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-28 22:34:03 +08:00
re PR debug/33316 (ICE on valid variable-length automatic array in const struct)
PR debug/33316 * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL DECL_NAME. * dbxout.c (dbxout_type): Likewise. * gcc.dg/debug/pr33316.c: New test. From-SVN: r128631
This commit is contained in:
parent
4745e4eb75
commit
cc459ab40a
@ -1,5 +1,10 @@
|
||||
2007-09-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/33316
|
||||
* dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
|
||||
DECL_NAME.
|
||||
* dbxout.c (dbxout_type): Likewise.
|
||||
|
||||
PR c/33238
|
||||
PR c/27301
|
||||
* gimplify.c (gimplify_vla_decl): New function.
|
||||
|
@ -2029,7 +2029,11 @@ dbxout_type (tree type, int full)
|
||||
another type's definition; instead, output an xref
|
||||
and let the definition come when the name is defined. */
|
||||
stabstr_S ((TREE_CODE (type) == RECORD_TYPE) ? "xs" : "xu");
|
||||
if (TYPE_NAME (type) != 0)
|
||||
if (TYPE_NAME (type) != 0
|
||||
/* The C frontend creates for anonymous variable length
|
||||
records/unions TYPE_NAME with DECL_NAME NULL. */
|
||||
&& (TREE_CODE (TYPE_NAME (type)) != TYPE_DECL
|
||||
|| DECL_NAME (TYPE_NAME (type))))
|
||||
dbxout_type_name (type);
|
||||
else
|
||||
{
|
||||
|
@ -8724,7 +8724,8 @@ modified_type_die (tree type, int is_const_type, int is_volatile_type,
|
||||
don't output a DW_TAG_typedef, since there isn't one in the
|
||||
user's program; just attach a DW_AT_name to the type. */
|
||||
if (name
|
||||
&& (TREE_CODE (name) != TYPE_DECL || TREE_TYPE (name) == qualified_type))
|
||||
&& (TREE_CODE (name) != TYPE_DECL
|
||||
|| (TREE_TYPE (name) == qualified_type && DECL_NAME (name))))
|
||||
{
|
||||
if (TREE_CODE (name) == TYPE_DECL)
|
||||
/* Could just call add_name_and_src_coords_attributes here,
|
||||
|
@ -1,5 +1,8 @@
|
||||
2007-09-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/33316
|
||||
* gcc.dg/debug/pr33316.c: New test.
|
||||
|
||||
PR c++/33496
|
||||
* g++.dg/cpp0x/variadic76.C: New test.
|
||||
* g++.dg/cpp0x/variadic77.C: New test.
|
||||
|
15
gcc/testsuite/gcc.dg/debug/pr33316.c
Normal file
15
gcc/testsuite/gcc.dg/debug/pr33316.c
Normal file
@ -0,0 +1,15 @@
|
||||
/* PR debug/33316 */
|
||||
|
||||
int
|
||||
foo (void *x, int y)
|
||||
{
|
||||
const struct { int d[y]; } *a = x;
|
||||
return a[0].d[0];
|
||||
}
|
||||
|
||||
int
|
||||
bar (void *x, int y)
|
||||
{
|
||||
const struct S { int d[y]; } *a = x;
|
||||
return a[0].d[0];
|
||||
}
|
Loading…
Reference in New Issue
Block a user