Commit e2081a1d by Richard Guenther Committed by Richard Biener

passes.c (init_optimization_passes): Move the second forwprop pass before alias computation.

2008-08-20  Richard Guenther  <rguenther@suse.de>

	* passes.c (init_optimization_passes): Move the second
	forwprop pass before alias computation.  Remove the second
	DCE pass.  Remove the first dominator and phi copy/const
	prop passes.

	* gcc.dg/tree-ssa/20030530-2.c: Scan dom2 dump.
	* gcc.dg/tree-ssa/20030611-1.c: Likewise.
	* gcc.dg/tree-ssa/20030703-1.c: Likewise.
	* gcc.dg/tree-ssa/20030703-2.c: Likewise.
	* gcc.dg/tree-ssa/20030708-1.c: Likewise.
	* gcc.dg/tree-ssa/20030709-3.c: Likewise.
	* gcc.dg/tree-ssa/20030710-1.c: Likewise.
	* gcc.dg/tree-ssa/20030711-1.c: Likewise.
	* gcc.dg/tree-ssa/20030711-2.c: Likewise.
	* gcc.dg/tree-ssa/20030711-3.c: Likewise.
	* gcc.dg/tree-ssa/20030714-1.c: Likewise.
	* gcc.dg/tree-ssa/20030714-2.c: Likewise.
	* gcc.dg/tree-ssa/20030729-1.c: Likewise.
	* gcc.dg/tree-ssa/20030730-1.c: Likewise.
	* gcc.dg/tree-ssa/20030730-2.c: Likewise.
	* gcc.dg/tree-ssa/20030731-1.c: Likewise.
	* gcc.dg/tree-ssa/20030807-1.c: Likewise.
	* gcc.dg/tree-ssa/20030807-11.c: Likewise.
	* gcc.dg/tree-ssa/20030807-2.c: Likewise.
	* gcc.dg/tree-ssa/20030807-3.c: Likewise.
	* gcc.dg/tree-ssa/20030807-5.c: Likewise.
	* gcc.dg/tree-ssa/20030807-8.c: Likewise.
	* gcc.dg/tree-ssa/20030807-9.c: Likewise.
	* gcc.dg/tree-ssa/20030814-1.c: Likewise.
	* gcc.dg/tree-ssa/20030814-2.c: Likewise.
	* gcc.dg/tree-ssa/20030814-3.c: Likewise.
	* gcc.dg/tree-ssa/20030814-4.c: Likewise.
	* gcc.dg/tree-ssa/20030814-5.c: Likewise.
	* gcc.dg/tree-ssa/20030814-6.c: Likewise.
	* gcc.dg/tree-ssa/20030814-7.c: Likewise.
	* gcc.dg/tree-ssa/20030922-1.c: Likewise.
	* gcc.dg/tree-ssa/20040729-1.c: Likewise.
	* gcc.dg/tree-ssa/20041122-1.c: Likewise.
	* gcc.dg/tree-ssa/pr21417.c: Likewise.
	* gcc.dg/tree-ssa/pr21829.c: Scan phicprop2 dump.
	* gcc.dg/tree-ssa/ssa-dce-1.c: Scan dce2 dump.
	* gcc.dg/tree-ssa/ssa-dce-2.c: Likewise.
	* g++.dg/tree-ssa/pr31146.C: Remove XFAIL, adjust pattern.
	* gfortran.dg/ldist-1.f90: Adjust.

From-SVN: r139286
parent 34afead0
2008-08-20 Richard Guenther <rguenther@suse.de>
* passes.c (init_optimization_passes): Move the second
forwprop pass before alias computation. Remove the second
DCE pass. Remove the first dominator and phi copy/const
prop passes.
2008-08-20 Nick Clifton <nickc@redhat.com> 2008-08-20 Nick Clifton <nickc@redhat.com>
* configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
......
...@@ -589,6 +589,7 @@ init_optimization_passes (void) ...@@ -589,6 +589,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_rename_ssa_copies); NEXT_PASS (pass_rename_ssa_copies);
NEXT_PASS (pass_complete_unrolli); NEXT_PASS (pass_complete_unrolli);
NEXT_PASS (pass_ccp); NEXT_PASS (pass_ccp);
NEXT_PASS (pass_forwprop);
/* Ideally the function call conditional /* Ideally the function call conditional
dead code elimination phase can be delayed dead code elimination phase can be delayed
till later where potentially more opportunities till later where potentially more opportunities
...@@ -605,20 +606,11 @@ init_optimization_passes (void) ...@@ -605,20 +606,11 @@ init_optimization_passes (void)
NEXT_PASS (pass_return_slot); NEXT_PASS (pass_return_slot);
NEXT_PASS (pass_phiprop); NEXT_PASS (pass_phiprop);
NEXT_PASS (pass_fre); NEXT_PASS (pass_fre);
NEXT_PASS (pass_dce);
NEXT_PASS (pass_forwprop);
NEXT_PASS (pass_copy_prop); NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_merge_phi); NEXT_PASS (pass_merge_phi);
NEXT_PASS (pass_vrp); NEXT_PASS (pass_vrp);
NEXT_PASS (pass_dce); NEXT_PASS (pass_dce);
NEXT_PASS (pass_cselim); NEXT_PASS (pass_cselim);
NEXT_PASS (pass_dominator);
/* The only const/copy propagation opportunities left after
DOM should be due to degenerate PHI nodes. So rather than
run the full propagators, run a specialized pass which
only examines PHIs to discover const/copy propagation
opportunities. */
NEXT_PASS (pass_phi_only_cprop);
NEXT_PASS (pass_tree_ifcombine); NEXT_PASS (pass_tree_ifcombine);
NEXT_PASS (pass_phiopt); NEXT_PASS (pass_phiopt);
NEXT_PASS (pass_tail_recursion); NEXT_PASS (pass_tail_recursion);
......
2008-08-20 Richard Guenther <rguenther@suse.de>
* gcc.dg/tree-ssa/20030530-2.c: Scan dom2 dump.
* gcc.dg/tree-ssa/20030611-1.c: Likewise.
* gcc.dg/tree-ssa/20030703-1.c: Likewise.
* gcc.dg/tree-ssa/20030703-2.c: Likewise.
* gcc.dg/tree-ssa/20030708-1.c: Likewise.
* gcc.dg/tree-ssa/20030709-3.c: Likewise.
* gcc.dg/tree-ssa/20030710-1.c: Likewise.
* gcc.dg/tree-ssa/20030711-1.c: Likewise.
* gcc.dg/tree-ssa/20030711-2.c: Likewise.
* gcc.dg/tree-ssa/20030711-3.c: Likewise.
* gcc.dg/tree-ssa/20030714-1.c: Likewise.
* gcc.dg/tree-ssa/20030714-2.c: Likewise.
* gcc.dg/tree-ssa/20030729-1.c: Likewise.
* gcc.dg/tree-ssa/20030730-1.c: Likewise.
* gcc.dg/tree-ssa/20030730-2.c: Likewise.
* gcc.dg/tree-ssa/20030731-1.c: Likewise.
* gcc.dg/tree-ssa/20030807-1.c: Likewise.
* gcc.dg/tree-ssa/20030807-11.c: Likewise.
* gcc.dg/tree-ssa/20030807-2.c: Likewise.
* gcc.dg/tree-ssa/20030807-3.c: Likewise.
* gcc.dg/tree-ssa/20030807-5.c: Likewise.
* gcc.dg/tree-ssa/20030807-8.c: Likewise.
* gcc.dg/tree-ssa/20030807-9.c: Likewise.
* gcc.dg/tree-ssa/20030814-1.c: Likewise.
* gcc.dg/tree-ssa/20030814-2.c: Likewise.
* gcc.dg/tree-ssa/20030814-3.c: Likewise.
* gcc.dg/tree-ssa/20030814-4.c: Likewise.
* gcc.dg/tree-ssa/20030814-5.c: Likewise.
* gcc.dg/tree-ssa/20030814-6.c: Likewise.
* gcc.dg/tree-ssa/20030814-7.c: Likewise.
* gcc.dg/tree-ssa/20030922-1.c: Likewise.
* gcc.dg/tree-ssa/20040729-1.c: Likewise.
* gcc.dg/tree-ssa/20041122-1.c: Likewise.
* gcc.dg/tree-ssa/pr21417.c: Likewise.
* gcc.dg/tree-ssa/pr21829.c: Scan phicprop2 dump.
* gcc.dg/tree-ssa/ssa-dce-1.c: Scan dce2 dump.
* gcc.dg/tree-ssa/ssa-dce-2.c: Likewise.
* g++.dg/tree-ssa/pr31146.C: Remove XFAIL, adjust pattern.
* gfortran.dg/ldist-1.f90: Adjust.
2008-08-20 Victor Kaplansky <victork@il.ibm.com> 2008-08-20 Victor Kaplansky <victork@il.ibm.com>
* gcc.dg/vect/vect-multitypes-15.c: Fix typo. * gcc.dg/vect/vect-multitypes-15.c: Fix typo.
......
...@@ -12,6 +12,5 @@ void foo (int j) ...@@ -12,6 +12,5 @@ void foo (int j)
*q = 1; *q = 1;
} }
/* { dg-final { scan-tree-dump "i\\\[j.*\\\] = 1;" "forwprop1" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump "i\\\[j.*\\\] =.* 1;" "forwprop1" } } */
/* { dg-final { scan-tree-dump "i\\\[j.*\\\] = 1;" "forwprop2" } } */
/* { dg-final { cleanup-tree-dump "forwprop?" } } */ /* { dg-final { cleanup-tree-dump "forwprop?" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
typedef struct rs6000_stack { typedef struct rs6000_stack {
...@@ -16,12 +16,12 @@ rs6000_emit_prologue (int i, rs6000_stack_t *info) ...@@ -16,12 +16,12 @@ rs6000_emit_prologue (int i, rs6000_stack_t *info)
/* There should be precisely one load of first_gp_reg_save. If there is /* There should be precisely one load of first_gp_reg_save. If there is
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "first_gp_reg_save" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "first_gp_reg_save" 1 "dom2"} } */
/* There should be precisely one addition. If there is more than one, then /* There should be precisely one addition. If there is more than one, then
the dominator optimizations failed, most likely due to not handling the dominator optimizations failed, most likely due to not handling
commutative operands correctly. */ commutative operands correctly. */
/* { dg-final { scan-tree-dump-times "\\+" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "\\+" 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern int square (int) __attribute__ ((__const__)); extern int square (int) __attribute__ ((__const__));
shit(int a) shit(int a)
...@@ -10,5 +10,5 @@ shit(int a) ...@@ -10,5 +10,5 @@ shit(int a)
/* There should be precisely one call to square. If there is more than one, /* There should be precisely one call to square. If there is more than one,
then the dominator optimizations failed to remove the redundant call. */ then the dominator optimizations failed to remove the redundant call. */
/* { dg-final { scan-tree-dump-times "square" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "square" 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
extern int blah[]; extern int blah[];
...@@ -14,9 +14,9 @@ foo(int index) ...@@ -14,9 +14,9 @@ foo(int index)
/* There should be precisely one load of blah. If there is /* There should be precisely one load of blah. If there is
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "blah" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "blah" 1 "dom2"} } */
/* There should be exactly one IF conditional. */ /* There should be exactly one IF conditional. */
/* { dg-final { scan-tree-dump-times "if " 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
...@@ -29,16 +29,16 @@ get_alias_set (t) ...@@ -29,16 +29,16 @@ get_alias_set (t)
/* There should be precisely one load of {t,__t}->code. If there is /* There should be precisely one load of {t,__t}->code. If there is
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "->code" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "->code" 1 "dom2"} } */
/* There should be precisely one load of tree_code_type. If there is /* There should be precisely one load of tree_code_type. If there is
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "tree_code_type" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "tree_code_type" 1 "dom2"} } */
/* There should be one IF conditional. If 'tree_code_type[t->code]' is /* There should be one IF conditional. If 'tree_code_type[t->code]' is
zero, then the third if() conditional is unnecessary. That should cause zero, then the third if() conditional is unnecessary. That should cause
the call to abort() to be removed, which in turn causes the whole second the call to abort() to be removed, which in turn causes the whole second
if() to disappear. */ if() to disappear. */
/* { dg-final { scan-tree-dump-times "if " 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
struct rtx_def; struct rtx_def;
typedef struct rtx_def *rtx; typedef struct rtx_def *rtx;
...@@ -35,9 +35,9 @@ nonlocal_mentioned_p (x) ...@@ -35,9 +35,9 @@ nonlocal_mentioned_p (x)
/* There should be no casts to a short unsigned int since the entire /* There should be no casts to a short unsigned int since the entire
set of conditionals should optimize away. */ set of conditionals should optimize away. */
/* { dg-final { scan-tree-dump-times "\\(short unsigned int\\)" 0 "dom3"} } */ /* { dg-final { scan-tree-dump-times "\\(short unsigned int\\)" 0 "dom2"} } */
/* There should be no IF conditionals. */ /* There should be no IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
...@@ -36,13 +36,13 @@ record_component_aliases (type) ...@@ -36,13 +36,13 @@ record_component_aliases (type)
/* There should be precisely one load of type.binfo. If there is /* There should be precisely one load of type.binfo. If there is
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "type\\.binfo" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "type\\.binfo" 1 "dom2"} } */
/* There should be precisely one load of common.code. If there is /* There should be precisely one load of common.code. If there is
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "common\\.code" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "common\\.code" 1 "dom2"} } */
/* There should be one IF conditional. */ /* There should be one IF conditional. */
/* { dg-final { scan-tree-dump-times "if " 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
union tree_node; union tree_node;
...@@ -41,15 +41,15 @@ record_component_aliases (type) ...@@ -41,15 +41,15 @@ record_component_aliases (type)
/* The call to blah should have been eliminated. If the call is not /* The call to blah should have been eliminated. If the call is not
eliminated, then dominator optimizations failed and it'll be eliminated, then dominator optimizations failed and it'll be
impossible to delete other unnecessary code. */ impossible to delete other unnecessary code. */
/* { dg-final { scan-tree-dump-not "blah \\(\\)" "dom3" } } */ /* { dg-final { scan-tree-dump-not "blah \\(\\)" "dom2" } } */
/* There should be two IF conditionals. */ /* There should be two IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 2 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
/* There should be a single load of type.binfo. */ /* There should be a single load of type.binfo. */
/* { dg-final { scan-tree-dump-times "type\\.binfo" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "type\\.binfo" 1 "dom2"} } */
/* There should be two loads of vec.length. */ /* There should be two loads of vec.length. */
/* { dg-final { scan-tree-dump-times "vec.length" 2 "dom3"} } */ /* { dg-final { scan-tree-dump-times "vec.length" 2 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
...@@ -41,15 +41,15 @@ record_component_aliases (type) ...@@ -41,15 +41,15 @@ record_component_aliases (type)
} }
/* The call to blah can not be eliminated. */ /* The call to blah can not be eliminated. */
/* { dg-final { scan-tree-dump-times "blah \\(\\)" 1 "dom3" } } */ /* { dg-final { scan-tree-dump-times "blah \\(\\)" 1 "dom2" } } */
/* There should be four IF conditionals. */ /* There should be four IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 3 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 4 "dom2"} } */
/* There should be two loads of type.binfo. */ /* There should be two loads of type.binfo. */
/* { dg-final { scan-tree-dump-times "type\\.binfo" 2 "dom3"} } */ /* { dg-final { scan-tree-dump-times "type\\.binfo" 2 "dom2"} } */
/* There should be four loads of vec.length. */ /* There should be four loads of vec.length. */
/* { dg-final { scan-tree-dump-times "vec.length" 3 "dom3"} } */ /* { dg-final { scan-tree-dump-times "vec.length" 4 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-dom3" } */ /* { dg-options "-O2 -fdump-tree-dom2" } */
struct rtx_def; struct rtx_def;
...@@ -49,21 +49,21 @@ get_alias_set (t,z) ...@@ -49,21 +49,21 @@ get_alias_set (t,z)
} }
/* The calls to make_decl_rtl should be eliminated /* The calls to make_decl_rtl should be eliminated
/* { dg-final { scan-tree-dump-not "make_decl_rtl \\(\\)" "dom3" } } */ /* { dg-final { scan-tree-dump-not "make_decl_rtl \\(\\)" "dom2" } } */
/* There should be three IF conditionals. */ /* There should be three IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 3 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 3 "dom2"} } */
/* There should be one loads of decl.rtl. */ /* There should be one loads of decl.rtl. */
/* { dg-final { scan-tree-dump-times "decl\\.rtl" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "decl\\.rtl" 1 "dom2"} } */
/* There should be one load of code. */ /* There should be one load of code. */
/* { dg-final { scan-tree-dump-times "code" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "code" 1 "dom2"} } */
/* There should be one load of rtmem. */ /* There should be one load of rtmem. */
/* { dg-final { scan-tree-dump-times "rtmem" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "rtmem" 1 "dom2"} } */
/* There should be one load of alias. */ /* There should be one load of alias. */
/* { dg-final { scan-tree-dump-times "->alias" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "->alias" 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
struct rtx_def; struct rtx_def;
...@@ -44,18 +44,18 @@ get_alias_set (t) ...@@ -44,18 +44,18 @@ get_alias_set (t)
} }
/* The calls to make_decl_rtl should be eliminated. */ /* The calls to make_decl_rtl should be eliminated. */
/* { dg-final { scan-tree-dump-not "make_decl_rtl \\(\\)" "dom3" } } */ /* { dg-final { scan-tree-dump-not "make_decl_rtl \\(\\)" "dom2" } } */
/* There should be two IF conditionals. */ /* There should be two IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 2 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
/* There should be one load of decl.rtl. */ /* There should be one load of decl.rtl. */
/* { dg-final { scan-tree-dump-times "decl\\.rtl" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "decl\\.rtl" 1 "dom2"} } */
/* There should be two loads of rtmem. */ /* There should be two loads of rtmem. */
/* { dg-final { scan-tree-dump-times "rtmem" 2 "dom3"} } */ /* { dg-final { scan-tree-dump-times "rtmem" 2 "dom2"} } */
/* There should be one load of alias. */ /* There should be one load of alias. */
/* { dg-final { scan-tree-dump-times "->alias" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "->alias" 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
struct rtx_def; struct rtx_def;
typedef struct rtx_def *rtx; typedef struct rtx_def *rtx;
...@@ -35,6 +35,6 @@ find_base_value (src) ...@@ -35,6 +35,6 @@ find_base_value (src)
/* There should be no casts to short unsigned int. */ /* There should be no casts to short unsigned int. */
/* { dg-final { scan-tree-dump-times "\\(short unsigned int\\)" 0 "dom3"} } */ /* { dg-final { scan-tree-dump-times "\\(short unsigned int\\)" 0 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
union tree_node; union tree_node;
...@@ -34,6 +34,6 @@ get_alias_set (t) ...@@ -34,6 +34,6 @@ get_alias_set (t)
/* There should be exactly three IF conditionals if we thread jumps /* There should be exactly three IF conditionals if we thread jumps
properly. */ properly. */
/* { dg-final { scan-tree-dump-times "if " 3 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 3 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
union tree_node; union tree_node;
...@@ -45,10 +45,10 @@ readonly_fields_p (type) ...@@ -45,10 +45,10 @@ readonly_fields_p (type)
/* A good optimizer would realize that the cast to (unsigned int) is /* A good optimizer would realize that the cast to (unsigned int) is
useless as the earlier cast of the same value of (unsigned char) will useless as the earlier cast of the same value of (unsigned char) will
always produce the same result. */ always produce the same result. */
/* { dg-final { scan-tree-dump-times "\\(unsigned int\\)" 0 "dom3"} } */ /* { dg-final { scan-tree-dump-times "\\(unsigned int\\)" 0 "dom2"} } */
/* There should be one load of ->common.code. We currently fail this /* There should be one load of ->common.code. We currently fail this
because we load from ->common.code using different types. */ because we load from ->common.code using different types. */
/* { dg-final { scan-tree-dump-times "common\.code" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "common\.code" 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-dom3" } */ /* { dg-options "-O2 -fdump-tree-dom2" } */
extern void exit (int); extern void exit (int);
extern void *ggc_alloc (__SIZE_TYPE__); extern void *ggc_alloc (__SIZE_TYPE__);
...@@ -19,7 +19,7 @@ foo (int attr_kind, unsigned long offset) ...@@ -19,7 +19,7 @@ foo (int attr_kind, unsigned long offset)
} }
/* There should be no IF conditionals, unless target has fno-delete-null-pointer-checks */ /* There should be no IF conditionals, unless target has fno-delete-null-pointer-checks */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3" { target { ! keeps_null_pointer_checks } } } } */ /* { dg-final { scan-tree-dump-times "if " 0 "dom2" { target { ! keeps_null_pointer_checks } } } } */
/* { dg-final { scan-tree-dump "if " "dom3" { target { keeps_null_pointer_checks } } } } */ /* { dg-final { scan-tree-dump "if " "dom2" { target { keeps_null_pointer_checks } } } } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-dom3" } */ /* { dg-options "-O2 -fdump-tree-dom2" } */
extern void exit (int); extern void exit (int);
extern void *ggc_alloc (__SIZE_TYPE__); extern void *ggc_alloc (__SIZE_TYPE__);
...@@ -19,7 +19,7 @@ foo (int attr_kind, unsigned long offset) ...@@ -19,7 +19,7 @@ foo (int attr_kind, unsigned long offset)
} }
/* There should be no IF conditionals, unless target has fno-delete-null-pointer-checks */ /* There should be no IF conditionals, unless target has fno-delete-null-pointer-checks */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3" { target { ! keeps_null_pointer_checks } } } } */ /* { dg-final { scan-tree-dump-times "if " 0 "dom2" { target { ! keeps_null_pointer_checks } } } } */
/* { dg-final { scan-tree-dump "if " "dom3" { target { keeps_null_pointer_checks } } } } */ /* { dg-final { scan-tree-dump "if " "dom2" { target { keeps_null_pointer_checks } } } } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
...@@ -63,5 +63,5 @@ store_expr (exp, target, want_value) ...@@ -63,5 +63,5 @@ store_expr (exp, target, want_value)
(B) only looks at immediate dominators, and only queued_subexp_p (B) only looks at immediate dominators, and only queued_subexp_p
immediately dominates the comparison in question. We need something immediately dominates the comparison in question. We need something
stronger. */ stronger. */
/* { dg-final { scan-tree-dump-times "target.*!= 0" 0 "dom3" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump-times "target.*!= 0" 0 "dom2" { xfail *-*-* } } } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
struct rtx_def; struct rtx_def;
typedef struct rtx_def *rtx; typedef struct rtx_def *rtx;
...@@ -41,5 +41,5 @@ bar (rtx r) ...@@ -41,5 +41,5 @@ bar (rtx r)
are threaded to the return 0. Which in turn means the path are threaded to the return 0. Which in turn means the path
which combines the result of those two tests into a new test which combines the result of those two tests into a new test
must always be true and it is optimized appropriately. */ must always be true and it is optimized appropriately. */
/* { dg-final { scan-tree-dump-times "if " 2 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
struct rtx_def; struct rtx_def;
...@@ -17,5 +17,5 @@ foo (reg) ...@@ -17,5 +17,5 @@ foo (reg)
} }
/* There should be no IF conditionals. */ /* There should be no IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -ftree-vrp -fdump-tree-dom3" } */ /* { dg-options "-O1 -ftree-vrp -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
...@@ -24,5 +24,5 @@ foo(int n) ...@@ -24,5 +24,5 @@ foo(int n)
/* There should be no IF conditionals. */ /* There should be no IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3" } } */ /* { dg-final { scan-tree-dump-times "if " 0 "dom2" } } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
typedef unsigned int cppchar_t; typedef unsigned int cppchar_t;
cppchar_t cppchar_t
...@@ -23,5 +23,5 @@ cpp_parse_escape (pstr, limit, wide) ...@@ -23,5 +23,5 @@ cpp_parse_escape (pstr, limit, wide)
/* There should be precisely three IF statements. If there is /* There should be precisely three IF statements. If there is
more than two, then the dominator optimizations failed. */ more than two, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "if " 3 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 3 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
struct rtx_def; struct rtx_def;
...@@ -30,10 +30,10 @@ foo () ...@@ -30,10 +30,10 @@ foo ()
/* There should be precisely one load of ->code. If there is /* There should be precisely one load of ->code. If there is
more than, then the dominator optimizations failed. */ more than, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "->code" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "->code" 1 "dom2"} } */
/* There should be two IF statements. One for 'current_sym_addr->code == 42'. /* There should be two IF statements. One for 'current_sym_addr->code == 42'.
The other one for '(EXPR)->unchanging'. */ The other one for '(EXPR)->unchanging'. */
/* { dg-final { scan-tree-dump-times "if " 2 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
struct die_struct; struct die_struct;
typedef struct die_struct *dw_die_ref; typedef struct die_struct *dw_die_ref;
...@@ -51,5 +51,5 @@ output_location_lists (die) ...@@ -51,5 +51,5 @@ output_location_lists (die)
} }
/* There should be exactly one IF conditional, in output_location_lists. */ /* There should be exactly one IF conditional, in output_location_lists. */
/* { dg-final { scan-tree-dump-times "if " 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
static void static void
bar () bar ()
...@@ -16,5 +16,5 @@ ooof () ...@@ -16,5 +16,5 @@ ooof ()
} }
/* There should be no IF conditionals. */ /* There should be no IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
...@@ -16,6 +16,6 @@ com(int *blah) ...@@ -16,6 +16,6 @@ com(int *blah)
/* There should be precisely one load of blah. If there is /* There should be precisely one load of blah. If there is
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "\\*blah" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "\\*blah" 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
...@@ -17,6 +17,6 @@ foo (int value) ...@@ -17,6 +17,6 @@ foo (int value)
} }
/* There should be no IF conditionals. */ /* There should be no IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
...@@ -18,6 +18,6 @@ foo (int value) ...@@ -18,6 +18,6 @@ foo (int value)
} }
/* There should be one IF conditional. */ /* There should be one IF conditional. */
/* { dg-final { scan-tree-dump-times "if " 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3 -fdump-tree-optimized" } */ /* { dg-options "-O1 -fdump-tree-dom2 -fdump-tree-optimized" } */
extern void abort (void); extern void abort (void);
union tree_node; union tree_node;
...@@ -34,8 +34,8 @@ blah (decl, set) ...@@ -34,8 +34,8 @@ blah (decl, set)
/* There should be precisely one reference to pointer_alias_set. If there is /* There should be precisely one reference to pointer_alias_set. If there is
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* The assignment set = -1 in the ELSE clause of the last IF /* The assignment set = -1 in the ELSE clause of the last IF
statement should be removed by the final cleanup phase. */ statement should be removed by the final cleanup phase. */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3 -fdump-tree-optimized" } */ /* { dg-options "-O1 -fdump-tree-dom2 -fdump-tree-optimized" } */
extern void abort (void); extern void abort (void);
union tree_node; union tree_node;
...@@ -34,8 +34,8 @@ blah (decl, set) ...@@ -34,8 +34,8 @@ blah (decl, set)
/* There should be precisely one reference to pointer_alias_set. If there is /* There should be precisely one reference to pointer_alias_set. If there is
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom3"} } */ /* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* The assignment set = -1 in the ELSE clause of the last IF /* The assignment set = -1 in the ELSE clause of the last IF
statement should be removed by the final cleanup phase. */ statement should be removed by the final cleanup phase. */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
union tree_node; union tree_node;
...@@ -41,5 +41,5 @@ foo (t, set) ...@@ -41,5 +41,5 @@ foo (t, set)
more than one, then the dominator optimizations failed. */ more than one, then the dominator optimizations failed. */
/* ??? Will fail until we properly distinguish member stores. At /* ??? Will fail until we properly distinguish member stores. At
present the write to type.alias_set kills the previous load. */ present the write to type.alias_set kills the previous load. */
/* { dg-final { scan-tree-dump-times "common.code" 1 "dom3" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump-times "common.code" 1 "dom2" { xfail *-*-* } } } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
struct rtx_def; struct rtx_def;
...@@ -38,5 +38,5 @@ mark_constant_function (void) ...@@ -38,5 +38,5 @@ mark_constant_function (void)
and the temporary used as the argument to cgraph_rtl_info. and the temporary used as the argument to cgraph_rtl_info.
This if we find current_function_decl used as an argument, then This if we find current_function_decl used as an argument, then
we have failed. */ we have failed. */
/* { dg-final { scan-tree-dump-times "\\(current_function_decl\\)" 0 "dom3"} } */ /* { dg-final { scan-tree-dump-times "\\(current_function_decl\\)" 0 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
extern void abort (void); extern void abort (void);
...@@ -30,5 +30,5 @@ voidify_wrapper_expr (tree wrapper) ...@@ -30,5 +30,5 @@ voidify_wrapper_expr (tree wrapper)
/* There should be no IF conditionals. */ /* There should be no IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dce3" } */ /* { dg-options "-O1 -fdump-tree-dce2" } */
foo () foo ()
{ {
...@@ -15,5 +15,5 @@ foo () ...@@ -15,5 +15,5 @@ foo ()
compiler was mistakenly thinking that the statement had volatile compiler was mistakenly thinking that the statement had volatile
operands. But 'p' itself is not volatile and taking the address of operands. But 'p' itself is not volatile and taking the address of
a volatile does not constitute a volatile operand. */ a volatile does not constitute a volatile operand. */
/* { dg-final { scan-tree-dump-times "&x" 0 "dce3"} } */ /* { dg-final { scan-tree-dump-times "&x" 0 "dce2"} } */
/* { dg-final { cleanup-tree-dump "dce3" } } */ /* { dg-final { cleanup-tree-dump "dce2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom3" } */ /* { dg-options "-O1 -fdump-tree-dom2" } */
typedef unsigned int size_t; typedef unsigned int size_t;
...@@ -34,5 +34,5 @@ find_unreachable_blocks (int frobit) ...@@ -34,5 +34,5 @@ find_unreachable_blocks (int frobit)
able to determine that modifying e->dest->flags does not able to determine that modifying e->dest->flags does not
modify e or e->dest. The net result is that we only need one modify e or e->dest. The net result is that we only need one
load of e->dest. */ load of e->dest. */
/* { dg-final { scan-tree-dump-times "->dest" 1 "dom3" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump-times "->dest" 1 "dom2" { xfail *-*-* } } } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-dom3-details" } */ /* { dg-options "-O2 -fdump-tree-dom2-details" } */
struct tree_common struct tree_common
{ {
...@@ -49,6 +49,6 @@ L23: ...@@ -49,6 +49,6 @@ L23:
/* We should thread the backedge to the top of the loop; ie we only /* We should thread the backedge to the top of the loop; ie we only
execute the if (expr->common.code != 142) test once per loop execute the if (expr->common.code != 142) test once per loop
iteration. */ iteration. */
/* { dg-final { scan-tree-dump-times "Threaded jump" 1 "dom3" } } */ /* { dg-final { scan-tree-dump-times "Threaded jump" 1 "dom2" } } */
/* { dg-final { cleanup-tree-dump "dom3" } } */ /* { dg-final { cleanup-tree-dump "dom2" } } */
...@@ -16,6 +16,6 @@ int test(int v) ...@@ -16,6 +16,6 @@ int test(int v)
return x; return x;
} }
/* { dg-final { scan-tree-dump-times "Original statement:.*% 2\[ \t\n]*Updated statement.*=1" 0 "phicprop3" } } */ /* { dg-final { scan-tree-dump-times "Original statement:.*% 2\[ \t\n]*Updated statement.*=1" 0 "phicprop2" } } */
/* { dg-final { cleanup-tree-dump "phicprop\[1-3\]" } } */ /* { dg-final { cleanup-tree-dump "phicprop\[1-2\]" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dce3" } */ /* { dg-options "-O1 -fdump-tree-dce2" } */
int t() __attribute__ ((const)); int t() __attribute__ ((const));
q() q()
...@@ -9,5 +9,5 @@ q() ...@@ -9,5 +9,5 @@ q()
i = t(); i = t();
} }
/* There should be no IF conditionals. */ /* There should be no IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 0 "dce3"} } */ /* { dg-final { scan-tree-dump-times "if " 0 "dce2"} } */
/* { dg-final { cleanup-tree-dump "dce3" } } */ /* { dg-final { cleanup-tree-dump "dce2" } } */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-dce3" } */ /* { dg-options "-O2 -fdump-tree-dce2" } */
/* We should notice constantness of this function. */ /* We should notice constantness of this function. */
static int __attribute__((noinline)) t(int a) static int __attribute__((noinline)) t(int a)
...@@ -13,5 +13,5 @@ void q(void) ...@@ -13,5 +13,5 @@ void q(void)
i = t(1); i = t(1);
} }
/* There should be no IF conditionals. */ /* There should be no IF conditionals. */
/* { dg-final { scan-tree-dump-times "if " 0 "dce3"} } */ /* { dg-final { scan-tree-dump-times "if " 0 "dce2"} } */
/* { dg-final { cleanup-tree-dump "dce3" } } */ /* { dg-final { cleanup-tree-dump "dce2" } } */
...@@ -29,6 +29,5 @@ Subroutine PADEC(DKS,DKDS,HVAR,WM,WG,FN,NS,AN,BN,CN,IT) ...@@ -29,6 +29,5 @@ Subroutine PADEC(DKS,DKDS,HVAR,WM,WG,FN,NS,AN,BN,CN,IT)
return return
end Subroutine PADEC end Subroutine PADEC
! { dg-final { scan-tree-dump-times "distributed: split to 4 loops" 1 "ldist" { target ilp32 } } } ! { dg-final { scan-tree-dump-times "distributed: split to 4 loops" 1 "ldist" } }
! { dg-final { scan-tree-dump-times "distributed: split to 5 loops" 1 "ldist" { target lp64 } } }
! { dg-final { cleanup-tree-dump "ldist" } } ! { dg-final { cleanup-tree-dump "ldist" } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment