take the following example: int f(int i, int j, int k, int l) { int r1 = (i+j)+(k+l); int r2 = (j+k)+(l+i); return r1 == r2; } This should return 1 all the time. I found this while making testcases for reassoc working fp (well I just change one little thing to make it work really).
Subject: Re: New: reassoc does not handle (i+j)+(k+l) well On Tue, 2005-07-05 at 18:33 +0000, pinskia at gcc dot gnu dot org wrote: > take the following example: > int f(int i, int j, int k, int l) > { > int r1 = (i+j)+(k+l); > int r2 = (j+k)+(l+i); > return r1 == r2; > } > > This should return 1 all the time. I found this while making testcases for reassoc working fp (well I just > change one little thing to make it work really). We can't do a full top-down reassocation because update_stmt reorders our operands so we lose information about which is the high ranked operand, etc. It's a pain in the ass to fix, but possible. >
Confirmed then.
Fixed.