c++/9642: ICE on variable redeclaration

ebotcazou@libertysurf.fr ebotcazou@libertysurf.fr
Mon Feb 10 08:06:00 GMT 2003

>Number:         9642
>Category:       c++
>Synopsis:       ICE on variable redeclaration
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-illegal-code
>Submitter-Id:   net
>Arrival-Date:   Mon Feb 10 08:06:00 UTC 2003
>Originator:     Eric Botcazou
>Release:        gcc 3.2.3 prerelease
RedHat 7.3/i586.
The following code triggers an ICE:

void foo(void)
  char c;
  int i;
  int c = i;

gcc-3.2.3 -c -x c++ decl-2.c
decl-2.c: In function `void foo()':
decl-2.c:9: conflicting types for `int c'
decl-2.c:7: previous declaration as `char c'
decl-2.c:7: Internal compiler error in make_decl_rtl, at varasm.c:834
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

See PR c/7741 (the C front-end counterpart) for the analysis.
Compile the code snippet.
The fix applied to the C front-end is to discard the initializer on the second declaration. I don't know if this is relevant for the C++ front-end.

More information about the Gcc-bugs mailing list