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

--- Comment #12 from Segher Boessenkool <segher at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #8)> The failed match attempt
> (parallel [
>         (set (reg:QI 82 [ b_lsm_flag.26 ])
>             (and:QI (reg:QI 143)
>                 (reg:QI 145)))
>         (set (reg:CCZ 17 flags)
>             (compare:CCZ (and:QI (reg:QI 143)
>                     (reg:QI 145))
>                 (const_int 0 [0])))
>     ])
> actually looks almost good, except that it would need to try them in the
> other order in the parallel.
> I must say I forgot whether the flags first then operation ordering is now
> canonical everywhere, or whether some backends want one and others another
> one.

It is canonical, and has been since literally forever.  81ad201ac5f6 (from
2017)
makes this explicit in our documentation.  compare-elim.c used to get this
wrong, but it was fixed in 4f0473fe89e6 (also 2017).

> But I vaguely remember there are various passes that only work with the
> ordering x86 has.

Only compare-elim did.  It was fixed.

Reply via email to