https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118714
Bug ID: 118714 Summary: [15 regression] SIGBUS in parse.cc:unexpected_eof Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: ro at gcc dot gnu.org CC: sandra at gcc dot gnu.org Target Milestone: --- Target: sparc-sun-solaris2.11 Between 20250130 (9ba2de71815c0ea6cc940ecb50af7cc1a84579f7) and 20250131 (9e3ceed8d50912e271e84389ed80aeea47184e59), one test regressed on Solaris/SPARC (32 and 64-bit): +FAIL: gfortran.dg/gomp/adjust-args-9.f90 -O (internal compiler error: Bus Error) /vol/gcc/src/hg/master/local/gcc/testsuite/gfortran.dg/gomp/adjust-args-9.f90:22:7: Error: āgā at (1) is not a variable /vol/gcc/src/hg/master/local/gcc/testsuite/gfortran.dg/gomp/adjust-args-9.f90:24:4: Error: Unexpected END statement at (1) f951: Error: Unexpected end of file in ā/vol/gcc/src/hg/master/local/gcc/testsuite/gfortran.dg/gomp/adjust-args-9.f90ā f951: internal compiler error: Bus Error 0x213e1af internal_error(char const*, ...) /vol/gcc/src/hg/master/local/gcc/diagnostic-global-context.cc:517 0x11245f7 crash_signal /vol/gcc/src/hg/master/local/gcc/toplev.cc:322 0x89aac0 unexpected_eof /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:3424 0x8abb53 parse_select_block /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:4819 0x8abb53 parse_executable /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:6576 0x8ac49b parse_progunit /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:6949 0x8ae0a3 gfc_parse_file() /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:7513 0x911337 gfc_be_parse_file /vol/gcc/src/hg/master/local/gcc/fortran/f95-lang.cc:241 This can be reproduced with $ f951 adjust-args-9.f90 -quiet -mcpu=v9 -fopenmp gdb shows Thread 2 received signal SIGBUS, Bus error. [Switching to Thread 1 (LWP 1)] 0x0089aac0 in unexpected_eof () at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:3424 3424 for (p = gfc_state_stack; p && p->previous && p->previous->previous; (gdb) bt #0 0x0089aac0 in unexpected_eof () at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:3424 #1 0x008abb54 in parse_select_block () at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:4819 #2 parse_executable (st=<optimized out>) at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:6576 #3 0x008ac49c in parse_progunit (st=ST_OMP_DISPATCH) at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:6949 #4 0x008ae0a4 in gfc_parse_file () at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:7513 #5 0x00911338 in gfc_be_parse_file () at /vol/gcc/src/hg/master/local/gcc/fortran/f95-lang.cc:241 #6 0x01124bac in compile_file () at /vol/gcc/src/hg/master/local/gcc/toplev.cc:452 #7 0x01128a68 in do_compile () at /vol/gcc/src/hg/master/local/gcc/toplev.cc:2208 #8 toplev::main (this=<optimized out>, argc=<optimized out>, argv=<optimized out>) at /vol/gcc/src/hg/master/local/gcc/toplev.cc:2368 #9 0x020f90f4 in main (argc=5, argv=0xffbfeb8c) at /vol/gcc/src/hg/master/local/gcc/main.cc:39 gdb) p p $1 = <optimized out> (gdb) p gfc_state_stack $3 = (gfc_state_data *) 0xffbfe6d0 (gdb) p $3->previous $4 = (gfc_state_data *) 0x5e Obviously, p->previous is invalid. This is almost certainly due to commit 8fbccdb3425e7fc9194d3f02e4a53f3e85cd1a4e Author: Sandra Loosemore <sloosem...@baylibre.com> Date: Thu Jan 30 17:03:06 2025 +0000 OpenMP: Fortran support for metadirectives and dynamic selectors