On Fri, 17 Aug 2007, Rask Ingemann Lambertsen wrote: > We start out with (eq (plus X A) 0):
> I want to hear some opinions on which form we should choose as the > canonical one. I'm proposing two forms: > > 1) (eq (neg X) Y) because the change to simplify_comparison will be simpler. > 2) (eq (plus X Y) 0) because that's the least surpricing form and the same > as used for other comparisons, avoiding needless insn pattern duplication. > > The arm and i386 back ends implement 1). > The c4x, i386, frv, rs6000, s390, score and sparc back ends implement 2). > The c4x back end also implements the (eq (X (neg Y)) form. > > I'm voting for 2). Me-too, for the reasons you mentioned and so this case wouldn't seem special anymore: > Note that when combining two instructions, of which one is a comparison > of the result of a previous instruction against zero and that result is > still needed after the comparison, combine knows not to mess with the > expression. What's special in this case is that we are really only > interested in the comparison result, so combine goes ahead and does the > simplifications. Unfortunately, the result is an expression which targets > aren't likely to have an instruction pattern for. brgds, H-P