aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-sccvn.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-09-15 09:19:36 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-09-15 09:19:36 +0000
commit897da3034cc2b1e3675d891e833c6b2a02fd4fe5 (patch)
treed30a6dd766b27849dc68b70824bcd0b2d0b7534f /gcc/tree-ssa-sccvn.c
parent854dde43ae85c54a12430a656d01a0db9637b139 (diff)
downloadgcc-897da3034cc2b1e3675d891e833c6b2a02fd4fe5.zip
gcc-897da3034cc2b1e3675d891e833c6b2a02fd4fe5.tar.gz
gcc-897da3034cc2b1e3675d891e833c6b2a02fd4fe5.tar.bz2
re PR tree-optimization/82217 (ICE on valid code at -O1 and above: in visit_phi, at tree-ssa-sccvn.c:3908)
2017-09-15 Richard Biener <rguenther@suse.de> PR tree-optimization/82217 * tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP but not undefined case. * gcc.dg/torture/pr82217.c: New testcase. From-SVN: r252796
Diffstat (limited to 'gcc/tree-ssa-sccvn.c')
-rw-r--r--gcc/tree-ssa-sccvn.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 44618da..0b0c510 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -3901,13 +3901,10 @@ visit_phi (gimple *phi)
if only a single edge is exectuable use its value. */
if (n_executable <= 1)
result = seen_undef ? seen_undef : sameval;
- /* If we saw only undefined values create a new undef SSA name to
- avoid false equivalences. */
+ /* If we saw only undefined values and VN_TOP use one of the
+ undefined values. */
else if (sameval == VN_TOP)
- {
- gcc_assert (seen_undef);
- result = seen_undef;
- }
+ result = seen_undef ? seen_undef : sameval;
/* First see if it is equivalent to a phi node in this block. We prefer
this as it allows IV elimination - see PRs 66502 and 67167. */
else if ((result = vn_phi_lookup (phi)))