------- Comment #3 from danglin at gcc dot gnu dot org 2007-01-30 23:15 ------- It appears that the object pointed to by last_initializer is free'd by gfc_free_expr. This causes the change in value in initializer->value.integer[0]._mp_d:
(gdb) p &initializer->value.integer[0]._mp_d $16 = (mp_limb_t **) 0x400817e0 (gdb) watch *0x400817e0 Hardware watchpoint 3: *1074272224 (gdb) c Continuing. In file /mnt/gnu/gcc/gcc/gcc/testsuite/gfortran.dg/enum_2.f90:8 integer :: x ! { dg-error "Unexpected data declaration" } 1 Error: Unexpected data declaration statement at (1) Hardware watchpoint 3: *1074272224 Old value = 1074134928 New value = 0 0x7af697b4 in memset () from /usr/lib/libc.2 (gdb) bt #0 0x7af697b4 in memset () from /usr/lib/libc.2 #1 0x0004c7ec in free_expr0 (e=0x400817a8) at ../../gcc/gcc/fortran/expr.c:217 #2 0x0004c988 in gfc_free_expr (e=0x400817a8) at ../../gcc/gcc/fortran/expr.c:230 #3 0x0008b394 in gfc_free_symbol (sym=0x40081700) at ../../gcc/gcc/fortran/symbol.c:1859 #4 0x0008b7dc in gfc_undo_symbols () at ../../gcc/gcc/fortran/symbol.c:2175 #5 0x00070c1c in reject_statement () at ../../gcc/gcc/fortran/parse.c:1075 #6 0x00072d1c in parse_spec (st=ST_END_ENUM) at ../../gcc/gcc/fortran/parse.c:1402 #7 0x000742d0 in parse_progunit (st=1074272216) at ../../gcc/gcc/fortran/parse.c:2325 #8 0x00074748 in gfc_parse_file () at ../../gcc/gcc/fortran/parse.c:2621 #9 0x00095ec4 in gfc_be_parse_file (set_yydebug=1074272216) at ../../gcc/gcc/fortran/f95-lang.c:289 #10 0x0018aa2c in toplev_main (argc=1074013248, argv=0x40042c40) at ../../gcc/gcc/toplev.c:991 #11 0x000bf66c in main (argc=1074272216, argv=0x0) at ../../gcc/gcc/main.c:35 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30478