Commit facbb5c4 authored by rguenth's avatar rguenth

2010-01-18 Richard Guenther <rguenther@suse.de>

	PR middle-end/39954
	* cfgexpand.c (expand_call_stmt): TER pointer arguments in
	builtin calls.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@156008 138bc75d-0d04-0410-961f-82ee72b054a4
parent 61061ad6
2010-01-18 Richard Guenther <rguenther@suse.de>
PR middle-end/39954
* cfgexpand.c (expand_call_stmt): TER pointer arguments in
builtin calls.
2010-01-18 Richard Guenther <rguenther@suse.de>
PR tree-optimization/42781
......
......@@ -1746,15 +1746,31 @@ expand_call_stmt (gimple stmt)
tree exp;
tree lhs = gimple_call_lhs (stmt);
size_t i;
bool builtin_p;
tree decl;
exp = build_vl_exp (CALL_EXPR, gimple_call_num_args (stmt) + 3);
CALL_EXPR_FN (exp) = gimple_call_fn (stmt);
decl = gimple_call_fndecl (stmt);
builtin_p = decl && DECL_BUILT_IN (decl);
TREE_TYPE (exp) = gimple_call_return_type (stmt);
CALL_EXPR_STATIC_CHAIN (exp) = gimple_call_chain (stmt);
for (i = 0; i < gimple_call_num_args (stmt); i++)
CALL_EXPR_ARG (exp, i) = gimple_call_arg (stmt, i);
{
tree arg = gimple_call_arg (stmt, i);
gimple def;
/* TER addresses into arguments of builtin functions so we have a
chance to infer more correct alignment information. See PR39954. */
if (builtin_p
&& TREE_CODE (arg) == SSA_NAME
&& (def = get_gimple_for_ssa_name (arg))
&& gimple_assign_rhs_code (def) == ADDR_EXPR)
arg = gimple_assign_rhs1 (def);
CALL_EXPR_ARG (exp, i) = arg;
}
if (gimple_has_side_effects (stmt))
TREE_SIDE_EFFECTS (exp) = 1;
......
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