diff options
author | Josh Conner <jconner@apple.com> | 2006-08-31 23:44:00 +0000 |
---|---|---|
committer | Josh Conner <jconner@gcc.gnu.org> | 2006-08-31 23:44:00 +0000 |
commit | ebdd079afcd5af335659b9a2f0283e83133bc5df (patch) | |
tree | 263480fb37994a6b1d6fb05448d4acf2a4beda63 | |
parent | 59294c2bdfdcd762f9c0b22378b09ac8efc293d0 (diff) | |
download | gcc-ebdd079afcd5af335659b9a2f0283e83133bc5df.zip gcc-ebdd079afcd5af335659b9a2f0283e83133bc5df.tar.gz gcc-ebdd079afcd5af335659b9a2f0283e83133bc5df.tar.bz2 |
re PR middle-end/25505 (gcc uses way too much stack space for this code)
2006-08-31 Josh Conner <jconner@apple.com>
PR c++/25505
* tree-gimple.c (is_gimple_mem_rhs): Recognize functions
returning aggregates.
From-SVN: r116613
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-gimple.c | 4 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 949adec..246de0c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-08-31 Josh Conner <jconner@apple.com> + + PR c++/25505 + * tree-gimple.c (is_gimple_mem_rhs): Recognize functions + returning aggregates. + 2006-08-31 Zdenek Dvorak <dvorakz@suse.cz> PR tree-optimization/28839 diff --git a/gcc/tree-gimple.c b/gcc/tree-gimple.c index b85ddad..740f673 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); |