alpha.h (ASM_OUTPUT_MI_THUNK): Handle aggregated return type.
authorH.J. Lu <hjl@gnu.org>
Sat, 15 Aug 1998 20:47:16 +0000 (20:47 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 15 Aug 1998 20:47:16 +0000 (13:47 -0700)
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

gcc/ChangeLog
gcc/config/alpha/alpha.h
gcc/config/alpha/win-nt.h

index 9de7a15f692e921324314079f159548b1f1b3230..030e35ba5fbe66e7282abfe2c0113def988cf476 100644 (file)
@@ -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
index 6e612afc5748daf254742a3e7dc9cea0c78da409..4e99683fbbd6dcdb0c5708a760fd249050e1a07d 100644 (file)
@@ -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)))   \
     {                                                                  \
index 339ed4465a39208a0cca955e5c8b9a837a72dc26..a3aa27519b67877eab6c650429da139107f2bade 100644 (file)
@@ -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)))   \