Commit ec18e2eb by Richard Biener Committed by Richard Biener

tree-ssa-propagate.c: Include domwalk.h.

2014-06-17  Richard Biener  <rguenther@suse.de>

	* tree-ssa-propagate.c: Include domwalk.h.
	(substitute_and_fold): Outline main worker into a domwalker ...
	(substitute_and_fold_dom_walker::before_dom_children): ... here.
	Schedule stmts we can fully propagate for removal.  Remove
	poor-mans DCE.
	(substitute_and_fold): Apply a dominator walk to perform
	substitution.  Process stmts scheduled for removal here.

	* gcc.dg/tree-ssa/20041122-1.c: Adjust.
	* gcc.dg/tree-ssa/forwprop-21.c: Likewise.
	* gcc.dg/tree-ssa/vrp35.c: Revert previous adjustments.
	* gcc.dg/tree-ssa/vrp36.c: Likewise.
	* gcc.dg/vect/nodump-forwprop-22.c: Adjust.

From-SVN: r211725
parent a4ab23b6
2014-06-17 Richard Biener <rguenther@suse.de>
* tree-ssa-propagate.c: Include domwalk.h.
(substitute_and_fold): Outline main worker into a domwalker ...
(substitute_and_fold_dom_walker::before_dom_children): ... here.
Schedule stmts we can fully propagate for removal. Remove
poor-mans DCE.
(substitute_and_fold): Apply a dominator walk to perform
substitution. Process stmts scheduled for removal here.
2014-06-17 Richard Biener <rguenther@suse.de>
* tree-ssa-loop-im.c (determine_max_movement): Adjust cost
of PHI node moving.
......
2014-06-17 Richard Biener <rguenther@suse.de>
* gcc.dg/tree-ssa/20041122-1.c: Adjust.
* gcc.dg/tree-ssa/forwprop-21.c: Likewise.
* gcc.dg/tree-ssa/vrp35.c: Revert previous adjustments.
* gcc.dg/tree-ssa/vrp36.c: Likewise.
* gcc.dg/vect/nodump-forwprop-22.c: Adjust.
2014-06-17 Richard Biener <rguenther@suse.de>
* gcc.dg/tree-ssa/ssa-lim-12.c: New testcase.
2014-06-16 Richard Biener <rguenther@suse.de>
......
/* { dg-do compile } */
/* { dg-options "-O1 -fstrict-aliasing -fdump-tree-fre1" } */
/* { dg-options "-O1 -fstrict-aliasing -fdump-tree-cddce1" } */
__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 "fre1" } } */
/* { dg-final { cleanup-tree-dump "fre1" } } */
/* { dg-final { scan-tree-dump-times "->dest" 1 "cddce1" } } */
/* { dg-final { cleanup-tree-dump "cddce1" } } */
/* { dg-do compile } */
/* { dg-options "-O -fdump-tree-copyprop1" } */
/* { dg-options "-O -fdump-tree-cddce1 -fno-tree-fre" } */
typedef int v4si __attribute__ ((vector_size (4 * sizeof(int))));
int
......@@ -10,7 +10,7 @@ test (v4si *x, v4si *y)
return z[2];
}
/* Optimization in forwprop1, cleanup in copyprop1. */
/* Optimization in forwprop1, cleanup in cddce1. */
/* { dg-final { scan-tree-dump-not "VEC_PERM_EXPR" "copyprop1" } } */
/* { dg-final { cleanup-tree-dump "copyprop1" } } */
/* { dg-final { scan-tree-dump-not "VEC_PERM_EXPR" "cddce1" } } */
/* { dg-final { cleanup-tree-dump "cddce1" } } */
......@@ -11,5 +11,5 @@ int test1(int i, int k)
return 1;
}
/* { dg-final { scan-tree-dump-not "j_.* == 10" "vrp1" } } */
/* { dg-final { scan-tree-dump "Folding predicate j_.* == 10 to 0" "vrp1" } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */
......@@ -8,5 +8,5 @@ int foo(int i)
return 1;
}
/* { dg-final { scan-tree-dump-not "i_.* == 1" "vrp1" } } */
/* { dg-final { scan-tree-dump "Folding predicate i_.* == 1 to 0" "vrp1" } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */
/* { dg-do compile } */
/* { dg-require-effective-target vect_double } */
/* { dg-require-effective-target vect_perm } */
/* { dg-additional-options "-fdump-tree-copyprop1" } */
/* { dg-additional-options "-fdump-tree-cddce1 -fno-tree-fre" } */
typedef double vec __attribute__((vector_size (2 * sizeof (double))));
void f (vec *px, vec *y, vec *z)
......@@ -13,8 +13,8 @@ void f (vec *px, vec *y, vec *z)
*z = t2;
}
/* Optimization in forwprop1, cleanup in copyprop1. */
/* Optimization in forwprop1, cleanup in cddce1. */
/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 1 "copyprop1" } } */
/* { dg-final { scan-tree-dump-not "BIT_FIELD_REF" "copyprop1" } } */
/* { dg-final { cleanup-tree-dump "copyprop1" } } */
/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 1 "cddce1" } } */
/* { dg-final { scan-tree-dump-not "BIT_FIELD_REF" "cddce1" } } */
/* { dg-final { cleanup-tree-dump "cddce1" } } */
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