This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/33679] New: Fortran front-end miscompiled?
- From: "fxcoudert at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 6 Oct 2007 16:02:56 -0000
- Subject: [Bug middle-end/33679] New: Fortran front-end miscompiled?
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
This one has me quite puzzled. Starting between 2007-10-02 and 2007-10-03, I
haven't been able to bootstrap with Fortran enabled due to an ICE in the
Fortran compiler for very simple testcases:
$ cat foo.f90
integer function foo ()
end function
$ ./f951 foo.f90
foo.f90:1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
$ ./gfortran -v
Using built-in specs.
Target: i386-pc-linux-gnu
Configured with: ../gfortran_nightbuild/trunk/configure --prefix=/tmp
--with-gmp=/home/fx/gfortran_nightbuild/software --enable-languages=c,fortran
--build=i386-pc-linux-gnu --enable-checking=release
Thread model: posix
gcc version 4.3.0 20071005 (experimental) [trunk revision 129029] (GCC)
This ICE happens all over libgfortran, which is why it breaks bootstrap. All
functions are broken, while subroutines (which return void) work fine. I doubt
that we've broken the Fortran front-end so thouroughly that it can't compile
any function on i386, yet works fine on all other targets (including i686), so
I suppose it is miscompiled. I can get a backtrace:
Program received signal SIGSEGV, Segmentation fault.
build_function_type (value_type=0x0, arg_types=0x0)
at ../../gfortran_nightbuild/trunk/gcc/tree.c:5787
5787 if (TREE_CODE (value_type) == FUNCTION_TYPE)
(gdb) bt
#0 build_function_type (value_type=0x0, arg_types=0x0)
at ../../gfortran_nightbuild/trunk/gcc/tree.c:5787
#1 0x080d9564 in gfc_get_function_type (sym=0x86b7860)
at ../../gfortran_nightbuild/trunk/gcc/fortran/trans-types.c:2039
#2 0x080bd975 in build_function_decl (sym=0x86b7860)
at ../../gfortran_nightbuild/trunk/gcc/fortran/trans-decl.c:1237
#3 0x080bea12 in gfc_create_function_decl (ns=0x873a4c8)
at ../../gfortran_nightbuild/trunk/gcc/fortran/trans-decl.c:1793
#4 0x080bfbf8 in gfc_generate_function_code (ns=0x873a4c8)
at ../../gfortran_nightbuild/trunk/gcc/fortran/trans-decl.c:3139
#5 0x08089b02 in gfc_parse_file ()
at ../../gfortran_nightbuild/trunk/gcc/fortran/parse.c:3384
but I can't get any further, because gdb becomes crazy:
(gdb) b gfc_sym_type
Breakpoint 1 at 0x80d9288: file
../../gfortran_nightbuild/trunk/gcc/fortran/trans-types.c, line 1539.
(gdb) r
Starting program: /home/fx/ibin/gcc/f951 a.f90
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0x80d9288: Input/output error.
Cannot insert breakpoint -3.
Temporarily disabling shared library breakpoints:
breakpoint #-3
The symbol looks OK, but gfc_sym_type() apparently returns a NULL_TREE, which
is not OK. I've followed that code path and function called from there, all the
way down to gfc_get_int_type(), and it looks fine.
--
Summary: Fortran front-end miscompiled?
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: wrong-code, ice-on-valid-code
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: fxcoudert at gcc dot gnu dot org
GCC build triplet: i386-pc-linux-gnu
GCC host triplet: i386-pc-linux-gnu
GCC target triplet: i386-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33679