From: H.J. Lu Date: Sat, 15 Aug 1998 20:31:11 +0000 (+0000) Subject: alpha.h (ASM_OUTPUT_MI_THUNK): Handle aggregated return type. X-Git-Tag: prereleases/egcs-1.1-prerelease~61 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0e79d590fedb66a8f8b3d2fe767c6997df21915;p=thirdparty%2Fgcc.git 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: r21750 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 716c5d43d111..d52c1f961b22 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. + Fri Aug 14 21:07:03 1998 Jeffrey A Law (law@cygnus.com) From Joern: diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 6e612afc5748..4e99683fbbd6 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 339ed4465a39..a3aa27519b67 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))) \