summaryrefslogtreecommitdiff
path: root/gcc/vr-values.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-07-29 10:10:15 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-07-29 10:10:15 +0000
commit3c2f6fae598f997003b73ab93bb85cb33471f389 (patch)
treed21caa39e524b8782d74b86a3d2c9e9b99703483 /gcc/vr-values.c
parentf33b9c40b97f6f8a72ee370068ad81e33d71434e (diff)
re PR middle-end/91267 (SEGV in value_range_base::equal_p)
2019-07-29 Richard Biener <rguenther@suse.de> PR tree-optimization/91267 * vr-values.c (vr_values::update_value_range): Add early return for effectively VARYING lattice entry. * gcc.dg/torture/pr91267.c: New testcase. From-SVN: r273874
Diffstat (limited to 'gcc/vr-values.c')
-rw-r--r--gcc/vr-values.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/vr-values.c b/gcc/vr-values.c
index d6a8847369c..d03309942af 100644
--- a/gcc/vr-values.c
+++ b/gcc/vr-values.c
@@ -202,8 +202,12 @@ vr_values::update_value_range (const_tree var, value_range *new_vr)
new_vr->intersect (&nr);
}
- /* Update the value range, if necessary. */
+ /* Update the value range, if necessary. If we cannot allocate a lattice
+ entry for VAR keep it at VARYING. This happens when DOM feeds us stmts
+ with SSA names allocated after setting up the lattice. */
old_vr = get_lattice_entry (var);
+ if (!old_vr)
+ return false;
is_new = !old_vr->equal_p (*new_vr, /*ignore_equivs=*/false);
if (is_new)