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