https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96983
--- Comment #9 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> --- > --- Comment #8 from anlauf at gcc dot gnu.org --- > (In reply to Rainer Orth from comment #6) >> The test also FAIL on 64-bit SPARC with an ICE/SEGV: >> >> 0x67606b build_round_expr >> /vol/gcc/src/hg/master/local/gcc/fortran/trans-intrinsic.c:408 > > That's: > > arg = fold_convert (gfc_float128_type_node, arg); > > Can you find out what gfc_float128_type_node is on SPARC, I find Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1 (LWP 1)] 0x008edab4 in fold_convert_loc (loc=0, type=<tree 0x0>, arg=<optimized out>) at /vol/gcc/src/hg/master/local/gcc/fold-const.c:2404 2404 if (TREE_CODE (arg) == ERROR_MARK (gdb) p gfc_float128_type_node $1 = <tree 0x0> (gdb) up #1 0x0067606c in build_round_expr (restype= <integer_type 0xfb9f8600 integer(kind=16)>, arg=<var_decl 0xfa86bd90 x>) at /vol/gcc/src/hg/master/local/gcc/fortran/trans-intrinsic.c:408 408 arg = fold_convert (gfc_float128_type_node, arg); (gdb) p gfc_float128_type_node $2 = <tree 0x0> > and why the conversion fails? I've not the slightest idea how to do that. > There's apparently a real kind with mode_precision >= 128, > so we have to find out what it is, and if we can convert to it. I'd expect that's long double, which is IEEE128 on SPARC.