rs6000-p8swap.c (rs6000_analyze_swaps): Rebuild ud- and du-chains between phases.
authorBill Schmidt <wschmidt@linux.ibm.com>
Fri, 8 Mar 2019 19:47:05 +0000 (19:47 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Fri, 8 Mar 2019 19:47:05 +0000 (19:47 +0000)
2019-03-08  Bill Schmidt  <wschmidt@linux.ibm.com>

* config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Rebuild
ud- and du-chains between phases.

From-SVN: r269505

gcc/ChangeLog
gcc/config/rs6000/rs6000-p8swap.c

index fc347dc9cc24489b0f44b754ef0f1e4f24bcbc1a..15910aa49c41b0f17e561abad1a94e52f319cd4c 100644 (file)
@@ -1,3 +1,8 @@
+2019-03-08  Bill Schmidt  <wschmidt@linux.ibm.com>
+
+       * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Rebuild
+       ud- and du-chains between phases.
+
 2019-03-08  Richard Sandiford  <richard.sandiford@arm.com>
 
        PR debug/89631
index bb9c16758d02288757277dcdf2c6f1e165e451d2..c3b9831550302c4b62eb4b4263db870858052aff 100644 (file)
@@ -2316,7 +2316,14 @@ rs6000_analyze_swaps (function *fun)
 
   /* Pre-pass to recombine lvx and stvx patterns so we don't lose info.  */
   recombine_lvx_stvx_patterns (fun);
+
+  /* Rebuild ud- and du-chains.  */
+  df_remove_problem (df_chain);
   df_process_deferred_rescans ();
+  df_set_flags (DF_RD_PRUNE_DEAD_DEFS);
+  df_chain_add_problem (DF_DU_CHAIN | DF_UD_CHAIN);
+  df_analyze ();
+  df_set_flags (DF_DEFER_INSN_RESCAN);
 
   /* Allocate structure to represent webs of insns.  */
   insn_entry = XCNEWVEC (swap_web_entry, get_max_uid ());