[Bug middle-end/85740] Non-optimal determining maximum in a loop

dominiq at lps dot ens.fr gcc-bugzilla@gcc.gnu.org
Thu May 10 23:39:00 GMT 2018


--- Comment #3 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
> These functions are not functional equivalent.
> In the b.c, it records the max location but it is the last element which
> contains that value.  While in c.c, the first element which contains
> the value is recorded.
> (In reply to Andrew Pinski from comment #1)
> > These functions are not functional equivalent.
> To get them equivalent, you either need to use >= or <=.

Could you please elaborate?

The results seem to depend on the processor. On my Core i7 I get around 
430000000 cycles for both tests and -O2 or above, except -Ofast -funroll-loops
which gives around 260000000 cycles for the first test and 580000000 cycles for
the second one.

More information about the Gcc-bugs mailing list