From 792eaee2cb07b64e8f255209e93cf8d95bc0f705 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Tue, 6 Feb 2007 01:35:10 +0000 Subject: re PR debug/30189 (ICE on modified_type_die) gcc/ChangeLog: PR debug/30189 * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE even if cv-qualification is the same. gcc/testsuite/ChangeLog: PR debug/30189 * gcc.dg/pr30189.c: New test. From-SVN: r121638 --- gcc/ChangeLog | 6 ++++++ gcc/dwarf2out.c | 8 +++++--- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr30189.c | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr30189.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b09ca01..01aa9dc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-02-05 Alexandre Oliva + + PR debug/30189 + * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE + even if cv-qualification is the same. + 2007-02-05 Geoffrey Keating * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 186c979..d529d8c 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -8519,9 +8519,11 @@ modified_type_die (tree type, int is_const_type, int is_volatile_type, gen_type_die (qualified_type, context_die); return lookup_type_die (qualified_type); } - else if (DECL_ORIGINAL_TYPE (name) - && (is_const_type < TYPE_READONLY (dtype) - || is_volatile_type < TYPE_VOLATILE (dtype))) + else if (is_const_type < TYPE_READONLY (dtype) + || is_volatile_type < TYPE_VOLATILE (dtype) + || (is_const_type <= TYPE_READONLY (dtype) + && is_volatile_type <= TYPE_VOLATILE (dtype) + && DECL_ORIGINAL_TYPE (name) != type)) /* cv-unqualified version of named type. Just use the unnamed type to which it refers. */ return modified_type_die (DECL_ORIGINAL_TYPE (name), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9723b16..abfefcc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-02-05 Alexandre Oliva + + PR debug/30189 + * gcc.dg/pr30189.c: New test. + 2007-02-05 Dwarakanath Rajagopal * gcc.dg/i386-cpuid.h: Test whether SSE4A is supported diff --git a/gcc/testsuite/gcc.dg/pr30189.c b/gcc/testsuite/gcc.dg/pr30189.c new file mode 100644 index 0000000..6aa963e --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr30189.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-g -O" } */ + +extern void foo (void); + +static +void baz (int i) +{ + foo (); + typedef char A[i]; + struct { A b; } *x = 0; +} + +void +bar (i) +{ + baz (i); +} -- cgit v1.1