This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: get_condition and conditional move


>   if (TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT
>       && did_reverse_condition && code != NE && code != EQ
>       && ! flag_fast_math                 
>       && GET_MODE_CLASS (GET_MODE (op0)) == MODE_FLOAT)                 
>     return 0;                                                           
> 
> That means
> 
> 	double x;
> 	int y;
> 	...
> 	if (x > 0.2)
> 	  y = 1;
> 
> will never turn into a conditional move for IEEE math and flag_fast_math
> is not zero. Any reasons for that?

No, read again.  This test applies only when flag_fast_math is zero.
Reversing a inequality comparison does not work correctly when handling NaNs.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]