diff options
author | Richard Biener <rguenther@suse.de> | 2019-07-29 10:10:15 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-07-29 10:10:15 +0000 |
commit | 3c2f6fae598f997003b73ab93bb85cb33471f389 (patch) | |
tree | d21caa39e524b8782d74b86a3d2c9e9b99703483 /gcc/vr-values.c | |
parent | f33b9c40b97f6f8a72ee370068ad81e33d71434e (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.c | 6 |
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) |