diff mbox series

[rs6000] Process deferred rescans between mini-passes

Message ID 13347f13-5ffa-bd7f-813b-e610e76816a3@linux.vnet.ibm.com
State New
Headers show
Series [rs6000] Process deferred rescans between mini-passes | expand

Commit Message

Bill Schmidt Oct. 4, 2017, 9:44 p.m. UTC
Hi,

The Power8 swap optimization pass contains a mini-pass to replace certain
patterns prior to swap optimization proper.  In order for this not to
distort the dataflow information for swap optimization, we should process
all the deferred rescans between the two passes.  Currently that is not
done.  This patch fixes that.

Bootstrapped and tested on powerpc64le-linux-gnu with no regressions.  Is
this ok for trunk?

Thanks,
Bill


2017-10-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
	deferred rescans after the lvx/stvx recombination pre-pass.

Comments

Segher Boessenkool Oct. 6, 2017, 3:18 p.m. UTC | #1
Hi Bill,

On Wed, Oct 04, 2017 at 04:44:59PM -0500, Bill Schmidt wrote:
> The Power8 swap optimization pass contains a mini-pass to replace certain
> patterns prior to swap optimization proper.  In order for this not to
> distort the dataflow information for swap optimization, we should process
> all the deferred rescans between the two passes.  Currently that is not
> done.  This patch fixes that.
> 
> Bootstrapped and tested on powerpc64le-linux-gnu with no regressions.  Is
> this ok for trunk?

This is fine, thanks! (also for backports if you want those).


Segher
diff mbox series

Patch

Index: gcc/config/rs6000/rs6000-p8swap.c
===================================================================
--- gcc/config/rs6000/rs6000-p8swap.c	(revision 253388)
+++ gcc/config/rs6000/rs6000-p8swap.c	(working copy)
@@ -1882,6 +1882,7 @@  rs6000_analyze_swaps (function *fun)
 
   /* Pre-pass to recombine lvx and stvx patterns so we don't lose info.  */
   recombine_lvx_stvx_patterns (fun);
+  df_process_deferred_rescans ();
 
   /* Allocate structure to represent webs of insns.  */
   insn_entry = XCNEWVEC (swap_web_entry, get_max_uid ());