the compiler dont show a warning about the win32 to win64 conversion in the following function, it would be great if the compiler report at least a warning about it

this function fail miserably in win64, and I have only detected it after the compilation and tests  

int
round_trick (float floatvalue_to_round)
{

float floattmp;
int rounded_value;

floattmp = (int) 0x00FD8000L + (floatvalue_to_round);
rounded_value = *(int *) (&floattmp) - (int) 0x4B7D8000L;

if (rounded_value != (short) rounded_value)
rounded_value = (rounded_value >> 31) ^ 0x7FFF;
return rounded_value ;
}