On Wed, Dec 21, 2011 at 07:52:16AM -0600, Aldy Hernandez wrote:
> Oh neat... create_tmp_reg will do all this for me.

I don't think that update_stmt is needed there.
The stmt is freshly allocated a few lines above it:
        stmt = gimple_build_assign (lp->save_var, unshare_expr (lp->addr));
so the modified flag is still set and thus when you gsi_insert_before
it afterwards, it will update_stmt_if_modified, which is the same as
update_stmt when the modified flag is set.

The first hunk looks okay.

> --- trans-mem.c       (revision 182542)
> +++ trans-mem.c       (working copy)
> @@ -1003,7 +1003,7 @@ tm_log_add (basic_block entry_block, tre
>            special constructors and the like.  */
>         && !TREE_ADDRESSABLE (type))
>       {
> -       lp->save_var = create_tmp_var (TREE_TYPE (lp->addr), "tm_save");
> +       lp->save_var = create_tmp_reg (TREE_TYPE (lp->addr), "tm_save");
>         add_referenced_var (lp->save_var);
>         lp->stmts = NULL;
>         lp->entry_block = entry_block;
> @@ -1188,6 +1188,7 @@ tm_log_emit_saves (basic_block entry_blo
>       {
>         lp->save_var = make_ssa_name (lp->save_var, stmt);
>         gimple_assign_set_lhs (stmt, lp->save_var);
> +       update_stmt (stmt);
>       }
>  
>        gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);


        Jakub

Reply via email to