------- Comment #3 from rguenth at gcc dot gnu dot org 2008-09-02 12:23 -------
Ok, try
Index: tree-sra.c
===================================================================
*** tree-sra.c (revision 139886)
--- tree-sra.c (working copy)
*************** static gimple_seq
*** 2144,2150 ****
sra_build_assignment (tree dst, tree src)
{
gimple stmt;
! gimple_seq seq = NULL;
/* Turning BIT_FIELD_REFs into bit operations enables other passes
to do a much better job at optimizing the code.
From dst = BIT_FIELD_REF <var, sz, off> we produce
--- 2144,2150 ----
sra_build_assignment (tree dst, tree src)
{
gimple stmt;
! gimple_seq seq = NULL, seq2 = NULL;
/* Turning BIT_FIELD_REFs into bit operations enables other passes
to do a much better job at optimizing the code.
From dst = BIT_FIELD_REF <var, sz, off> we produce
*************** sra_build_assignment (tree dst, tree src
*** 2308,2313 ****
--- 2308,2315 ----
&& !useless_type_conversion_p (TREE_TYPE (dst), TREE_TYPE (src)))
src = fold_convert (TREE_TYPE (dst), src);
+ src = force_gimple_operand (src, &seq2, false, NULL_TREE);
+ gimple_seq_add_seq (&seq, seq2);
stmt = gimple_build_assign (dst, src);
gimple_seq_add_stmt (&seq, stmt);
return seq;
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37328