On 12/22/11 11:03 AM, James Cloos wrote:
"AC" == Alan Coopersmith<alan.coopersm...@oracle.com>  writes:

Should the call to floor(3) when lrint(3) is unavailable include a cast?

AC>  There's already casts at the call sites, though not always at the exact
AC>  same place:

AC>>  scale.table.x[(int) x] = (Position) myrint(sw->scale.scale_x * x);

AC>  (so they're now casting long int to short int, instead of double to short 
int).

I was thinking of the non-lrint(3) case; floor(3) returns a double, so
(Position)floor(...) should give the same error, yes?

Finally got back to looking at this.   From what I can tell in testing with
gcc 4.5.2, the way to silence the warning in the non-lrint case would be to
remove the cast.

With #define myrint(x) floor(x + 0.5):

        short foo = myrint(strtod(argv[i], NULL));

generates no warning, while

        short foo = (short) myrint(strtod(argv[i], NULL));

causes:

float-test.c:11:14: warning: cast from function call of type ‘double’ to non-matching type ‘short int’

So were you trying to suggest we remove the casts to quiet the non-lrint case?

--
        -Alan Coopersmith-        alan.coopersm...@oracle.com
         Oracle Solaris Platform Engineering: X Window System

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to