https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102018

--- Comment #6 from Christophe Lyon <clyon at gcc dot gnu.org> ---
Looking at dumps when compiling for cortex-m7 and cortex-m55, I  noticed a
difference in the first gimple trace (pr82692.c.007t.gimple).

For m7, we have:
_1 = x u> 0.0;
_2 = ~_1;
_3 = x u<= 1.0e+0;
_4 = ~_3;
_5 = _2 | _4;
if (_5 != 0) goto <D.6236>; else goto <D.6237>;
<D.6236>:
D.6238 = x * 2.0e+0;
return D.6238;
<D.6237>:
D.6238 = x * x;
return D.6238;


For m55, we have:
_1 = x u> 0.0;
_2 = ~_1;
if (_2 != 0) goto <D.6614>; else goto <D.6616>;
<D.6616>:
_3 = x u<= 1.0e+0;
_4 = ~_3;
if (_4 != 0) goto <D.6614>; else goto <D.6615>;
<D.6614>:
D.6617 = x * 2.0e+0;
return D.6617;
<D.6615>:
D.6617 = x * x;
return D.6617;

So for m55 (where the test passes), we have two FP comparisons, whereas for m7
we have only one comparison, on a boolean (_5 != 0), I suspect that's why we
later have a CCFP vs CCFPE.

Reply via email to