fold-const.c (fold_build_cleanup_point_expr): For a RETURN_EXPR...
2004-12-28 Andrew Pinski <pinskia@physics.uc.edu> * fold-const.c (fold_build_cleanup_point_expr): For a RETURN_EXPR, we only need a cleanup point expression when the expression on the left hand side of the MODIFIY_EXPR inside the return has side effects. From-SVN: r92672
This commit is contained in:
parent
2b0729bafa
commit
0e256a822b
|
@ -1,3 +1,10 @@
|
||||||
|
2004-12-28 Andrew Pinski <pinskia@physics.uc.edu>
|
||||||
|
|
||||||
|
* fold-const.c (fold_build_cleanup_point_expr): For a RETURN_EXPR,
|
||||||
|
we only need a cleanup point expression when the expression on the
|
||||||
|
left hand side of the MODIFIY_EXPR inside the return has side
|
||||||
|
effects.
|
||||||
|
|
||||||
2004-12-28 Dorit Naishlos <dorit@il.ibm.com>
|
2004-12-28 Dorit Naishlos <dorit@il.ibm.com>
|
||||||
|
|
||||||
* tree-vectorizer.c (vect_mark_relevant) First argument changed from
|
* tree-vectorizer.c (vect_mark_relevant) First argument changed from
|
||||||
|
|
|
@ -10783,6 +10783,21 @@ fold_build_cleanup_point_expr (tree type, tree expr)
|
||||||
it with a cleanup point expression. */
|
it with a cleanup point expression. */
|
||||||
if (!TREE_SIDE_EFFECTS (expr))
|
if (!TREE_SIDE_EFFECTS (expr))
|
||||||
return expr;
|
return expr;
|
||||||
|
|
||||||
|
/* If the expression is a return, check to see if the expression inside the
|
||||||
|
return has no side effects or the right hand side of the modify expression
|
||||||
|
inside the return. If either don't have side effects set we don't need to
|
||||||
|
wrap the expression in a cleanup point expression. Note we don't check the
|
||||||
|
left hand side of the modify because it should always be a return decl. */
|
||||||
|
if (TREE_CODE (expr) == RETURN_EXPR)
|
||||||
|
{
|
||||||
|
tree op = TREE_OPERAND (expr, 0);
|
||||||
|
if (!op || !TREE_SIDE_EFFECTS (op))
|
||||||
|
return expr;
|
||||||
|
op = TREE_OPERAND (op, 1);
|
||||||
|
if (!TREE_SIDE_EFFECTS (op))
|
||||||
|
return expr;
|
||||||
|
}
|
||||||
|
|
||||||
return build1 (CLEANUP_POINT_EXPR, type, expr);
|
return build1 (CLEANUP_POINT_EXPR, type, expr);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue