]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rs6000.c (rs6000_analyze_swaps): Rebuild ud- and du-chains between phases.
authorBill Schmidt <wschmidt@linux.ibm.com>
Thu, 21 Mar 2019 17:13:55 +0000 (17:13 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Thu, 21 Mar 2019 17:13:55 +0000 (17:13 +0000)
2019-03-21  Bill Schmidt  <wschmidt@linux.ibm.com>

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

From-SVN: r269843

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index cfcf569785fd77ff9e75743454857b6f53f4f70d..238bdbd251164147afd8eeff559c0aafaeea5b35 100644 (file)
@@ -1,3 +1,8 @@
+2019-03-21  Bill Schmidt  <wschmidt@linux.ibm.com>
+
+        * config/rs6000/rs6000.c (rs6000_analyze_swaps): Rebuild
+        ud- and du-chains between phases.
+
 2019-03-21  Matthias Klose  <doko@ubuntu.com>
 
        Backport from mainline
index 7bfeba3ef2e4e662138669ed0bae7e00bed1072a..62744b1fa903cdc63b0794c1f5629a264cbb116c 100644 (file)
@@ -43038,6 +43038,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 ());