aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl@gnu.org>1998-08-15 20:47:16 +0000
committerRichard Henderson <rth@gcc.gnu.org>1998-08-15 13:47:16 -0700
commit54473ca70df610235a987eac0a8966e0cbca4f81 (patch)
tree04066b6c28c512c3cc869c21aa681794012f24f7
parent67111044cec25f185fce120b66c9968c3dd6e1b1 (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/alpha/alpha.h4
-rw-r--r--gcc/config/alpha/win-nt.h4
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))) \