diff options
author | Richard Guenther <rguenther@suse.de> | 2008-09-13 16:29:22 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-09-13 16:29:22 +0000 |
commit | 42ea03fb16ac9a6d732edd04c9f036fa6f0cf71e (patch) | |
tree | 949aa6eeca7ea04690a1c2b245d9a0982f407ddc /gcc | |
parent | 9e6a14a4ee8825697eed6fe29800f2abb16713cb (diff) | |
download | gcc-42ea03fb16ac9a6d732edd04c9f036fa6f0cf71e.zip gcc-42ea03fb16ac9a6d732edd04c9f036fa6f0cf71e.tar.gz gcc-42ea03fb16ac9a6d732edd04c9f036fa6f0cf71e.tar.bz2 |
re PR middle-end/30141 (nested function can produce invalid gimple)
2008-09-13 Richard Guenther <rguenther@suse.de>
PR middle-end/30141
* tree-nested.c (finalize_nesting_tree_1): Generate valid
gimple stores for memory rhs.
From-SVN: r140346
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-nested.c | 9 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7375041..3e9707c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-09-13 Richard Guenther <rguenther@suse.de> + + PR middle-end/30141 + * tree-nested.c (finalize_nesting_tree_1): Generate valid + gimple stores for memory rhs. + 2008-09-13 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/37489 diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c index cfa1dd4..8f9fec5 100644 --- a/gcc/tree-nested.c +++ b/gcc/tree-nested.c @@ -1995,6 +1995,15 @@ finalize_nesting_tree_1 (struct nesting_info *root) 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) + && is_gimple_reg_type (TREE_TYPE (x))) + { + gimple_stmt_iterator gsi = gsi_last (stmt_list); + x = init_tmp_var (root, x, &gsi); + gimple_assign_set_rhs1 (stmt, x); + } } } |