diff options
author | Richard Guenther <rguenther@suse.de> | 2009-05-25 15:18:21 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-05-25 15:18:21 +0000 |
commit | 01df5c8ae2b0d8b2bf7cfa4623b31866141e4ad1 (patch) | |
tree | 870d4d98bd4ce2f44cd8355355fe3b936ee09108 /gcc/tree-ssa-alias.h | |
parent | c74b74a8b2f8a5996943128e574f429670537361 (diff) | |
download | gcc-01df5c8ae2b0d8b2bf7cfa4623b31866141e4ad1.zip gcc-01df5c8ae2b0d8b2bf7cfa4623b31866141e4ad1.tar.gz gcc-01df5c8ae2b0d8b2bf7cfa4623b31866141e4ad1.tar.bz2 |
re PR tree-optimization/36327 (SCCVN should look through struct copies)
2009-05-25 Richard Guenther <rguenther@suse.de>
PR tree-optimization/36327
* tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
callback for reference translation or lookup at the point
of may-defs.
* tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
* tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
for union COMPONENT_REFs.
(vn_reference_lookup_3): New callback. Lookup from memset
and CONSTRUCTOR assignment, translate through struct copies.
(vn_reference_lookup_pieces): Make sure to not free the
passed operands array. Adjust walk_non_aliased_vuses call.
(vn_reference_lookup): Adjust walk_non_aliased_vuses call,
make sure we do not leak memory.
* gcc.dg/tree-ssa/ssa-fre-24.c: New testcase.
* gcc.dg/tree-ssa/ssa-fre-25.c: Likewise.
* gcc.dg/tree-ssa/sra-2.c: Disable FRE.
* gcc.dg/vect/no-vfa-vect-43.c: Adjust.
* gcc.dg/vect/vect-40.c: Likewise.
* gcc.dg/vect/vect-42.c: Likewise.
* gcc.dg/vect/vect-46.c: Likewise.
* gcc.dg/vect/vect-76.c: Likewise.
From-SVN: r147851
Diffstat (limited to 'gcc/tree-ssa-alias.h')
-rw-r--r-- | gcc/tree-ssa-alias.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-ssa-alias.h b/gcc/tree-ssa-alias.h index d4d736d..bc96712 100644 --- a/gcc/tree-ssa-alias.h +++ b/gcc/tree-ssa-alias.h @@ -83,7 +83,8 @@ extern bool refs_output_dependent_p (tree, tree); extern bool ref_maybe_used_by_stmt_p (gimple, tree); extern bool stmt_may_clobber_ref_p (gimple, tree); extern void *walk_non_aliased_vuses (tree, tree, - void *(*)(tree, tree, void *), void *); + void *(*)(tree, tree, void *), + void *(*)(tree *, tree, void *), void *); extern unsigned int walk_aliased_vdefs (tree, tree, bool (*)(tree, tree, void *), void *, bitmap *); |