===================================================================
@@ -1152,15 +1152,24 @@ gimplify_and_update_call_from_tree (gimp
}
if (laststore)
{
- reaching_vuse = make_ssa_name (gimple_vop (cfun), laststore);
+ if (!is_gimple_reg (lhs) && last != laststore)
+ reaching_vuse = make_ssa_name (gimple_vop (cfun), laststore);
+ else
+ {
+ reaching_vuse = gimple_vdef (stmt);
+ SSA_NAME_DEF_STMT (reaching_vuse) = laststore;
+ }
gimple_set_vdef (laststore, reaching_vuse);
update_stmt (laststore);
- laststore = NULL;
}
new_stmt = gimple_build_assign (lhs, tmp);
- gimple_set_vuse (new_stmt, reaching_vuse);
- gimple_set_vdef (new_stmt, gimple_vdef (stmt));
- move_ssa_defining_stmt_for_defs (new_stmt, stmt);
+ if (TREE_CODE (lhs) == SSA_NAME)
+ SSA_NAME_DEF_STMT (lhs) = new_stmt;
+ if (!laststore)
+ {
+ gimple_set_vuse (new_stmt, reaching_vuse);
+ gimple_set_vdef (new_stmt, gimple_vdef (stmt));
+ }
}
gimple_set_location (new_stmt, gimple_location (stmt));