re PR tree-optimization/52324 (Store motion no longer performed)
2012-02-21 Richard Guenther <rguenther@suse.de> PR tree-optimization/52324 * gimplify.c (gimplify_expr): When re-gimplifying expressions do not gimplify a MEM_REF address operand if it is already in suitable form. * gcc.dg/tree-ssa/ssa-lim-10.c: New testcase. From-SVN: r184435
This commit is contained in:
parent
305406d3e1
commit
01718e96e7
|
@ -1,3 +1,10 @@
|
|||
2012-02-21 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/52324
|
||||
* gimplify.c (gimplify_expr): When re-gimplifying expressions
|
||||
do not gimplify a MEM_REF address operand if it is already
|
||||
in suitable form.
|
||||
|
||||
2012-02-21 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
* config/s390/s390.md ("fixuns_trunc<mode>si2"): Replace
|
||||
|
|
|
@ -7061,15 +7061,23 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
|
|||
ret = GS_OK;
|
||||
break;
|
||||
}
|
||||
ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
|
||||
is_gimple_mem_ref_addr, fb_rvalue);
|
||||
if (ret == GS_ERROR)
|
||||
break;
|
||||
/* Avoid re-gimplifying the address operand if it is already
|
||||
in suitable form. Re-gimplifying would mark the address
|
||||
operand addressable. Always gimplify when not in SSA form
|
||||
as we still may have to gimplify decls with value-exprs. */
|
||||
if (!gimplify_ctxp || !gimplify_ctxp->into_ssa
|
||||
|| !is_gimple_mem_ref_addr (TREE_OPERAND (*expr_p, 0)))
|
||||
{
|
||||
ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
|
||||
is_gimple_mem_ref_addr, fb_rvalue);
|
||||
if (ret == GS_ERROR)
|
||||
break;
|
||||
}
|
||||
recalculate_side_effects (*expr_p);
|
||||
ret = GS_ALL_DONE;
|
||||
break;
|
||||
|
||||
/* Constants need not be gimplified. */
|
||||
/* Constants need not be gimplified. */
|
||||
case INTEGER_CST:
|
||||
case REAL_CST:
|
||||
case FIXED_CST:
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-02-21 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/52324
|
||||
* gcc.dg/tree-ssa/ssa-lim-10.c: New testcase.
|
||||
|
||||
2012-02-21 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
PR middle-end/51782
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-lim1-details" } */
|
||||
|
||||
int *l, *r;
|
||||
int test_func(void)
|
||||
{
|
||||
int i;
|
||||
int direction;
|
||||
static int pos;
|
||||
|
||||
pos = 0;
|
||||
direction = 1;
|
||||
|
||||
for ( i = 0; i <= 400; i++ )
|
||||
{
|
||||
if ( direction == 0 )
|
||||
pos = l[pos];
|
||||
else
|
||||
pos = r[pos];
|
||||
|
||||
if ( pos == -1 )
|
||||
{
|
||||
pos = 0;
|
||||
direction = !direction;
|
||||
}
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "Executing store motion of pos" "lim1" } } */
|
||||
/* { dg-final { cleanup-tree-dump "lim1" } } */
|
Loading…
Reference in New Issue