diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1996-11-08 17:37:54 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1996-11-08 17:37:54 -0800 |
commit | ecec444145eaee489427a9efa5eaee7909e46333 (patch) | |
tree | ce4fb418239f59dc821fbf2c01fb9317331defac /gcc/function.c | |
parent | a082c85a4365cc2a9b73ecc6547075d3c352d46c (diff) | |
download | gcc-ecec444145eaee489427a9efa5eaee7909e46333.zip gcc-ecec444145eaee489427a9efa5eaee7909e46333.tar.gz gcc-ecec444145eaee489427a9efa5eaee7909e46333.tar.bz2 |
(expand_function_end): Handle BLKmode structures returned
in registers.
From-SVN: r13117
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/function.c b/gcc/function.c index 827f14b..6fa9811 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5549,6 +5549,11 @@ expand_function_end (filename, line, end_bindings) current_function_decl); #endif REG_FUNCTION_VALUE_P (real_decl_result) = 1; + /* If this is a BLKmode structure being returned in registers, then use + the mode computed in expand_return. */ + if (GET_MODE (real_decl_result) == BLKmode) + PUT_MODE (real_decl_result, + GET_MODE (DECL_RTL (DECL_RESULT (current_function_decl)))); emit_move_insn (real_decl_result, DECL_RTL (DECL_RESULT (current_function_decl))); emit_insn (gen_rtx (USE, VOIDmode, real_decl_result)); |