Commit 2fb5f2af by Richard Guenther Committed by Richard Biener

re PR middle-end/35411 (internal compiler error: in set_ssa_val_to, at tree-ssa-sccvn.c:1075)

2008-03-01  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/35411
	* tree-sra.c (sra_build_assignment): Split conversion to
	final type to a separate statement if we are not assigning
	to a register.

From-SVN: r132791
parent 87504f4d
2008-03-01 Richard Guenther <rguenther@suse.de>
PR tree-optimization/35411
* tree-sra.c (sra_build_assignment): Split conversion to
final type to a separate statement if we are not assigning
to a register.
2008-02-29 Francois-Xavier Coudert <coudert@clipper.ens.fr>
* fold-const.c (fold_convertible_p): Correct the logic to follow
......
......@@ -2139,7 +2139,7 @@ sra_build_assignment (tree dst, tree src)
if (scalar_bitfield_p (src))
{
tree var, shift, width;
tree utype, stype, stmp, utmp;
tree utype, stype, stmp, utmp, dtmp;
tree list, stmt;
bool unsignedp = BIT_FIELD_REF_UNSIGNED (src);
......@@ -2256,6 +2256,16 @@ sra_build_assignment (tree dst, tree src)
var = fold_convert (TREE_TYPE (dst), var);
else
var = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (dst), var);
/* If the destination is not a register the conversion needs
to be a separate statement. */
if (!is_gimple_reg (dst))
{
dtmp = make_rename_temp (TREE_TYPE (dst), "SR");
stmt = build_gimple_modify_stmt (dtmp, var);
append_to_statement_list (stmt, &list);
var = dtmp;
}
}
stmt = build_gimple_modify_stmt (dst, var);
append_to_statement_list (stmt, &list);
......
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