This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Patch for varargs handling on MIPS in hard-float.
- To: gcc-patches at gcc dot gnu dot org, gavin at cygnus dot com, rth at cygnus dot com
- Subject: Patch for varargs handling on MIPS in hard-float.
- From: Geoff Keating <geoffk at ozemail dot com dot au>
- Date: Sun, 10 Oct 1999 17:01:23 +1000
This made my tree somewhat happier.
--
Geoffrey Keating <geoffk@cygnus.com>
===File ~/patches/cygnus/tx49-egcs-vararg.patch=============
md5sum: 3fe0bd7ce737a285 4f3bf43688c1a37c 324913
Index: egcs/gcc/ChangeLog
0a
Sun Oct 10 15:22:34 1999 Geoffrey Keating <geoffk@cygnus.com>
* config/mips/mips.c (mips_build_va_list): Correct
TREE_CHAIN setting when hard-float.
(mips_va_start): Use corrected setting.
(mips_va_arg): Likewise. Also pass a tree to build of
POSTINCREMENT_EXPR rather than a naked 'int'.
.
Changed files:
egcs/gcc/ChangeLog
egcs/gcc/cstamp-h.in
egcs/gcc/config/mips/mips.c
md5sum: 1ded054093de910d 1ded054093de910d 10
md5sum: 2068e4519a71950a e6c97e89f4025b2f 262379
--- /sloth/disk0/co/egcs-mainline/egcs/gcc/config/mips/mips.c Sun Oct 10 13:02:30 1999
+++ egcs/gcc/config/mips/mips.c Sun Oct 10 16:55:28 1999
@@ -4025,7 +4025,7 @@ mips_build_va_list ()
TYPE_FIELDS (record) = f_fpr;
TREE_CHAIN (f_fpr) = f_rem;
- TREE_CHAIN (f_gpr) = f_gpr;
+ TREE_CHAIN (f_rem) = f_gpr;
layout_type (record);
@@ -4059,7 +4059,7 @@ mips_va_start (stdarg_p, valist, nextarg
f_fpr = TYPE_FIELDS (va_list_type_node);
f_rem = TREE_CHAIN (f_fpr);
- f_gpr = TREE_CHAIN (f_gpr);
+ f_gpr = TREE_CHAIN (f_rem);
fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr);
rem = build (COMPONENT_REF, TREE_TYPE (f_rem), valist, f_rem);
@@ -4168,7 +4168,7 @@ mips_va_arg (valist, type)
f_fpr = TYPE_FIELDS (va_list_type_node);
f_rem = TREE_CHAIN (f_fpr);
- f_gpr = TREE_CHAIN (f_gpr);
+ f_gpr = TREE_CHAIN (f_rem);
fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr);
rem = build (COMPONENT_REF, TREE_TYPE (f_rem), valist, f_rem);
@@ -4218,7 +4218,7 @@ mips_va_arg (valist, type)
expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
}
- t = build (POSTINCREMENT_EXPR, TREE_TYPE (gpr), gpr, rsize);
+ t = build (POSTINCREMENT_EXPR, TREE_TYPE (gpr), gpr, size_int (rsize));
TREE_SIDE_EFFECTS (t) = 1;
r = expand_expr (t, addr_rtx, Pmode, EXPAND_NORMAL);
if (r != addr_rtx)
============================================================