aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorSteve Ellcey <sje@cup.hp.com>2010-07-22 18:14:27 +0000
committerSteve Ellcey <sje@gcc.gnu.org>2010-07-22 18:14:27 +0000
commit426d63337543926a4b9343919c2ceb191d018433 (patch)
tree4695229a652f71c1c01cd181febab6abd576b309 /gcc/stmt.c
parentbd3a5d17b02b640e0c8240fb9d5f5643e73ead3e (diff)
downloadgcc-426d63337543926a4b9343919c2ceb191d018433.zip
gcc-426d63337543926a4b9343919c2ceb191d018433.tar.gz
gcc-426d63337543926a4b9343919c2ceb191d018433.tar.bz2
re PR middle-end/44878 (Build fails when compiling libstdc++)
2010-07-22 Steve Ellcey <sje@cup.hp.com> PR middle-end/44878 * stmt.c (expand_value_return): Call promote_function_mode with a for_return argument of 2 when returning by reference. From-SVN: r162423
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 8420aaa5..0b9ce81 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -1595,8 +1595,11 @@ expand_value_return (rtx val)
tree type = TREE_TYPE (decl);
int unsignedp = TYPE_UNSIGNED (type);
enum machine_mode old_mode = DECL_MODE (decl);
- enum machine_mode mode = promote_function_mode (type, old_mode,
- &unsignedp, funtype, 1);
+ enum machine_mode mode;
+ if (DECL_BY_REFERENCE (decl))
+ mode = promote_function_mode (type, old_mode, &unsignedp, funtype, 2);
+ else
+ mode = promote_function_mode (type, old_mode, &unsignedp, funtype, 1);
if (mode != old_mode)
val = convert_modes (mode, old_mode, val, unsignedp);