summaryrefslogtreecommitdiff
path: root/gcc/tree-gimple.c
diff options
context:
space:
mode:
authorjconner <jconner@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-31 23:44:00 +0000
committerjconner <jconner@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-31 23:44:00 +0000
commitf1e06d362e4b5d1bfb1de14d1ce4b6f3e125fad9 (patch)
tree263480fb37994a6b1d6fb05448d4acf2a4beda63 /gcc/tree-gimple.c
parent20e41a71829fdaedbc6cddaf9f924610700eb7cc (diff)
downloadgcc-f1e06d362e4b5d1bfb1de14d1ce4b6f3e125fad9.tar.gz
2006-08-31 Josh Conner <jconner@apple.com>
PR c++/25505 * tree-gimple.c (is_gimple_mem_rhs): Recognize functions returning aggregates. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116613 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-gimple.c')
-rw-r--r--gcc/tree-gimple.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-gimple.c b/gcc/tree-gimple.c
index b85ddad45fe..740f6735f7b 100644
--- a/gcc/tree-gimple.c
+++ b/gcc/tree-gimple.c
@@ -115,7 +115,9 @@ is_gimple_mem_rhs (tree t)
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)
+ || (TYPE_MODE (TREE_TYPE (t)) != BLKmode
+ && (TREE_CODE (t) != CALL_EXPR
+ || ! aggregate_value_p (t, t))))
return is_gimple_val (t);
else
return is_gimple_formal_tmp_rhs (t);