Message ID | 53DFEEF4.3090305@codesourcery.com |
---|---|
State | New |
Headers | show |
On Mon, Aug 4, 2014 at 10:37 PM, Bernd Schmidt <bernds@codesourcery.com> wrote: > Some code I added for the ptx backend triggered tree-checking failures for > gimple created in tree-nested: we can end up taking the address of an > SSA_NAME, which seems invalid. The problem is that code in tree-nested wants > to change the rhs of an existing assignment, but just using > gimple_assign_set_rhs1 is insufficient: the previous rhs was an ADDR_EXPR, > and that code remains afterwards. > > Fixed with the following patch, tested (including Ada) on x86_64-linux. Ok? The better interface for this is gimple_assign_set_rhs_from_tree. But it seems the code can be re-structured to avoid re-setting the RHS by simply doing if (!is_gimple_reg (x) && is_gimple_reg_type (TREE_TYPE (x)) x = init_tmp_var (root, x, &gsi); right after x is assigned to? Ok with that change. Thanks, Richard. > > Bernd
diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c index 5408fba..1afcf09 100644 --- a/gcc/tree-nested.c +++ b/gcc/tree-nested.c @@ -2738,6 +2738,7 @@ finalize_nesting_tree_1 (struct nesting_info *root) gimple_stmt_iterator gsi = gsi_last (stmt_list); x = init_tmp_var (root, x, &gsi); gimple_assign_set_rhs1 (stmt, x); + gimple_assign_set_rhs_code (stmt, TREE_CODE (x)); } } }