diff mbox

Add FRE pass to the early optimization pipeline

Message ID alpine.LNX.2.00.1103231511290.810@zhemvz.fhfr.qr
State New
Headers show

Commit Message

Richard Biener March 23, 2011, 2:17 p.m. UTC
For quite some releases we'd wanted some (memory) CSE optimization
during early opts.  Currently we rely heavily on SRA which doesn't
always fulfill the "make code only smaller" promises which is
what early opts should do to improve precision of function size
estimates and to improve abstraction removal by early inlining.

Thus, this patch finally adds an early FRE pass at a suitable place.

The patch was sitting on pretty-ipa branch for some while now
and there were no noticeable issues with it there.

The patch disables FRE for the matrix-reorg testsuite - the
matrix reorg implementation is incredibly fragile with respect
to IL matching.  It also isn't useful anymore as it relies on
-fwhole-program but isn't prepared to work together with LTO,
so it at most works on single translation-unit units.  There is
no sign of anyone maintaining this code, but eventual removal
similar to struct-reorg should be handled separately from this patch.

Bootstrapped and tested on x86_64-unknown-linux-gnu (with the stdarg
patch applied).

Richard.

2011-02-23  Richard Guenther  <rguenther@suse.de>

	* passes.c (init_optimization_passes): Add FRE pass after
	early SRA.

	* gcc.dg/matrix/matrix.exp: Disable FRE.

Index: gcc/passes.c
===================================================================
*** gcc/passes.c.orig	2011-03-23 14:52:09.000000000 +0100
--- gcc/passes.c	2011-03-23 14:55:34.000000000 +0100
*************** init_optimization_passes (void)
*** 762,767 ****
--- 762,768 ----
  	     locals into SSA form if possible.  */
  	  NEXT_PASS (pass_build_ealias);
  	  NEXT_PASS (pass_sra_early);
+ 	  NEXT_PASS (pass_fre);
  	  NEXT_PASS (pass_copy_prop);
  	  NEXT_PASS (pass_merge_phi);
  	  NEXT_PASS (pass_cd_dce);
Index: gcc/testsuite/gcc.dg/matrix/matrix.exp
===================================================================
*** gcc/testsuite/gcc.dg/matrix/matrix.exp.orig	2011-01-10 12:29:56.000000000 +0100
--- gcc/testsuite/gcc.dg/matrix/matrix.exp	2011-03-23 15:08:04.000000000 +0100
***************
*** 20,26 ****
  load_lib gcc-dg.exp
  load_lib target-supports.exp
  
! set DEFAULT_MATCFLAGS "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -fwhole-program"
  
  # Initialize `dg'.
  dg-init
--- 20,26 ----
  load_lib gcc-dg.exp
  load_lib target-supports.exp
  
! set DEFAULT_MATCFLAGS "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -fwhole-program -fno-tree-fre"
  
  # Initialize `dg'.
  dg-init
*************** load_lib profopt.exp
*** 52,59 ****
  # These are globals used by profopt-execute.  The first is options
  # needed to generate profile data, the second is options to use the
  # profile data.
! set profile_option "-fprofile-generate -O3"
! set feedback_option "-fprofile-use -fipa-matrix-reorg -fdump-ipa-matrix-reorg -O3 -fwhole-program"
  
  foreach src [lsort [glob -nocomplain $srcdir/$subdir/transpose-*.c]] {
      # If we're only testing specific files and this isn't one of them, skip it.
--- 52,59 ----
  # These are globals used by profopt-execute.  The first is options
  # needed to generate profile data, the second is options to use the
  # profile data.
! set profile_option "-fprofile-generate -O3 -fno-tree-fre"
! set feedback_option "-fprofile-use -fipa-matrix-reorg -fdump-ipa-matrix-reorg -O3 -fwhole-program -fno-tree-fre"
  
  foreach src [lsort [glob -nocomplain $srcdir/$subdir/transpose-*.c]] {
      # If we're only testing specific files and this isn't one of them, skip it.

2011-02-23  Richard Guenther  <rguenther@suse.de>
 
	* gcc.dg/torture/pta-structcopy-1.c: Scan ealias dump, force
	foo to be inlined even at -O1.
	* gcc.dg/tree-ssa/ssa-dce-4.c: Disable FRE.
	* gcc.dg/ipa/ipa-pta-14.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-1.c: Adjust.

Comments

H.J. Lu April 27, 2011, 10:53 p.m. UTC | #1
On Wed, Mar 23, 2011 at 7:17 AM, Richard Guenther <rguenther@suse.de> wrote:
>
> For quite some releases we'd wanted some (memory) CSE optimization
> during early opts.  Currently we rely heavily on SRA which doesn't
> always fulfill the "make code only smaller" promises which is
> what early opts should do to improve precision of function size
> estimates and to improve abstraction removal by early inlining.
>
> Thus, this patch finally adds an early FRE pass at a suitable place.
>
> The patch was sitting on pretty-ipa branch for some while now
> and there were no noticeable issues with it there.
>
> The patch disables FRE for the matrix-reorg testsuite - the
> matrix reorg implementation is incredibly fragile with respect
> to IL matching.  It also isn't useful anymore as it relies on
> -fwhole-program but isn't prepared to work together with LTO,
> so it at most works on single translation-unit units.  There is
> no sign of anyone maintaining this code, but eventual removal
> similar to struct-reorg should be handled separately from this patch.
>
> Bootstrapped and tested on x86_64-unknown-linux-gnu (with the stdarg
> patch applied).
>
> Richard.
>
> 2011-02-23  Richard Guenther  <rguenther@suse.de>
>
>        * passes.c (init_optimization_passes): Add FRE pass after
>        early SRA.
>
>        * gcc.dg/matrix/matrix.exp: Disable FRE.
>

This patch triggered:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48338
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48794
diff mbox

Patch

Index: gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c	(revision 170404)
+++ gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c	(revision 170405)
@@ -1,5 +1,5 @@ 
 /* { dg-do run } */
-/* { dg-options "-fno-tree-sra -fdump-tree-alias" } */
+/* { dg-options "-fdump-tree-ealias" } */
 /* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
 
 struct X
@@ -12,10 +12,11 @@  struct X
     } y;
 };
 int i;
-static int
+static int __attribute__((always_inline))
 foo (struct X *x)
 {
   struct Y y = x->y;
+  /* In the inlined instance the dereferenced pointer needs to point to i.  */
   *y.p = 0;
   i = 1;
   return *y.p;
@@ -30,5 +31,5 @@  int main()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump "points-to vars: { i }" "alias" } } */
-/* { dg-final { cleanup-tree-dump "alias" } } */
+/* { dg-final { scan-tree-dump "points-to vars: { i }" "ealias" } } */
+/* { dg-final { cleanup-tree-dump "ealias" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c	(revision 170404)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c	(revision 170405)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-cddce1" } */
+/* { dg-options "-O -fno-tree-fre -fdump-tree-cddce1" } */
 
 int foo(int b)
 {
@@ -14,5 +14,7 @@  int foo(int b)
   return a[2] + b;
 }
 
+/* Verify DCE removes all accesses to a but the last store and the
+   read from a[2].  */
 /* { dg-final { scan-tree-dump-times "a\\\[\[^\n\]\\\]" 2 "cddce1" } } */
 /* { dg-final { cleanup-tree-dump "cddce1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c	(revision 170404)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c	(revision 170405)
@@ -11,5 +11,5 @@  int f(int *a)
   return *c + t;
 }
 
-/* { dg-final { scan-tree-dump "Replaced \\\*a_\[^\n\].*with t_" "fre1" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*c_\[^\n\].*with t_" "fre1" } } */
 /* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c
===================================================================
--- gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c	(revision 170404)
+++ gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c	(revision 170405)
@@ -1,5 +1,5 @@ 
 /* { dg-do run } */
-/* { dg-options "-O2 -fipa-pta -fno-tree-sra -fdump-ipa-pta-details" } */
+/* { dg-options "-O2 -fipa-pta -fno-tree-fre -fno-tree-sra -fdump-ipa-pta-details" } */
 
 struct X {
     int i;

2011-02-23  Richard Guenther  <rguenther@suse.de>
 
	* g++.dg/tree-ssa/pr41186.C: Scan the appropriate FRE dump.
	* g++.dg/tree-ssa/pr8781.C: Likewise.
	* gcc.dg/ipa/ipa-pta-13.c: Likewise.
	* gcc.dg/ipa/ipa-pta-3.c: Likewise.
	* gcc.dg/ipa/ipa-pta-4.c: Likewise.
	* gcc.dg/tree-ssa/20041122-1.c: Likewise.
	* gcc.dg/tree-ssa/alias-18.c: Likewise.
	* gcc.dg/tree-ssa/foldstring-1.c: Likewise.
	* gcc.dg/tree-ssa/forwprop-10.c: Likewise.
	* gcc.dg/tree-ssa/forwprop-9.c: Likewise.
	* gcc.dg/tree-ssa/fre-vce-1.c: Likewise.
	* gcc.dg/tree-ssa/loadpre6.c: Likewise.
	* gcc.dg/tree-ssa/pr21574.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-cse-1.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-1.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-11.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-12.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-13.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-14.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-15.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-16.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-17.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-18.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-19.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-2.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-21.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-22.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-23.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-24.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-25.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-26.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-27.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-3.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-4.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-5.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-6.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-7.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-8.c: Likewise.
	* gcc.dg/tree-ssa/ssa-fre-9.c: Likewise.
	* gcc.dg/tree-ssa/ssa-pre-10.c: Likewise.
	* gcc.dg/tree-ssa/ssa-pre-26.c: Likewise.
	* gcc.dg/tree-ssa/ssa-pre-7.c: Likewise.
	* gcc.dg/tree-ssa/ssa-pre-8.c: Likewise.
	* gcc.dg/tree-ssa/ssa-pre-9.c: Likewise.
	* gcc.dg/tree-ssa/ssa-sccvn-1.c: Likewise.
	* gcc.dg/tree-ssa/ssa-sccvn-2.c: Likewise.
	* gcc.dg/tree-ssa/ssa-sccvn-3.c: Likewise.
	* gcc.dg/tree-ssa/ssa-sccvn-4.c: Likewise.
	* gcc.dg/tree-ssa/struct-aliasing-1.c: Likewise.
	* gcc.dg/tree-ssa/struct-aliasing-2.c: Likewise.
	* gfortran.dg/pr42108.f90: Likewise.

Index: gcc/testsuite/gfortran.dg/pr42108.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr42108.f90	(revision 170401)
+++ gcc/testsuite/gfortran.dg/pr42108.f90	(revision 170402)
@@ -1,5 +1,5 @@ 
 ! { dg-do compile }
-! { dg-options "-O2 -fdump-tree-fre" }
+! { dg-options "-O2 -fdump-tree-fre1" }
 
 subroutine  eval(foo1,foo2,foo3,foo4,x,n,nnd)
   implicit real*8 (a-h,o-z)
@@ -23,5 +23,5 @@  end subroutine eval
 
 ! There should be only one load from n left
 
-! { dg-final { scan-tree-dump-times "\\*n_" 1 "fre" } }
-! { dg-final { cleanup-tree-dump "fre" } }
+! { dg-final { scan-tree-dump-times "\\*n_" 1 "fre1" } }
+! { dg-final { cleanup-tree-dump "fre1" } }
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details" } */
 #if (__SIZEOF_INT__ == __SIZEOF_FLOAT__)
 typedef int intflt;
 #elif (__SIZEOF_LONG__ == __SIZEOF_FLOAT__)
@@ -28,6 +28,6 @@  intflt foo(int i, int b)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "Replaced u.f with pretmp" 2 "fre" } } */
-/* { dg-final { scan-tree-dump-times "Inserted pretmp" 2 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Replaced u.f with pretmp" 2 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "Inserted pretmp" 2 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-pre-stats -fdump-tree-fre" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -fdump-tree-fre1" } */
 #include <stddef.h>
 
 union tree_node;
@@ -73,8 +73,8 @@  main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-not "= unexpanded_var_list;" "fre" } } */
+/* { dg-final { scan-tree-dump-not "= unexpanded_var_list;" "fre1" } } */
 /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
 /* { dg-final { scan-tree-dump-times "Insertions: 2" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
 /* { dg-final { cleanup-tree-dump "pre" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/pr21574.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/pr21574.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/pr21574.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 int
 foo (int *p)
@@ -9,5 +9,5 @@  foo (int *p)
 }
 
 /* The store to *p should be propagated to the load statement.  */
-/* { dg-final { scan-tree-dump "Replaced \\\*p_.\\\(D\\\) with 0" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*p_.\\\(D\\\) with 0" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-stats" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-stats" } */
 
 union loc {
     unsigned reg;
@@ -23,6 +23,6 @@  void __frame_state_for1 (volatile char *
     }
 }
 
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 2 "fre" } } */
-/* { dg-final { scan-tree-dump-times "Insertions: 1" 2 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 2 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "Insertions: 1" 2 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-fre -W -Wall -fno-early-inlining" } */
+/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-fre1 -W -Wall -fno-early-inlining" } */
 
 int b;
 unsigned a;
@@ -16,6 +16,6 @@  void f(void)
 /* We should have converted the assignments to two = 1.  FRE does this.  */
 
 /* { dg-final { scan-tree-dump-times " = 1" 2 "optimized"} } */
-/* { dg-final { scan-tree-dump-not " = a;" "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-not " = a;" "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 struct
 {
@@ -22,5 +22,5 @@  foo (int y)
   return (x);
 }
 
-/* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 struct
 {
@@ -22,5 +22,5 @@  foo (int y)
   return (x);
 }
 
-/* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
 
 struct f {
   float a;
@@ -22,5 +22,5 @@  void g(void)
   h(a1, b, c, d);
 }
 
-/* { dg-final { scan-tree-dump-not "a\\\.? = " "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-not "a\\\.? = " "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fstrict-aliasing -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fstrict-aliasing -fno-tree-sra -fdump-tree-fre1-details" } */
 
 /* Should be optimized, propagating &a into (*p)[i].  */
 
@@ -23,5 +23,5 @@  void foo(double (*q)[4], struct Foo *tmp
     }
 }
 
-/* { dg-final { scan-tree-dump "Replaced tmp1_.\\\(D\\\)->data with &a" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced tmp1_.\\\(D\\\)->data with &a" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c	(revision 170402)
@@ -1,6 +1,6 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats -fno-finite-math-only" { target sh*-*-* } } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats -fno-finite-math-only" { target sh*-*-* } } */
 double cos (double);
 void link_error();
 void f(double a)
@@ -11,5 +11,5 @@  void f(double a)
     link_error();
 }
 
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
 
 int i;
 int foo (void)
@@ -11,5 +11,5 @@  int foo (void)
 
 /* We should eliminate the redundant load of i.  */
 
-/* { dg-final { scan-tree-dump-not "= i;" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-not "= i;" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details" } */
 
 /* Should be optimized, propagating &a into (*p)[i].  */
 
@@ -27,5 +27,5 @@  void foo(double (*q)[4])
   bar(a);
 }
 
-/* { dg-final { scan-tree-dump "Replaced tmp1.data with &a" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced tmp1.data with &a" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/alias-18.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/alias-18.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/alias-18.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-fre-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fdump-tree-fre1-details -fdump-tree-optimized" } */
 
 struct A {
   int i;
@@ -76,15 +76,15 @@  int test8 (struct A *p, int *q)
   return *q;
 }
 
-/* { dg-final { scan-tree-dump "with 0" "fre" } } */
-/* { dg-final { scan-tree-dump "with 1" "fre" } } */
-/* { dg-final { scan-tree-dump "with 3" "fre" } } */
-/* { dg-final { scan-tree-dump "with 4" "fre" } } */
-/* { dg-final { scan-tree-dump "with 5" "fre" } } */
-/* { dg-final { scan-tree-dump "with 8" "fre" } } */
+/* { dg-final { scan-tree-dump "with 0" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 1" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 3" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 4" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 5" "fre1" } } */
+/* { dg-final { scan-tree-dump "with 8" "fre1" } } */
 /* { dg-final { scan-tree-dump-not "return 2;" "optimized" } } */
 /* { dg-final { scan-tree-dump-not "return 6;" "optimized" } } */
 /* { dg-final { scan-tree-dump-not "return 7;" "optimized" } } */
 /* { dg-final { scan-tree-dump-not "return -1;" "optimized" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
 
 int f(int t, int a, int b)
 {
@@ -17,5 +17,5 @@  int f(int t, int a, int b)
   return c+d;
 }
 
-/* { dg-final { scan-tree-dump-times "PHI" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "PHI" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details" } */
 
 /* Should be optimized, propagating &a into (*p)[i].  */
 
@@ -26,5 +26,5 @@  void foo(double (*q)[4])
   bar(a);
 }
 
-/* { dg-final { scan-tree-dump "Replaced" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1" } */
 
 int foo(void)
 {
@@ -30,5 +30,5 @@  int bazzoo (void)
   return b.i;
 }
 
-/* { dg-final { scan-tree-dump-times "= 0;" 5 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "= 0;" 5 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
 
 /* FRE should be able to combine i and j and perform simplification
    on the condition.  */
@@ -14,5 +14,5 @@  int foo(int b, int c)
     link_error ();
 }
 
-/* { dg-final { scan-tree-dump-not "link_error" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-not "link_error" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-fre" } */
+/* { dg-options "-O1 -fdump-tree-fre1" } */
 
 void
 arf ()
@@ -7,5 +7,5 @@  arf ()
   if (""[0] == 0)
     blah ();
 }
-/* { dg-final { scan-tree-dump-times "= 0;" 1 "fre"} } */ 
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "= 0;" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1" } */
 
 struct X { int i; int j; };
 void bar (struct X *);
@@ -14,5 +14,5 @@  int foo (struct X *p)
 
 /* We should optimize this to return 0.  */
 
-/* { dg-final { scan-tree-dump "= 0;" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "= 0;" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details -fno-tree-sra" } */
+/* { dg-options "-O -fdump-tree-fre1-details -fno-tree-sra" } */
 
 struct Bar {
   int dom;
@@ -18,6 +18,6 @@  int foo(int i, int j, int k)
   return f.doms[0LL].dom;
 }
 
-/* { dg-final { scan-tree-dump "Replaced f.doms\\\[0\\\].dom with i_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced f.doms\\\[0\\\].dom with i_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
 
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details" } */
 
 union U {
   float f;
@@ -15,5 +15,5 @@  int foo (union U *p)
 }
 
 /* avr has 16 bit int and 32 bit float */
-/* { dg-final { scan-tree-dump "Replaced u.i with 0 in" "fre" {xfail avr-*-* } } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced u.i with 0 in" "fre1" {xfail avr-*-* } } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 int b;
 unsigned a;
@@ -18,5 +18,5 @@  void test2(void)
    conversion to int.  FRE should then be able to replace
    the rhs of the store to b by 1.  */
 
-/* { dg-final { scan-tree-dump "Replaced\[^\\n\]*with 1" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced\[^\\n\]*with 1" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 /* From PR27090.  */
 
@@ -11,5 +11,5 @@  int f(int *a)
   return *c + t;
 }
 
-/* { dg-final { scan-tree-dump "Replaced \\\*a_\[^\n\].*with t_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*a_\[^\n\].*with t_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-fre-details" } */
+/* { dg-options "-O2 -fdump-tree-fre1-details" } */
 int t(int a) __attribute__ ((const));
 void q (void);
 void
@@ -12,5 +12,5 @@  threading(int a,int b)
 	}
 }
 /* We should thread the jump twice and eliminate it.  */
-/* { dg-final { scan-tree-dump-times "Replaced.* t " 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Replaced.* t " 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
 
 struct a
 {
@@ -24,5 +24,5 @@  int f(struct a *c)
 
 /* We should have CSEd the load from c->a.  */
 
-/* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 int *q;
 void __attribute__((noinline))
@@ -21,5 +21,5 @@  int foo(int which_p)
   return x;
 }
 
-/* { dg-final { scan-tree-dump "Replaced x with 0" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced x with 0" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fdump-tree-fre1-stats" } */
 
 void vnum_test8(int *data) 
 { 
@@ -17,5 +17,5 @@  void vnum_test8(int *data)
   } 
 } 
 /* We should eliminate m - n, and set n = n + k into n = m. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 /* From PR14287.  */
 
@@ -14,5 +14,5 @@  foo (long a)
   h = c;
 }
 
-/* { dg-final { scan-tree-dump "Replaced \\\(short int\\\) c_.*with b_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\(short int\\\) c_.*with b_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre" } */
+/* { dg-options "-O -fdump-tree-fre1" } */
 
 struct a
 {
@@ -27,5 +27,5 @@  int f(struct a *c)
 
 /* We should have CSEd the load from c->a.  */
 
-/* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fdump-tree-fre1-stats" } */
 
 int vnum_test8(int *data) 
 { 
@@ -21,5 +21,5 @@  int vnum_test8(int *data)
 } 
 /* We should eliminate m - n, and set n = n + k into n = m, and
    set p to 0 */
-/* { dg-final { scan-tree-dump-times "Eliminated: 4" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 4" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c	(revision 170402)
@@ -6,7 +6,7 @@ 
    When the condition is true, we distribute "(int) (a + b)" as
    "(int) a + (int) b", otherwise we keep the original.  */
 /* { dg-do compile { target { { ! mips64 } && { ! spu-*-* } } } } */
-/* { dg-options "-O -fwrapv -fdump-tree-fre-details" } */
+/* { dg-options "-O -fwrapv -fdump-tree-fre1-details" } */
 
 /* From PR14844.  */
 
@@ -18,5 +18,5 @@  foo (int a, int b)
   return aa + bb;
 }
 
-/* { dg-final { scan-tree-dump "Replaced \\\(int\\\) aa_.*with a_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\(int\\\) aa_.*with a_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do "compile" } */
-/* { dg-options "-O2 -fdump-tree-fre-details" } */
+/* { dg-options "-O2 -fdump-tree-fre1-details" } */
 
 struct S { float f; };
 int __attribute__((noinline))
@@ -11,5 +11,5 @@  foo (float *r, struct S *p)
   return i + *q;
 }
 
-/* { dg-final { scan-tree-dump "Replaced\[^\n\]*with i_." "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced\[^\n\]*with i_." "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 typedef union
 {
@@ -23,5 +23,5 @@  void foo(SA* pResult, SB* method, SC* se
     pResult->data = pResult->data;
 }
 
-/* { dg-final { scan-tree-dump "Deleted redundant store" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Deleted redundant store" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fdump-tree-fre1-stats" } */
 int main(int argc, char **argv)
 {
   int *p;
@@ -11,5 +11,5 @@  int main(int argc, char **argv)
   return result;
 }
 /* We should eliminate result = *p by saying it has the value 2.  */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c	(revision 170402)
@@ -1,7 +1,7 @@ 
 /* If the target returns false for TARGET_PROMOTE_PROTOTYPES, then there
    will be no casts for FRE to eliminate and the test will fail.  */
 /* { dg-do compile { target i?86-*-* x86_64-*-* hppa*-*-* mips*-*-* m68k*-*-* } } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 /* From PR21608.  */
 
@@ -11,5 +11,5 @@  char bar(char f)
         return wrap(f);
 }
 
-/* { dg-final { scan-tree-dump "Replaced \\\(char\\\) .*with " "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\(char\\\) .*with " "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do "compile" } */
-/* { dg-options "-O2 -fdump-tree-fre" } */
+/* { dg-options "-O2 -fdump-tree-fre1" } */
 
 struct S { unsigned f; };
 
@@ -14,6 +14,6 @@  foo ( struct S *p)
 
 /* There should only be one load of p->f because fwprop can change
    *(int *)&p->f into just (int)p->f.  */
-/* { dg-final { scan-tree-dump-times "= \[^\n\]*p_.\\\(D\\\)" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "= \[^\n\]*p_.\\\(D\\\)" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
 
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fdump-tree-fre1-stats" } */
 
 int vnum_test8(int *data) 
 { 
@@ -23,5 +23,5 @@  int vnum_test8(int *data)
 } 
 /* We should eliminate m - n, n + k, set data[5] = 0, eliminate the
    address arithmetic for data[5], and set p = 0.
-/* { dg-final { scan-tree-dump-times "Eliminated: 5" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 5" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 /* From PR19792.  */
 
@@ -10,5 +10,5 @@  bar (unsigned int t)
   return a == t;
 }
 
-/* { dg-final { scan-tree-dump "Replaced \\\(unsigned int\\\) a_.*with t_" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\(unsigned int\\\) a_.*with t_" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats" } */
 int
 foo (int *array)
 {
@@ -8,5 +8,5 @@  foo (int *array)
       return 0;
 }
 /* We should eliminate one load.  */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c	(revision 170402)
@@ -1,5 +1,5 @@ 
-/* { dg-options "-O2 -fdump-tree-fre -w" } */
-/* { dg-options "-O2 -fdump-tree-fre -w -msse" { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-options "-O2 -fdump-tree-fre1 -w" } */
+/* { dg-options "-O2 -fdump-tree-fre1 -w -msse" { target { i?86-*-* x86_64-*-* } } } */
 /* { dg-do compile } */
 #define vector __attribute__((vector_size(sizeof(int)*4) ))
 struct s { vector int i; };
@@ -32,6 +32,6 @@  void a2 (struct s1 sv, int i)
   g(&sv, *(float*)&sv.i);
 }
 
-/* { dg-final { scan-tree-dump-times "sv_\[0-9\]\\\(D\\\)->i" 2 "fre" } } */
-/* { dg-final { scan-tree-dump-times "sv.i" 2 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "sv_\[0-9\]\\\(D\\\)->i" 2 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "sv.i" 2 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c	(revision 170402)
@@ -1,6 +1,6 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
  int i; int foo(void) { i = 2; int j = i * 2; int k = i + 2; return j == k; }
-/* { dg-final { scan-tree-dump-times "Replaced " 5 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Replaced " 5 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats" } */
 struct s {
       int *n;
 };
@@ -19,5 +19,5 @@  foo (__SIZE_TYPE__ i, struct s *array)
 /* We should eliminate two address calculations, and one load.  */
 /* We used to eliminate a cast but that was before POINTER_PLUS_EXPR
    was added.  */
-/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre-details -fdump-tree-optimized" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1-details -fdump-tree-optimized" } */
 #if (__SIZEOF_INT__ == __SIZEOF_FLOAT__)
 typedef int intflt;
 #elif (__SIZEOF_LONG__ == __SIZEOF_FLOAT__)
@@ -29,10 +29,10 @@  intflt foo(intflt j)
   return a.u.k;
 }
 
-/* { dg-final { scan-tree-dump-times "Inserted pretmp" 1 "fre" } } */
-/* { dg-final { scan-tree-dump-times "Replaced a.u.f with pretmp" 3 "fre" } } */
-/* { dg-final { scan-tree-dump-times "Replaced a.u.k with j" 1 "fre" } } */
-/* { dg-final { scan-tree-dump "= VIEW_CONVERT_EXPR<float>\\\(j_" "fre" } } */
+/* { dg-final { scan-tree-dump-times "Inserted pretmp" 1 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "Replaced a.u.f with pretmp" 3 "fre1" } } */
+/* { dg-final { scan-tree-dump-times "Replaced a.u.k with j" 1 "fre1" } } */
+/* { dg-final { scan-tree-dump "= VIEW_CONVERT_EXPR<float>\\\(j_" "fre1" } } */
 /* { dg-final { scan-tree-dump "return j" "optimized" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre1-stats" } */
 int
 foo (unsigned long a)
 {
@@ -9,5 +9,5 @@  foo (unsigned long a)
     return 1;
   return 0;
 }
-/* { dg-final { scan-tree-dump-times "return 0;" 0 "fre"} } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "return 0;" 0 "fre1"} } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O1 -fstrict-aliasing -fdump-tree-fre" } */
+/* { dg-options "-O1 -fstrict-aliasing -fdump-tree-fre1" } */
 
 __extension__ typedef __SIZE_TYPE__ size_t;
 extern void *xmalloc (size_t) __attribute__ ((__malloc__));
@@ -34,5 +34,5 @@  find_unreachable_blocks (void)
    able to determine that modifying e->dest->flags does not
    modify e or e->dest if we can assert strict-aliasing rules.
    The net result is that we only need one load of e->dest.  */
-/* { dg-final { scan-tree-dump-times "->dest" 1 "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump-times "->dest" 1 "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c
===================================================================
--- gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do link } */
-/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre" } */
+/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre2" } */
 
 static int x, y;
 
@@ -54,9 +54,9 @@  int main()
   local_address_taken (&y);
   /* As we are computing flow- and context-insensitive we may not
      CSE the load of x here.  */
-  /* { dg-final { scan-tree-dump " = x;" "fre" } } */
+  /* { dg-final { scan-tree-dump " = x;" "fre2" } } */
   return x;
 }
 
 /* { dg-final { cleanup-ipa-dump "pta" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { cleanup-tree-dump "fre2" } } */
Index: gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
===================================================================
--- gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do run } */
-/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre-details" } */
+/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre2-details" } */
 
 static int __attribute__((noinline,noclone))
 foo (int *p, int *q)
@@ -23,6 +23,6 @@  int main()
 
 /* { dg-final { scan-ipa-dump "foo.arg0 = &a" "pta" } } */
 /* { dg-final { scan-ipa-dump "foo.arg1 = &b" "pta" } } */
-/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre2" } } */
+/* { dg-final { cleanup-tree-dump "fre2" } } */
 /* { dg-final { cleanup-ipa-dump "pta" } } */
Index: gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
===================================================================
--- gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c	(revision 170401)
+++ gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do run } */
-/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre-details" } */
+/* { dg-options "-O2 -fipa-pta -fdump-ipa-pta-details -fdump-tree-fre2-details" } */
 
 int a, b;
 
@@ -28,6 +28,6 @@  int main()
 
 /* { dg-final { scan-ipa-dump "foo.arg0 = &a" "pta" } } */
 /* { dg-final { scan-ipa-dump "foo.arg1 = &b" "pta" } } */
-/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced \\\*p_1\\\(D\\\) with 1" "fre2" } } */
+/* { dg-final { cleanup-tree-dump "fre2" } } */
 /* { dg-final { cleanup-ipa-dump "pta" } } */
Index: gcc/testsuite/g++.dg/tree-ssa/pr8781.C
===================================================================
--- gcc/testsuite/g++.dg/tree-ssa/pr8781.C	(revision 170401)
+++ gcc/testsuite/g++.dg/tree-ssa/pr8781.C	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 int f();
 
@@ -24,5 +24,5 @@  int x()
 
 /* We should optimize this to a direct call.  */
 
-/* { dg-final { scan-tree-dump "Replacing call target with f" "fre" } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replacing call target with f" "fre1" } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */
Index: gcc/testsuite/g++.dg/tree-ssa/pr41186.C
===================================================================
--- gcc/testsuite/g++.dg/tree-ssa/pr41186.C	(revision 170401)
+++ gcc/testsuite/g++.dg/tree-ssa/pr41186.C	(revision 170402)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
 
 struct Foo {
   Foo() {};
@@ -29,7 +29,7 @@  int main()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump "Replaced b1.b with 1" "fre" } } */
-/* { dg-final { scan-tree-dump "Replaced b1.i with 0" "fre" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump "Replaced b1.f with 1" "fre" { xfail *-*-* } } } */
-/* { dg-final { cleanup-tree-dump "fre" } } */
+/* { dg-final { scan-tree-dump "Replaced b1.b with 1" "fre1" } } */
+/* { dg-final { scan-tree-dump "Replaced b1.i with 0" "fre1" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump "Replaced b1.f with 1" "fre1" { xfail *-*-* } } } */
+/* { dg-final { cleanup-tree-dump "fre1" } } */