aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-alias.h
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-09-16 11:58:35 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-09-16 11:58:35 +0000
commit10f30ac9cda947d117e50f0cbd4cf94ee70a944f (patch)
treee3d30cc89a219df83c072e2c386756aa17aff19d /gcc/tree-ssa-alias.h
parentddc1a45b373ce98929d0d67e8c97ab6783236c40 (diff)
downloadgcc-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.h11
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 *),