This causes a performance regression in the xalancbmk SPECint2006 benchmark on s390x. At first sight, the produced asm output doesn't look too different but I'll have a closer look. Is the fwprop order supposed to have major performance implications?
Regards Robin > This changes it from PRE on the inverted graph to RPO order which works > better for loops and blocks with no path to exit. > > Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. > > Richard. > > 2016-08-22 Richard Biener <rguent...@suse.de> > > * tree-ssa-forwprop.c (pass_forwprop::execute): Use RPO order. > > Index: gcc/tree-ssa-forwprop.c > =================================================================== > --- gcc/tree-ssa-forwprop.c (revision 239607) > +++ gcc/tree-ssa-forwprop.c (working copy) > @@ -2099,7 +2099,8 @@ pass_forwprop::execute (function *fun) > lattice.create (num_ssa_names); > lattice.quick_grow_cleared (num_ssa_names); > int *postorder = XNEWVEC (int, n_basic_blocks_for_fn (fun)); > - int postorder_num = inverted_post_order_compute (postorder); > + int postorder_num = pre_and_rev_post_order_compute_fn (cfun, NULL, > + postorder, false); > auto_vec<gimple *, 4> to_fixup; > to_purge = BITMAP_ALLOC (NULL); > for (int i = 0; i < postorder_num; ++i) >