(Waking up an old thread with my 2 cents due to being a little behind on reading...)
On Sat, 6 Dec 2014, Jakub Jelinek wrote: > On Sat, Dec 06, 2014 at 09:28:57AM +0100, Uros Bizjak wrote: > > > That's already what it does though, did you mean the opposite? Or did you > > > mean to write "combine" instead of "compare"? > > > > The above should read "... that existing RTX *combine* pass be updated > > ...", thanks for pointing out! > > Which target actually uses the [(operation) (set (cc) ...)] order in their > *.md patterns? Even aarch64 and arm use the [(set (cc) ...) (operation)] > order that combine expects, I thought compare-elim was written for those > targets? If the vast majority of mds use the order that combine expects, > I think it should be easier to adjust compare-elim.c and those few targets > that diverge. The current cc-first order happened more of an accidental opinion than an architectural decision as I vaguely recall, when asking. We also have the canonical location of a *cc clobber*, i.e. last in a parallel. For that reason, it then makes sense to have the *cc-setting* last. Changing rebelling ports doesn't solve that inconsistency. So, my vote for canonically declaring the order non-canonical *and* automatically generating/matching both orders. brgds, H-P