https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123202
--- Comment #6 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot
Uni-Bielefeld.DE> ---
> --- Comment #5 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot
> Uni-Bielefeld.DE> ---
>> --- Comment #1 from Iain Buclaw <ibuclaw at gcc dot gnu.org> ---
>> I guess if you compile the test with -v the list of predefs printed includes
>> D_SoftFloat instead of D_HardFloat?
>
> It doesn't: instead there's
>
> predefs Shared StdUnittest GNU D_Version2 BigEndian GNU_DWARF2_Exceptions
> GNU_StackGrowsDown GNU_InlineAsm unittest assert D_PreConditions
> D_PostConditions D_Invariants D_ModuleInfo D_Exceptions D_TypeInfo D_Optimized
> all SPARC SPARC_V8Plus D_HardFloat SPARC_HardFloat Posix Solaris
> CppRuntime_GNU
> CppRuntime_Gcc
Looking more closely now, I think the error happens because in
std/math/hardware.d IeeeFlagsSupport is missing on SPARC, thus no
FloatingPointControlSupport.
This matches (in getIeeeFlags)
else version (SPARC)
{
/*
int retval;
asm pure nothrow @nogc { st %fsr, retval; }
return retval;
*/
assert(0, "Not yet supported");
}
resp. in resetIeeeFlags
else
{
/* SPARC:
int tmpval;
asm pure nothrow @nogc { st %fsr, tmpval; }
tmpval &=0xFFFF_FC00;
asm pure nothrow @nogc { ld tmpval, %fsr; }
*/
assert(0, "Not yet supported");
}
Haven't looked more closely yet (time for bed :-)