diff options
author | H.J. Lu <hjl@gnu.org> | 1998-08-15 20:47:16 +0000 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-08-15 13:47:16 -0700 |
commit | 54473ca70df610235a987eac0a8966e0cbca4f81 (patch) | |
tree | 04066b6c28c512c3cc869c21aa681794012f24f7 /gcc | |
parent | 67111044cec25f185fce120b66c9968c3dd6e1b1 (diff) | |
download | gcc-54473ca70df610235a987eac0a8966e0cbca4f81.zip gcc-54473ca70df610235a987eac0a8966e0cbca4f81.tar.gz gcc-54473ca70df610235a987eac0a8966e0cbca4f81.tar.bz2 |
alpha.h (ASM_OUTPUT_MI_THUNK): Handle aggregated return type.
Sat Aug 15 20:22:33 1998 H.J. Lu (hjl@gnu.org)
* config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Handle aggregated
return type.
* config/alpha/win-nt.h (ASM_OUTPUT_MI_THUNK): Likewise.
From-SVN: r21751
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.h | 4 | ||||
-rw-r--r-- | gcc/config/alpha/win-nt.h | 4 |
3 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9de7a15..030e35b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Sat Aug 15 20:22:33 1998 H.J. Lu (hjl@gnu.org) + + * config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Handle aggregated + return type. + * config/alpha/win-nt.h (ASM_OUTPUT_MI_THUNK): Likewise. + Sat Aug 15 08:39:49 1998 David S. Miller <davem@pierdol.cobaltmicro.com> * config/sparc/sparc.md (movsi_lo_sum_pic_label_reg): Remove diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 6e612af..4e99683 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -2145,12 +2145,14 @@ literal_section () \ #define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \ do { \ char *fn_name = XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0); \ + int reg; \ \ /* Mark end of prologue. */ \ output_end_prologue (FILE); \ \ /* Rely on the assembler to macro expand a large delta. */ \ - fprintf (FILE, "\tlda $16,%ld($16)\n", (long)(DELTA)); \ + reg = aggregate_value_p (TREE_TYPE (TREE_TYPE (FUNCTION))) ? 17 : 16; \ + fprintf (FILE, "\tlda $%d,%ld($%d)\n", reg, (long)(DELTA), reg); \ \ if (current_file_function_operand (XEXP (DECL_RTL (FUNCTION), 0))) \ { \ diff --git a/gcc/config/alpha/win-nt.h b/gcc/config/alpha/win-nt.h index 339ed44..a3aa275 100644 --- a/gcc/config/alpha/win-nt.h +++ b/gcc/config/alpha/win-nt.h @@ -111,12 +111,14 @@ Boston, MA 02111-1307, USA. */ #define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \ do { \ char *op, *fn_name = XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0); \ + int reg; \ \ /* Mark end of prologue. */ \ output_end_prologue (FILE); \ \ /* Rely on the assembler to macro expand a large delta. */ \ - fprintf (FILE, "\tlda $16,%ld($16)\n", (long)(DELTA)); \ + reg = aggregate_value_p (TREE_TYPE (TREE_TYPE (FUNCTION))) ? 17 : 16; \ + fprintf (FILE, "\tlda $%d,%ld($%d)\n", reg, (long)(DELTA), reg); \ \ op = "jsr"; \ if (current_file_function_operand (XEXP (DECL_RTL (FUNCTION), 0))) \ |