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 :-)

Reply via email to