mirror of git://gcc.gnu.org/git/gcc.git
re PR tree-optimization/37327 (another ice in set_value_range, at tree-vrp.c:397)
2008-09-02 Richard Guenther <rguenther@suse.de> PR tree-optimization/37327 * tree-vrp.c (register_new_assert_for): Make sure to not have TREE_OVERFLOW set on the bound. * gcc.c-torture/compile/pr37327.c: New testcase. From-SVN: r139890
This commit is contained in:
parent
7ab5df4871
commit
a1b969a0d2
|
@ -1,3 +1,9 @@
|
||||||
|
2008-09-02 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/37327
|
||||||
|
* tree-vrp.c (register_new_assert_for): Make sure to not have
|
||||||
|
TREE_OVERFLOW set on the bound.
|
||||||
|
|
||||||
2008-09-02 Alexander Monakov <amonakov@ispras.ru>
|
2008-09-02 Alexander Monakov <amonakov@ispras.ru>
|
||||||
|
|
||||||
Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
|
Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2008-09-02 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/37327
|
||||||
|
* gcc.c-torture/compile/pr37327.c: New testcase.
|
||||||
|
|
||||||
2008-09-02 Victor Kaplansky <victork@il.ibm.com>
|
2008-09-02 Victor Kaplansky <victork@il.ibm.com>
|
||||||
|
|
||||||
* gcc.dg/fastmath-2.c: New.
|
* gcc.dg/fastmath-2.c: New.
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
typedef signed char int8_t;
|
||||||
|
typedef short int int16_t;
|
||||||
|
typedef int int32_t;
|
||||||
|
typedef unsigned short int uint16_t;
|
||||||
|
typedef unsigned int uint32_t;
|
||||||
|
static inline uint32_t
|
||||||
|
safe_add_int8_t_s_s (int8_t si1, int16_t si2)
|
||||||
|
{
|
||||||
|
if ((si1) && (si2) && (si1 > (1 - si2)) || (si1) && (si2 < 0)
|
||||||
|
&& (si1 < (-128 - si2)))
|
||||||
|
return si1;
|
||||||
|
return si1 + si2;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t g_2;
|
||||||
|
uint32_t g_113;
|
||||||
|
uint32_t g_145;
|
||||||
|
int32_t
|
||||||
|
func_17 (int32_t p_18, uint32_t p_19, uint32_t p_21)
|
||||||
|
{
|
||||||
|
uint32_t l_23 = -1L;
|
||||||
|
return l_23;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
func_26 (uint16_t p_27)
|
||||||
|
{
|
||||||
|
uint32_t l_424;
|
||||||
|
if (func_93 (func_59 (safe_add_int8_t_s_s (p_27, 1))),
|
||||||
|
func_124 (l_424, -7L, 1, g_145, 1, (safe_add_int8_t_s_s (1, 1)), 1), 1,
|
||||||
|
1, 1)
|
||||||
|
func_117 (1, 1,
|
||||||
|
(safe_add_uint64_t_u_u
|
||||||
|
(1, (safe_add_int8_t_s_s (1, 0xCDF4BE7A1B7E4629LL)))), 1);
|
||||||
|
uint32_t l_210;
|
||||||
|
if (func_17
|
||||||
|
((safe_add_int8_t_s_s (g_2, (0x6C79A83AL | func_17 (1, 1, 1)))),
|
||||||
|
0x4C9FL, 1))
|
||||||
|
{
|
||||||
|
uint32_t l_212;
|
||||||
|
if (safe_mul_int32_t_s_s
|
||||||
|
((1, 1, l_212, (1, (safe_add_int8_t_s_s (l_210, 1)), 1, 1)), 1))
|
||||||
|
if (func_59 (1, (safe_add_int8_t_s_s (g_113, 1))))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -3785,6 +3785,14 @@ register_new_assert_for (tree name, tree expr,
|
||||||
&& gimple_code (gsi_stmt (si)) != GIMPLE_SWITCH);
|
&& gimple_code (gsi_stmt (si)) != GIMPLE_SWITCH);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Never build an assert comparing against an integer constant with
|
||||||
|
TREE_OVERFLOW set. This confuses our undefined overflow warning
|
||||||
|
machinery. */
|
||||||
|
if (TREE_CODE (val) == INTEGER_CST
|
||||||
|
&& TREE_OVERFLOW (val))
|
||||||
|
val = build_int_cst_wide (TREE_TYPE (val),
|
||||||
|
TREE_INT_CST_LOW (val), TREE_INT_CST_HIGH (val));
|
||||||
|
|
||||||
/* The new assertion A will be inserted at BB or E. We need to
|
/* The new assertion A will be inserted at BB or E. We need to
|
||||||
determine if the new location is dominated by a previously
|
determine if the new location is dominated by a previously
|
||||||
registered location for A. If we are doing an edge insertion,
|
registered location for A. If we are doing an edge insertion,
|
||||||
|
|
Loading…
Reference in New Issue