Commit 9e392989 by Richard Biener Committed by Richard Biener

re PR tree-optimization/86479 ([graphite] ICE in gimplify_modify_expr, at gimplify.c:5756)

2018-07-12  Richard Biener  <rguenther@suse.de>

	PR middle-end/86479
	* fold-const.c (fold_binary_op_with_conditional_arg): Do not
	move possibly trapping operations into the conditional.

	* gcc.dg/graphite/pr86479.c: New testcase.

From-SVN: r262574
parent 19353855
2018-07-12 Richard Biener <rguenther@suse.de> 2018-07-12 Richard Biener <rguenther@suse.de>
PR middle-end/86479
* fold-const.c (fold_binary_op_with_conditional_arg): Do not
move possibly trapping operations into the conditional.
2018-07-12 Richard Biener <rguenther@suse.de>
* tree-ssa-sccvn.c (mprts_hook_cnt): Remove. * tree-ssa-sccvn.c (mprts_hook_cnt): Remove.
(vn_lookup_simplify_result): Remove recursion limit applied (vn_lookup_simplify_result): Remove recursion limit applied
here. here.
......
...@@ -6587,6 +6587,13 @@ fold_binary_op_with_conditional_arg (location_t loc, ...@@ -6587,6 +6587,13 @@ fold_binary_op_with_conditional_arg (location_t loc,
tree rhs = NULL_TREE; tree rhs = NULL_TREE;
enum tree_code cond_code = COND_EXPR; enum tree_code cond_code = COND_EXPR;
/* Do not move possibly trapping operations into the conditional as this
pessimizes code and causes gimplification issues when applied late. */
if (operation_could_trap_p (code, FLOAT_TYPE_P (type),
ANY_INTEGRAL_TYPE_P (type)
&& TYPE_OVERFLOW_TRAPS (type), op1))
return NULL_TREE;
if (TREE_CODE (cond) == COND_EXPR if (TREE_CODE (cond) == COND_EXPR
|| TREE_CODE (cond) == VEC_COND_EXPR) || TREE_CODE (cond) == VEC_COND_EXPR)
{ {
......
2018-07-12 Richard Biener <rguenther@suse.de>
PR middle-end/86479
* gcc.dg/graphite/pr86479.c: New testcase.
2018-07-11 Jakub Jelinek <jakub@redhat.com> 2018-07-11 Jakub Jelinek <jakub@redhat.com>
* gcc.target/i386/avx512bw-vpcmpb-2.c (CMP): Use SIZE macro instead * gcc.target/i386/avx512bw-vpcmpb-2.c (CMP): Use SIZE macro instead
......
/* { dg-do compile } */
/* { dg-options "-O2 -floop-nest-optimize -fnon-call-exceptions -fno-guess-branch-probability -fno-tree-loop-im" } */
__INTPTR_TYPE__ uf;
void
m7 (__INTPTR_TYPE__ *aw, __INTPTR_TYPE__ ws)
{
__INTPTR_TYPE__ *e5 = &ws;
if (ws < 1)
{
int cq = 0;
while (cq < 1)
{
int *ng;
int *ud;
*e5 *= uf < 0;
for (*ng = 0; *ng < 2; ++*ng)
{
}
ws /= cq;
*aw *= ws;
for (*ud = 0; *ud < 2; ++*ud)
{
}
}
}
if (ws < 2)
e5 = &uf;
*e5 = 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment