This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: powerpc-ibm-aix43.2.0 2.96 19991213 longlong/reload problem
- To: gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Subject: Re: powerpc-ibm-aix43.2.0 2.96 19991213 longlong/reload problem
- From: David Edelsohn <dje at watson dot ibm dot com>
- Date: Tue, 14 Dec 1999 17:36:08 -0500
- Cc: Bernd Schmidt <bernds at balti dot cygnus dot co dot uk>, Jakub Jelinek <jakub at redhat dot com>
As far as I can determine, libgcc2.c has been silently broken on
AIX for a long time. W_SIZE_TYPE never was defined on AIX, so the inlined
assembly never was utilized. With Jakub's recent changes, the inlined
assembly is used, but does not handle common mode properly where there is
no intersection of multiply and divide instructions for both architectures.
I thought that GMP was fixing some of this, but I have not seen that new
version.
At a minimum, longlong.h needs the following patch:
Index: longlong.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/longlong.h,v
retrieving revision 1.12
diff -c -p -r1.12 longlong.h
*** longlong.h 1999/12/14 12:53:39 1.12
--- longlong.h 1999/12/14 22:34:03
*************** UDItype __umulsidi3 (USItype, USItype);
*** 850,856 ****
} while (0)
#define SMUL_TIME 14
#define UDIV_TIME 120
! #else
#define umul_ppmm(xh, xl, m0, m1) \
do { \
USItype __m0 = (m0), __m1 = (m1); \
--- 850,856 ----
} while (0)
#define SMUL_TIME 14
#define UDIV_TIME 120
! #elif defined (_ARCH_POWER)
#define umul_ppmm(xh, xl, m0, m1) \
do { \
USItype __m0 = (m0), __m1 = (m1); \
I also am worried about the W_TYPE_SIZE test in light of 64-bit PowerPC.
David
===============================================================================
David Edelsohn T.J. Watson Research Center
dje@watson.ibm.com P.O. Box 218
+1 914 945 4364 (TL 862) Yorktown Heights, NY 10598