------- Comment #9 from ebotcazou at gcc dot gnu dot org 2008-02-12 09:08 ------- > But maybe the problem is the discrepancy between force_gimple_operand and > force_gimple_operand_bsi: why does the latter preserve the SSA form and not > the former?
This would fix the problem: Index: gimplify.c =================================================================== --- gimplify.c (revision 132243) +++ gimplify.c (working copy) @@ -6629,6 +6629,14 @@ force_gimple_operand (tree expr, tree *s pop_gimplify_context (NULL); + if (*stmts && gimple_in_ssa_p (cfun)) + { + tree_stmt_iterator tsi; + + for (tsi = tsi_start (*stmts); !tsi_end_p (tsi); tsi_next (&tsi)) + mark_symbols_for_renaming (tsi_stmt (tsi)); + } + return expr; } @@ -6648,14 +6656,6 @@ force_gimple_operand_bsi (block_stmt_ite expr = force_gimple_operand (expr, &stmts, simple_p, var); if (stmts) { - if (gimple_in_ssa_p (cfun)) - { - tree_stmt_iterator tsi; - - for (tsi = tsi_start (stmts); !tsi_end_p (tsi); tsi_next (&tsi)) - mark_symbols_for_renaming (tsi_stmt (tsi)); - } - if (before) bsi_insert_before (bsi, stmts, m); else -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35136