diff options
author | Richard Guenther <rguenther@suse.de> | 2008-12-03 15:10:03 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-12-03 15:10:03 +0000 |
commit | 050bbfebe25a20cc711fc35d49be6bae5ff7a047 (patch) | |
tree | 91efd973d6edfe28e64f55a78e533097f611ce6c /gcc/gimplify.c | |
parent | cea1b9ebeef015414db84f1a3e6ab18e94476530 (diff) | |
download | gcc-050bbfebe25a20cc711fc35d49be6bae5ff7a047.zip gcc-050bbfebe25a20cc711fc35d49be6bae5ff7a047.tar.gz gcc-050bbfebe25a20cc711fc35d49be6bae5ff7a047.tar.bz2 |
re PR middle-end/36326 (gimplification of aggregate copies introduces extra aggregate copy)
2008-12-03 Richard Guenther <rguenther@suse.de>
PR middle-end/36326
* gimplify.c (is_gimple_mem_or_call_rhs): Remove work-around for
non-BLKmode types.
* gcc.dg/tree-ssa/pr36326.c: New testcase.
From-SVN: r142396
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 2000313..09f130e 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -656,13 +656,8 @@ static bool is_gimple_mem_or_call_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_or_call_rhs (t); |