OSDN Git Service

Sat Aug 15 20:22:33 1998 H.J. Lu (hjl@gnu.org)
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 15 Aug 1998 20:47:16 +0000 (20:47 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 15 Aug 1998 20:47:16 +0000 (20:47 +0000)
        * config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Handle aggregated
        return type.
        * config/alpha/win-nt.h (ASM_OUTPUT_MI_THUNK): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21751 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 9de7a15..030e35b 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 6e612af..4e99683 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 339ed44..a3aa275 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)))   \