aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2006-03-10 17:47:08 -0500
committerJason Merrill <jason@gcc.gnu.org>2006-03-10 17:47:08 -0500
commit21f9ec0c6ad431e25e58dee6b9e6759ab7e74003 (patch)
tree2b1be739b500fee318e5f1d12833519be9204c09 /gcc/gimplify.c
parente16187d98d7a47a24ea909d01bf17349aed93aeb (diff)
downloadgcc-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.c3
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