From looking at bugs which were fixed for 3.5.0 which were done on the RTL, I noticed this one (From PR 5263). int f(int a,int b) { return a&b~a&~b; }
Confirmed.
I have a patch for this
Fixed by: 2005-12-12 Jeff Law <law@redhat.com> * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Remove reassociation code. * passes.c (init_optimization_passes): Run reassociation again after loop optimizations. 2005-12-12 Daniel Berlin <dberlin@dberlin.org> * tree-ssa-dom.c (thread_across_edge): Canonicalize condition if necessary. (optimize_stmt): Ditto. (canonicalize_comparison): New function. * tree-ssa-operands.c (swap_tree_operands): Make external. (get_expr_operands): Stop auto-canonicalization. * tree-ssa-reassoc.c: Rewrite. (init_optimization_passes): * tree-flow.h (swap_tree_operands): Prototype. * Makefile.in (tree-ssa-reassoc.o): Update dependencies.