Fix for PR 15235 libgfortran doesn't build on Solaris
Rainer Orth
ro@TechFak.Uni-Bielefeld.DE
Mon May 17 16:12:00 GMT 2004
Tobias Schlüter writes:
> And boy, do they look bad. From
> http://gcc.gnu.org/ml/gcc-testresults/2004-05/msg00823.html:
>
> === gfortran Summary ===
>
> # of expected passes 281
> # of unexpected failures 1285
> # of untested testcases 1278
>
> Rainer, do all those testcases which fail at -O0 fail in the same way?
mostly, yes: I wanted to report this anyway:
I've got a couple of failures with ICEs:
FAIL: gfortran.fortran-torture/compile/actual.f90, -O2
/vol/gnu/src/gcc/gcc-dist/gcc/testsuite/gfortran.fortran-torture/compile/actual.f90: In function `MAIN__':
/vol/gnu/src/gcc/gcc-dist/gcc/testsuite/gfortran.fortran-torture/compile/actual.f90:8: error: Missing callgraph edge for call expr:
<call_expr ceabc8c4
type <real_type ceab7d24 real4 SF
size <integer_cst ce9baf00 constant invariant 32>
unit size <integer_cst ce9baf18 constant invariant 4>
align 32 symtab 0 alias set 2 precision 32
pointer_to_this <pointer_type ceab7e80> reference_to_this <reference_type ce9b79f8>>
side-effects
arg 0 <addr_expr ce9b69c0
type <pointer_type ce9b8000 type <function_type ce9b7a6c>
unsigned SI
size <integer_cst ceab3df8 constant invariant 32>
unit size <integer_cst ceab3e58 constant invariant 4>
align 32 symtab 0 alias set -1>
constant invariant
arg 0 <function_decl ce9b8658 fun type <function_type ce9b7a6c>
addressable public external QI file /vol/gnu/src/gcc/gcc-dist/gcc/testsuite/gfortran.fortran-torture/compile/actual.f90 line 21 chain <function_decl ce9b7e0c MAIN__>>>
arg 1 <tree_list ce9bae28
value <var_decl ce9bd414 a.0 type <pointer_type ceab7e80>
used unsigned ignored SI file /vol/gnu/src/gcc/gcc-dist/gcc/testsuite/gfortran.fortran-torture/compile/actual.f90 line 35
size <integer_cst ce9bac30 constant invariant 32>
unit size <integer_cst ce9bac48 constant invariant 4>
align 32 context <function_decl ce9b7e0c MAIN__> abstract_origin <var_decl ce9b8488 a.0> chain <var_decl ce9bd3a0 __result_foo>>>
/vol/gnu/src/gcc/gcc-dist/gcc/testsuite/gfortran.fortran-torture/compile/actual.f90:35>
MAIN__/2: 21 insns (33 after inlining) needed tree
called by:
calls:
/vol/gnu/src/gcc/gcc-dist/gcc/testsuite/gfortran.fortran-torture/compile/actual.f90:8: internal compiler error: verify_cgraph_node failed.
but most of the failures are like this:
FAIL: gfortran.fortran-torture/execute/a_edit_1.f90 compilation, -O0
Undefined first referenced
symbol in file
__builtin_isinf /amnt/figaro/volumes/obj-gcc/gcc/obj.sol86/gcc-3.5.0-20040517/10-gcc/i386-pc-solaris2.10//libgfortran/.libs/libgfortran.so
ld: fatal: Symbol referencing errors. No output written to /vol/gcc/obj/gcc-3.5.0-20040517/10-gcc/gcc/testsuite/a_edit_1.x
collect2: ld returned 1 exit status
The reference stems from libgfortran/write.c where isinf() is used
unconditionally in write_float. It expands to __builtin_isinf via <math.h>
-> <iso/math_c99.h>, but GCC doesn't provide __builtin_isinf. You will get
a similar failure on Solaris 8/9, where isinf() doesn't exist at all.
As I said, libgfortran/g95 cannot just assume a C99 environment; they are
far too rare even these days to be relied upon.
Rainer
-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University
More information about the Fortran
mailing list