Commit 5d882cc1 by Richard Guenther Committed by Richard Biener

tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not fold alloca (0).

2011-09-02  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not
	fold alloca (0).
	(ccp_fold_stmt): Continue replacing args when folding
	alloca fails.

From-SVN: r178465
parent 5da7fa30
2011-09-02 Richard Guenther <rguenther@suse.de>
* tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not
fold alloca (0).
(ccp_fold_stmt): Continue replacing args when folding
alloca fails.
2011-08-31 Richard Guenther <rguenther@suse.de>
* expr.c (expand_expr_real_2): Move COND_EXPR and VEC_COND_EXPR
......@@ -1702,10 +1702,14 @@ fold_builtin_alloca_for_var (gimple stmt)
/* Detect constant argument. */
arg = get_constant_value (gimple_call_arg (stmt, 0));
if (arg == NULL_TREE || TREE_CODE (arg) != INTEGER_CST
if (arg == NULL_TREE
|| TREE_CODE (arg) != INTEGER_CST
|| !host_integerp (arg, 1))
return NULL_TREE;
size = TREE_INT_CST_LOW (arg);
if (size == 0)
return NULL_TREE;
/* Heuristic: don't fold large vlas. */
threshold = (unsigned HOST_WIDE_INT)PARAM_VALUE (PARAM_LARGE_STACK_FRAME);
......@@ -1804,13 +1808,13 @@ ccp_fold_stmt (gimple_stmt_iterator *gsi)
if (gimple_call_alloca_for_var_p (stmt))
{
tree new_rhs = fold_builtin_alloca_for_var (stmt);
bool res;
if (new_rhs == NULL_TREE)
return false;
res = update_call_from_tree (gsi, new_rhs);
if (new_rhs)
{
bool res = update_call_from_tree (gsi, new_rhs);
gcc_assert (res);
return true;
}
}
/* Propagate into the call arguments. Compared to replace_uses_in
this can use the argument slot types for type verification
......
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