mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
5b238a4591
commit
ccef67160c
|
|
@ -1,3 +1,9 @@
|
||||||
|
2018-12-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/88444
|
||||||
|
* tree-vrp.c (register_edge_assert_for_2): Only register assertions
|
||||||
|
for conversions if rhs1 is a SSA_NAME.
|
||||||
|
|
||||||
2018-12-11 Dimitar Dimitrov <dimitar@dinux.eu>
|
2018-12-11 Dimitar Dimitrov <dimitar@dinux.eu>
|
||||||
|
|
||||||
* cfgexpand.c (asm_clobber_reg_is_valid): Also produce
|
* cfgexpand.c (asm_clobber_reg_is_valid): Also produce
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2018-12-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/88444
|
||||||
|
* gcc.dg/pr88444.c: New test.
|
||||||
|
|
||||||
2018-12-11 Dimitar Dimitrov <dimitar@dinux.eu>
|
2018-12-11 Dimitar Dimitrov <dimitar@dinux.eu>
|
||||||
|
|
||||||
* gcc.target/i386/pr52813.c: New test.
|
* gcc.target/i386/pr52813.c: New test.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
/* PR tree-optimization/88444 */
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-O1 -ftree-vrp -fno-tree-ccp -fno-tree-forwprop -fno-tree-fre" } */
|
||||||
|
|
||||||
|
int v;
|
||||||
|
|
||||||
|
int
|
||||||
|
foo (int, int);
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
bar (long int x)
|
||||||
|
{
|
||||||
|
return !!x ? x : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
baz (int x)
|
||||||
|
{
|
||||||
|
v += foo (0, 0) + bar (x);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
qux (void)
|
||||||
|
{
|
||||||
|
int a = 0;
|
||||||
|
v = v || foo (0, 0);
|
||||||
|
v = v || foo (0, 0);
|
||||||
|
v = v || foo (0, 0);
|
||||||
|
baz (a);
|
||||||
|
}
|
||||||
|
|
@ -2894,6 +2894,7 @@ register_edge_assert_for_2 (tree name, edge e,
|
||||||
{
|
{
|
||||||
name2 = gimple_assign_rhs1 (def_stmt);
|
name2 = gimple_assign_rhs1 (def_stmt);
|
||||||
if (CONVERT_EXPR_CODE_P (rhs_code)
|
if (CONVERT_EXPR_CODE_P (rhs_code)
|
||||||
|
&& TREE_CODE (name2) == SSA_NAME
|
||||||
&& INTEGRAL_TYPE_P (TREE_TYPE (name2))
|
&& INTEGRAL_TYPE_P (TREE_TYPE (name2))
|
||||||
&& TYPE_UNSIGNED (TREE_TYPE (name2))
|
&& TYPE_UNSIGNED (TREE_TYPE (name2))
|
||||||
&& prec == TYPE_PRECISION (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;
|
wide_int rmin, rmax;
|
||||||
tree rhs1 = gimple_assign_rhs1 (def_stmt);
|
tree rhs1 = gimple_assign_rhs1 (def_stmt);
|
||||||
if (INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
|
if (INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
|
||||||
|
&& TREE_CODE (rhs1) == SSA_NAME
|
||||||
/* Make sure the relation preserves the upper/lower boundary of
|
/* Make sure the relation preserves the upper/lower boundary of
|
||||||
the range conservatively. */
|
the range conservatively. */
|
||||||
&& (comp_code == NE_EXPR
|
&& (comp_code == NE_EXPR
|
||||||
|
|
@ -3054,6 +3056,7 @@ register_edge_assert_for_2 (tree name, edge e,
|
||||||
{
|
{
|
||||||
names[1] = gimple_assign_rhs1 (def_stmt2);
|
names[1] = gimple_assign_rhs1 (def_stmt2);
|
||||||
if (!CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (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]))
|
|| !INTEGRAL_TYPE_P (TREE_TYPE (names[1]))
|
||||||
|| (TYPE_PRECISION (TREE_TYPE (name2))
|
|| (TYPE_PRECISION (TREE_TYPE (name2))
|
||||||
!= TYPE_PRECISION (TREE_TYPE (names[1]))))
|
!= TYPE_PRECISION (TREE_TYPE (names[1]))))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue