Hello, so there seems to be a fallout caused by moving peephole2 pass. See PR/61608. So we need indeed 2 peephole2 passes.
ChangeLog 2014-06-25 Kai Tietz <kti...@redhat.com> PR rtl-optimization/61608 * passes.def (peephole2): Readd peephole2 pass before if-after-reload pass. Tested for arm*-none-*, i686-w64-cygwin, x86_64-unknown-linux-gnu. Ok for apply? Regards, Kai Index: passes.def =================================================================== --- passes.def (Revision 211971) +++ passes.def (Arbeitskopie) @@ -396,6 +396,7 @@ along with GCC; see the file COPYING3. If not see NEXT_PASS (pass_rtl_dse2); NEXT_PASS (pass_stack_adjustments); NEXT_PASS (pass_jump2); + NEXT_PASS (pass_peephole2); NEXT_PASS (pass_if_after_reload); NEXT_PASS (pass_regrename); NEXT_PASS (pass_cprop_hardreg); @@ -407,8 +408,7 @@ along with GCC; see the file COPYING3. If not see We have a single indirect branch in the entire function before duplicate-compute-gotos pass. This vastly reduces the size of the CFG. - For preventing to run peephole2 pass twice, its run after - the jump2 got removed. */ + We need to run peephole2 pass twice. See PR/61608. */ NEXT_PASS (pass_peephole2); NEXT_PASS (pass_branch_target_load_optimize2); NEXT_PASS (pass_leaf_regs);