diff options
author | Richard Biener <rguenther@suse.de> | 2019-09-16 11:58:35 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-09-16 11:58:35 +0000 |
commit | 10f30ac9cda947d117e50f0cbd4cf94ee70a944f (patch) | |
tree | e3d30cc89a219df83c072e2c386756aa17aff19d /gcc/tree-ssa-alias.h | |
parent | ddc1a45b373ce98929d0d67e8c97ab6783236c40 (diff) | |
download | gcc-10f30ac9cda947d117e50f0cbd4cf94ee70a944f.zip gcc-10f30ac9cda947d117e50f0cbd4cf94ee70a944f.tar.gz gcc-10f30ac9cda947d117e50f0cbd4cf94ee70a944f.tar.bz2 |
re PR tree-optimization/91756 (g++.dg/lto/alias-3 FAILs)
2019-09-16 Richard Biener <rguenther@suse.de>
PR tree-optimization/91756
PR tree-optimization/87132
* tree-ssa-alias.h (enum translate_flags): New.
(get_continuation_for_phi): Use it instead of simple bool flag.
(walk_non_aliased_vuses): Likewise.
* tree-ssa-alias.c (maybe_skip_until): Adjust.
(get_continuation_for_phi): When looking across backedges only
disallow valueization.
(walk_non_aliased_vuses): Adjust.
* tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid valueization
if requested.
* gcc.dg/tree-ssa/ssa-fre-81.c: New testcase.
From-SVN: r275747
Diffstat (limited to 'gcc/tree-ssa-alias.h')
-rw-r--r-- | gcc/tree-ssa-alias.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/tree-ssa-alias.h b/gcc/tree-ssa-alias.h index c7c6020..6d72c2f 100644 --- a/gcc/tree-ssa-alias.h +++ b/gcc/tree-ssa-alias.h @@ -132,13 +132,18 @@ extern bool call_may_clobber_ref_p (gcall *, tree); extern bool call_may_clobber_ref_p_1 (gcall *, ao_ref *); extern bool stmt_kills_ref_p (gimple *, tree); extern bool stmt_kills_ref_p (gimple *, ao_ref *); +enum translate_flags + { TR_TRANSLATE, TR_VALUEIZE_AND_DISAMBIGUATE, TR_DISAMBIGUATE }; extern tree get_continuation_for_phi (gimple *, ao_ref *, bool, unsigned int &, bitmap *, bool, - void *(*)(ao_ref *, tree, void *, bool *), - void *); + void *(*)(ao_ref *, tree, void *, + translate_flags *), + void *, translate_flags + = TR_VALUEIZE_AND_DISAMBIGUATE); extern void *walk_non_aliased_vuses (ao_ref *, tree, bool, void *(*)(ao_ref *, tree, void *), - void *(*)(ao_ref *, tree, void *, bool *), + void *(*)(ao_ref *, tree, void *, + translate_flags *), tree (*)(tree), unsigned &, void *); extern int walk_aliased_vdefs (ao_ref *, tree, bool (*)(ao_ref *, tree, void *), |