My guess is that the ARM compiler does not like 64-bit values in
conditional expressions.  The following C snippet:

        typedef unsigned long long      uvlong;
        
        uvlong uvinf    = ((uvlong)0x7FF00000<<32)|0x00000000;
        uvlong uvneginf = ((uvlong)0xFFF00000<<32)|0x00000000;
        
        double u2d(uvlong v);
        
        double
        __Inf(int sign)
        {
                return u2d(sign < 0 ? uvneginf : uvinf);
        }

compiled with 8c seems OK, but with 5c causes an error:

        % 5c -FTVw /tmp/nan64.c
        /tmp/nan64.c:11 unknown vlong LIST

Using an if statement seems to get rid of the problem.

++L


Reply via email to