aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-12-11 18:16:48 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-12-11 18:16:48 +0100
commitccef67160c2c467b3101e0d3e7f08ea996624fc6 (patch)
treea427fc0673507bec170c6e3473d4b663b3730534 /gcc/tree-vrp.c
parent5b238a4591932c5e5a28fa8f9b3a413a3ce641a6 (diff)
downloadgcc-ccef67160c2c467b3101e0d3e7f08ea996624fc6.zip
gcc-ccef67160c2c467b3101e0d3e7f08ea996624fc6.tar.gz
gcc-ccef67160c2c467b3101e0d3e7f08ea996624fc6.tar.bz2
re PR tree-optimization/88444 (ICE: tree check: expected ssa_name, have integer_cst in live_on_edge, at tree-vrp.c:468; or ICE: tree check: expected ssa_name, have integer_cst in get_value_range, at vr-values.c:84)
PR tree-optimization/88444 * tree-vrp.c (register_edge_assert_for_2): Only register assertions for conversions if rhs1 is a SSA_NAME. * gcc.dg/pr88444.c: New test. From-SVN: r267026
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 15ac65b..864de41 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -2894,6 +2894,7 @@ register_edge_assert_for_2 (tree name, edge e,
{
name2 = gimple_assign_rhs1 (def_stmt);
if (CONVERT_EXPR_CODE_P (rhs_code)
+ && TREE_CODE (name2) == SSA_NAME
&& INTEGRAL_TYPE_P (TREE_TYPE (name2))
&& TYPE_UNSIGNED (TREE_TYPE (name2))
&& prec == TYPE_PRECISION (TREE_TYPE (name2))
@@ -2990,6 +2991,7 @@ register_edge_assert_for_2 (tree name, edge e,
wide_int rmin, rmax;
tree rhs1 = gimple_assign_rhs1 (def_stmt);
if (INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
+ && TREE_CODE (rhs1) == SSA_NAME
/* Make sure the relation preserves the upper/lower boundary of
the range conservatively. */
&& (comp_code == NE_EXPR
@@ -3054,6 +3056,7 @@ register_edge_assert_for_2 (tree name, edge e,
{
names[1] = gimple_assign_rhs1 (def_stmt2);
if (!CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def_stmt2))
+ || TREE_CODE (names[1]) != SSA_NAME
|| !INTEGRAL_TYPE_P (TREE_TYPE (names[1]))
|| (TYPE_PRECISION (TREE_TYPE (name2))
!= TYPE_PRECISION (TREE_TYPE (names[1]))))