diff options
author | Jason Merrill <jason@redhat.com> | 2006-03-10 17:47:08 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2006-03-10 17:47:08 -0500 |
commit | 21f9ec0c6ad431e25e58dee6b9e6759ab7e74003 (patch) | |
tree | 2b1be739b500fee318e5f1d12833519be9204c09 /gcc/gimplify.c | |
parent | e16187d98d7a47a24ea909d01bf17349aed93aeb (diff) | |
download | gcc-21f9ec0c6ad431e25e58dee6b9e6759ab7e74003.zip gcc-21f9ec0c6ad431e25e58dee6b9e6759ab7e74003.tar.gz gcc-21f9ec0c6ad431e25e58dee6b9e6759ab7e74003.tar.bz2 |
re PR middle-end/26004 (gcc errors on valid code [SVO])
PR c/26004
* gimplify.c (gimplify_modify_expr_rhs): Don't do return slot opt if
the target was declared 'register'.
From-SVN: r111947
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 4b58201..c9498ee 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -3295,7 +3295,8 @@ gimplify_modify_expr_rhs (tree *expr_p, tree *from_p, tree *to_p, tree *pre_p, && needs_to_live_in_memory (*to_p)) /* It's OK to use the return slot directly unless it's an NRV. */ use_target = true; - else if (is_gimple_reg_type (TREE_TYPE (*to_p))) + else if (is_gimple_reg_type (TREE_TYPE (*to_p)) + || (DECL_P (*to_p) && DECL_REGISTER (*to_p))) /* Don't force regs into memory. */ use_target = false; else if (TREE_CODE (*to_p) == VAR_DECL |