diff options
author | Steve Ellcey <sje@cup.hp.com> | 2010-07-22 18:14:27 +0000 |
---|---|---|
committer | Steve Ellcey <sje@gcc.gnu.org> | 2010-07-22 18:14:27 +0000 |
commit | 426d63337543926a4b9343919c2ceb191d018433 (patch) | |
tree | 4695229a652f71c1c01cd181febab6abd576b309 /gcc/stmt.c | |
parent | bd3a5d17b02b640e0c8240fb9d5f5643e73ead3e (diff) | |
download | gcc-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.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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); |