------- 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

Reply via email to