From adcde84f0e085a0dbf08d15cc1fe5751062a19a4 Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Mon, 25 Aug 2014 16:15:49 +0000 Subject: [PATCH] Fix invalid gimple made by finalize_nesting_tree_1. * tree-nested.c (finalize_nesting_tree_1): Initialize temporary earlier rather than modifying the stmt. From-SVN: r214434 --- gcc/ChangeLog | 5 +++++ gcc/tree-nested.c | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f22f09ffcba..c5ef2816273 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-08-25 Bernd Schmidt + + * tree-nested.c (finalize_nesting_tree_1): Initialize temporary earlier + rather than modifying the stmt. + 2014-08-25 Jan-Benedict Glaw * config/rs6000/rs6000.c (rs6000_return_in_msb): Fix fallout from diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c index 82cec960385..6ca594d9ffe 100644 --- a/gcc/tree-nested.c +++ b/gcc/tree-nested.c @@ -2715,10 +2715,6 @@ finalize_nesting_tree_1 (struct nesting_info *root) else x = p; - y = build3 (COMPONENT_REF, TREE_TYPE (field), - root->frame_decl, field, NULL_TREE); - stmt = gimple_build_assign (y, x); - gimple_seq_add_stmt (&stmt_list, stmt); /* If the assignment is from a non-register the stmt is not valid gimple. Make it so by using a temporary instead. */ if (!is_gimple_reg (x) @@ -2726,8 +2722,12 @@ 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); } + + y = build3 (COMPONENT_REF, TREE_TYPE (field), + root->frame_decl, field, NULL_TREE); + stmt = gimple_build_assign (y, x); + gimple_seq_add_stmt (&stmt_list, stmt); } } -- 2.30.2