Commit e23817b3 by Richard Guenther Committed by Richard Biener

re PR middle-end/39954 (Revision 146817 caused unaligned access in gcc.dg/torture/pr26565.c)

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

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

From-SVN: r156008
parent 0238e6c9
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
* tree-ssa-structalias.c (find_what_var_points_to): Skip
restrict processing only if the original variable was
......
......@@ -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