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
This commit is contained in:
parent
34afead0f1
commit
e2081a1d5d
42 changed files with 188 additions and 149 deletions
|
@ -1,3 +1,10 @@
|
|||
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>
|
||||
|
||||
* configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
|
||||
|
|
10
gcc/passes.c
10
gcc/passes.c
|
@ -589,6 +589,7 @@ init_optimization_passes (void)
|
|||
NEXT_PASS (pass_rename_ssa_copies);
|
||||
NEXT_PASS (pass_complete_unrolli);
|
||||
NEXT_PASS (pass_ccp);
|
||||
NEXT_PASS (pass_forwprop);
|
||||
/* Ideally the function call conditional
|
||||
dead code elimination phase can be delayed
|
||||
till later where potentially more opportunities
|
||||
|
@ -605,20 +606,11 @@ init_optimization_passes (void)
|
|||
NEXT_PASS (pass_return_slot);
|
||||
NEXT_PASS (pass_phiprop);
|
||||
NEXT_PASS (pass_fre);
|
||||
NEXT_PASS (pass_dce);
|
||||
NEXT_PASS (pass_forwprop);
|
||||
NEXT_PASS (pass_copy_prop);
|
||||
NEXT_PASS (pass_merge_phi);
|
||||
NEXT_PASS (pass_vrp);
|
||||
NEXT_PASS (pass_dce);
|
||||
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_phiopt);
|
||||
NEXT_PASS (pass_tail_recursion);
|
||||
|
|
|
@ -1,3 +1,45 @@
|
|||
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>
|
||||
|
||||
* gcc.dg/vect/vect-multitypes-15.c: Fix typo.
|
||||
|
|
|
@ -12,6 +12,5 @@ void foo (int j)
|
|||
*q = 1;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "i\\\[j.*\\\] = 1;" "forwprop1" { xfail *-*-* } } } */
|
||||
/* { dg-final { scan-tree-dump "i\\\[j.*\\\] = 1;" "forwprop2" } } */
|
||||
/* { dg-final { scan-tree-dump "i\\\[j.*\\\] =.* 1;" "forwprop1" } } */
|
||||
/* { dg-final { cleanup-tree-dump "forwprop?" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
|
||||
typedef struct rs6000_stack {
|
||||
|
@ -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
|
||||
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
|
||||
the dominator optimizations failed, most likely due to not handling
|
||||
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" } } */
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern int square (int) __attribute__ ((__const__));
|
||||
shit(int a)
|
||||
|
@ -10,5 +10,5 @@ shit(int a)
|
|||
|
||||
/* There should be precisely one call to square. If there is more than one,
|
||||
then the dominator optimizations failed to remove the redundant call. */
|
||||
/* { dg-final { scan-tree-dump-times "square" 1 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "square" 1 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
extern int blah[];
|
||||
|
@ -14,9 +14,9 @@ foo(int index)
|
|||
|
||||
/* There should be precisely one load of blah. If there is
|
||||
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. */
|
||||
/* { 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
|
@ -29,16 +29,16 @@ get_alias_set (t)
|
|||
|
||||
/* There should be precisely one load of {t,__t}->code. If there is
|
||||
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
|
||||
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
|
||||
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
|
||||
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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
extern void abort (void);
|
||||
struct rtx_def;
|
||||
typedef struct rtx_def *rtx;
|
||||
|
@ -35,9 +35,9 @@ nonlocal_mentioned_p (x)
|
|||
|
||||
/* There should be no casts to a short unsigned int since the entire
|
||||
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. */
|
||||
/* { 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
|
@ -36,13 +36,13 @@ record_component_aliases (type)
|
|||
|
||||
/* There should be precisely one load of type.binfo. If there is
|
||||
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
|
||||
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. */
|
||||
/* { 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
union tree_node;
|
||||
|
@ -41,15 +41,15 @@ record_component_aliases (type)
|
|||
/* The call to blah should have been eliminated. If the call is not
|
||||
eliminated, then dominator optimizations failed and it'll be
|
||||
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. */
|
||||
/* { 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. */
|
||||
/* { 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. */
|
||||
/* { 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
|
@ -41,15 +41,15 @@ record_component_aliases (type)
|
|||
}
|
||||
|
||||
/* 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. */
|
||||
/* { 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. */
|
||||
/* { 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. */
|
||||
/* { 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O2 -fdump-tree-dom2" } */
|
||||
|
||||
|
||||
struct rtx_def;
|
||||
|
@ -49,21 +49,21 @@ get_alias_set (t,z)
|
|||
}
|
||||
|
||||
/* 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. */
|
||||
/* { 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. */
|
||||
/* { 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. */
|
||||
/* { 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. */
|
||||
/* { 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. */
|
||||
/* { 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
|
||||
struct rtx_def;
|
||||
|
@ -44,18 +44,18 @@ get_alias_set (t)
|
|||
}
|
||||
|
||||
/* 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. */
|
||||
/* { 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. */
|
||||
/* { 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. */
|
||||
/* { 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. */
|
||||
/* { 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
struct rtx_def;
|
||||
typedef struct rtx_def *rtx;
|
||||
|
@ -35,6 +35,6 @@ find_base_value (src)
|
|||
|
||||
|
||||
/* 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
|
||||
union tree_node;
|
||||
|
@ -34,6 +34,6 @@ get_alias_set (t)
|
|||
|
||||
/* There should be exactly three IF conditionals if we thread jumps
|
||||
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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
union tree_node;
|
||||
|
@ -45,10 +45,10 @@ readonly_fields_p (type)
|
|||
/* 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
|
||||
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
|
||||
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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O2 -fdump-tree-dom2" } */
|
||||
|
||||
extern void exit (int);
|
||||
extern void *ggc_alloc (__SIZE_TYPE__);
|
||||
|
@ -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 */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom3" { target { ! keeps_null_pointer_checks } } } } */
|
||||
/* { dg-final { scan-tree-dump "if " "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 " "dom2" { target { keeps_null_pointer_checks } } } } */
|
||||
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O2 -fdump-tree-dom2" } */
|
||||
|
||||
extern void exit (int);
|
||||
extern void *ggc_alloc (__SIZE_TYPE__);
|
||||
|
@ -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 */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom3" { target { ! keeps_null_pointer_checks } } } } */
|
||||
/* { dg-final { scan-tree-dump "if " "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 " "dom2" { target { keeps_null_pointer_checks } } } } */
|
||||
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
|
@ -63,5 +63,5 @@ store_expr (exp, target, want_value)
|
|||
(B) only looks at immediate dominators, and only queued_subexp_p
|
||||
immediately dominates the comparison in question. We need something
|
||||
stronger. */
|
||||
/* { dg-final { scan-tree-dump-times "target.*!= 0" 0 "dom3" { xfail *-*-* } } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "target.*!= 0" 0 "dom2" { xfail *-*-* } } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
struct rtx_def;
|
||||
typedef struct rtx_def *rtx;
|
||||
|
@ -41,5 +41,5 @@ bar (rtx r)
|
|||
are threaded to the return 0. Which in turn means the path
|
||||
which combines the result of those two tests into a new test
|
||||
must always be true and it is optimized appropriately. */
|
||||
/* { dg-final { scan-tree-dump-times "if " 2 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
struct rtx_def;
|
||||
|
@ -17,5 +17,5 @@ foo (reg)
|
|||
}
|
||||
|
||||
/* There should be no IF conditionals. */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -ftree-vrp -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -ftree-vrp -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
|
@ -24,5 +24,5 @@ foo(int n)
|
|||
|
||||
|
||||
/* There should be no IF conditionals. */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom3" } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom2" } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
typedef unsigned int cppchar_t;
|
||||
cppchar_t
|
||||
|
@ -23,5 +23,5 @@ cpp_parse_escape (pstr, limit, wide)
|
|||
|
||||
/* There should be precisely three IF statements. If there is
|
||||
more than two, then the dominator optimizations failed. */
|
||||
/* { dg-final { scan-tree-dump-times "if " 3 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "if " 3 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
struct rtx_def;
|
||||
|
@ -30,10 +30,10 @@ foo ()
|
|||
|
||||
/* There should be precisely one load of ->code. If there is
|
||||
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'.
|
||||
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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
struct die_struct;
|
||||
typedef struct die_struct *dw_die_ref;
|
||||
|
@ -51,5 +51,5 @@ output_location_lists (die)
|
|||
}
|
||||
|
||||
/* There should be exactly one IF conditional, in output_location_lists. */
|
||||
/* { dg-final { scan-tree-dump-times "if " 1 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
static void
|
||||
bar ()
|
||||
|
@ -16,5 +16,5 @@ ooof ()
|
|||
}
|
||||
|
||||
/* There should be no IF conditionals. */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
|
@ -16,6 +16,6 @@ com(int *blah)
|
|||
|
||||
/* There should be precisely one load of blah. If there is
|
||||
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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
|
@ -17,6 +17,6 @@ foo (int value)
|
|||
}
|
||||
|
||||
/* 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
|
@ -18,6 +18,6 @@ foo (int value)
|
|||
}
|
||||
|
||||
/* 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" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { 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);
|
||||
union tree_node;
|
||||
|
@ -34,8 +34,8 @@ blah (decl, set)
|
|||
|
||||
/* There should be precisely one reference to pointer_alias_set. If there is
|
||||
more than one, then the dominator optimizations failed. */
|
||||
/* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
||||
/* The assignment set = -1 in the ELSE clause of the last IF
|
||||
statement should be removed by the final cleanup phase. */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { 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);
|
||||
union tree_node;
|
||||
|
@ -34,8 +34,8 @@ blah (decl, set)
|
|||
|
||||
/* There should be precisely one reference to pointer_alias_set. If there is
|
||||
more than one, then the dominator optimizations failed. */
|
||||
/* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
||||
/* The assignment set = -1 in the ELSE clause of the last IF
|
||||
statement should be removed by the final cleanup phase. */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
union tree_node;
|
||||
|
@ -41,5 +41,5 @@ foo (t, set)
|
|||
more than one, then the dominator optimizations failed. */
|
||||
/* ??? Will fail until we properly distinguish member stores. At
|
||||
present the write to type.alias_set kills the previous load. */
|
||||
/* { dg-final { scan-tree-dump-times "common.code" 1 "dom3" { xfail *-*-* } } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "common.code" 1 "dom2" { xfail *-*-* } } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
struct rtx_def;
|
||||
|
@ -38,5 +38,5 @@ mark_constant_function (void)
|
|||
and the temporary used as the argument to cgraph_rtl_info.
|
||||
This if we find current_function_decl used as an argument, then
|
||||
we have failed. */
|
||||
/* { dg-final { scan-tree-dump-times "\\(current_function_decl\\)" 0 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "\\(current_function_decl\\)" 0 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
|
@ -30,5 +30,5 @@ voidify_wrapper_expr (tree wrapper)
|
|||
|
||||
|
||||
/* There should be no IF conditionals. */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dce3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dce2" } */
|
||||
|
||||
foo ()
|
||||
{
|
||||
|
@ -15,5 +15,5 @@ foo ()
|
|||
compiler was mistakenly thinking that the statement had volatile
|
||||
operands. But 'p' itself is not volatile and taking the address of
|
||||
a volatile does not constitute a volatile operand. */
|
||||
/* { dg-final { scan-tree-dump-times "&x" 0 "dce3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dce3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "&x" 0 "dce2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dce2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dom2" } */
|
||||
|
||||
|
||||
typedef unsigned int size_t;
|
||||
|
@ -34,5 +34,5 @@ find_unreachable_blocks (int frobit)
|
|||
able to determine that modifying e->dest->flags does not
|
||||
modify e or e->dest. The net result is that we only need one
|
||||
load of e->dest. */
|
||||
/* { dg-final { scan-tree-dump-times "->dest" 1 "dom3" { xfail *-*-* } } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "->dest" 1 "dom2" { xfail *-*-* } } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-dom3-details" } */
|
||||
/* { dg-options "-O2 -fdump-tree-dom2-details" } */
|
||||
|
||||
struct tree_common
|
||||
{
|
||||
|
@ -49,6 +49,6 @@ L23:
|
|||
/* 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
|
||||
iteration. */
|
||||
/* { dg-final { scan-tree-dump-times "Threaded jump" 1 "dom3" } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "Threaded jump" 1 "dom2" } } */
|
||||
/* { dg-final { cleanup-tree-dump "dom2" } } */
|
||||
|
||||
|
|
|
@ -16,6 +16,6 @@ int test(int v)
|
|||
return x;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Original statement:.*% 2\[ \t\n]*Updated statement.*=1" 0 "phicprop3" } } */
|
||||
/* { dg-final { cleanup-tree-dump "phicprop\[1-3\]" } } */
|
||||
/* { dg-final { scan-tree-dump-times "Original statement:.*% 2\[ \t\n]*Updated statement.*=1" 0 "phicprop2" } } */
|
||||
/* { dg-final { cleanup-tree-dump "phicprop\[1-2\]" } } */
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fdump-tree-dce3" } */
|
||||
/* { dg-options "-O1 -fdump-tree-dce2" } */
|
||||
|
||||
int t() __attribute__ ((const));
|
||||
q()
|
||||
|
@ -9,5 +9,5 @@ q()
|
|||
i = t();
|
||||
}
|
||||
/* There should be no IF conditionals. */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dce3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dce3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dce2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dce2" } } */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-dce3" } */
|
||||
/* { dg-options "-O2 -fdump-tree-dce2" } */
|
||||
|
||||
/* We should notice constantness of this function. */
|
||||
static int __attribute__((noinline)) t(int a)
|
||||
|
@ -13,5 +13,5 @@ void q(void)
|
|||
i = t(1);
|
||||
}
|
||||
/* There should be no IF conditionals. */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dce3"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dce3" } } */
|
||||
/* { dg-final { scan-tree-dump-times "if " 0 "dce2"} } */
|
||||
/* { dg-final { cleanup-tree-dump "dce2" } } */
|
||||
|
|
|
@ -29,6 +29,5 @@ Subroutine PADEC(DKS,DKDS,HVAR,WM,WG,FN,NS,AN,BN,CN,IT)
|
|||
return
|
||||
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 5 loops" 1 "ldist" { target lp64 } } }
|
||||
! { dg-final { scan-tree-dump-times "distributed: split to 4 loops" 1 "ldist" } }
|
||||
! { dg-final { cleanup-tree-dump "ldist" } }
|
||||
|
|
Loading…
Add table
Reference in a new issue