aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-gimple.c
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2008-05-27 14:28:02 +0000
committerMichael Matz <matz@gcc.gnu.org>2008-05-27 14:28:02 +0000
commitbd42a56bb4d7a4a39b08eceee7eff87d3264a9c2 (patch)
treef9e2fb522e3165cb0dc981ccb4e13d343a341661 /gcc/tree-gimple.c
parenta46fc136fc682ea3d0429e6ac1084712fe18b612 (diff)
downloadgcc-bd42a56bb4d7a4a39b08eceee7eff87d3264a9c2.zip
gcc-bd42a56bb4d7a4a39b08eceee7eff87d3264a9c2.tar.gz
gcc-bd42a56bb4d7a4a39b08eceee7eff87d3264a9c2.tar.bz2
re PR middle-end/36326 (gimplification of aggregate copies introduces extra aggregate copy)
PR middle-end/36326 * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for non-BLKmode types. * tree-tailcall.c (find_tail_calls): Don't mark calls storing into memory as tail calls. From-SVN: r136033
Diffstat (limited to 'gcc/tree-gimple.c')
-rw-r--r--gcc/tree-gimple.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/gcc/tree-gimple.c b/gcc/tree-gimple.c
index da84777..2334e12 100644
--- a/gcc/tree-gimple.c
+++ b/gcc/tree-gimple.c
@@ -113,13 +113,8 @@ bool
is_gimple_mem_rhs (tree t)
{
/* If we're dealing with a renamable type, either source or dest must be
- a renamed variable. Also force a temporary if the type doesn't need
- to be stored in memory, since it's cheap and prevents erroneous
- tailcalls (PR 17526). */
- if (is_gimple_reg_type (TREE_TYPE (t))
- || (TYPE_MODE (TREE_TYPE (t)) != BLKmode
- && (TREE_CODE (t) != CALL_EXPR
- || ! aggregate_value_p (t, t))))
+ a renamed variable. */
+ if (is_gimple_reg_type (TREE_TYPE (t)))
return is_gimple_val (t);
else
return is_gimple_formal_tmp_rhs (t);