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.

Reply via email to