On Thu, May 8, 2014 at 1:12 PM, Richard Sandiford <rdsandif...@googlemail.com> wrote: > "H.J. Lu" <hjl.to...@gmail.com> writes: >> On Thu, May 8, 2014 at 12:42 PM, Jakub Jelinek <ja...@redhat.com> wrote: >>> On Thu, May 08, 2014 at 12:34:28PM -0700, H.J. Lu wrote: >>>> On Thu, May 8, 2014 at 12:18 PM, Richard Sandiford >>>> <rdsandif...@googlemail.com> wrote: >>>> > Kenneth Zadeck <zad...@naturalbridge.com> writes: >>>> >> everyone who has a private port will hate you forever. note that i >>>> >> have 2 of them. >>>> > >>>> > Got any other ideas though? I suppose if we're prepared to break >>>> > compatibility with whatever the upstream of longlong.h is, we could >>>> > make more use of intN_t and uintN_t. >>>> > >>>> > Having a whitelist of hosts seems like the best fix though. >>>> > I'm not sure the default umul_ppmm is going to be any better >>>> > than not defining it. >>>> > >>>> >>>> Can you add a configure time check if >>>> >>>> typedef unsigned int UTItype __attribute__ ((mode (TI))); >>>> >>>> is supported? >>> >>> Why? Isn't that #ifdef __SIZEOF_INT128__ ? > > Read this just after getting the configure test to work... > >> Yes, we can use that. Will it work? > > Seems to. How does this look? > > Thanks, > Richard > > > gcc/ > * wide-int.cc: Only include longlong.h if W_TYPE_SIZE==32 or > __SIZEOF_INT128__ is defined. > > Index: gcc/wide-int.cc > =================================================================== > --- gcc/wide-int.cc 2014-05-08 20:48:25.341583885 +0100 > +++ gcc/wide-int.cc 2014-05-08 21:09:29.324386217 +0100 > @@ -27,18 +27,17 @@ along with GCC; see the file COPYING3. > #include "tree.h" > #include "dumpfile.h" > > -#if GCC_VERSION >= 3000 > #define W_TYPE_SIZE HOST_BITS_PER_WIDE_INT
Isn't HOST_BITS_PER_WIDE_INT always 64 now? > +#if GCC_VERSION >= 3000 && (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__)) W_TYPE_SIZE == 32 is always false and on 32-bit hosts, __SIZEOF_INT128__ won't be defined. > typedef unsigned HOST_HALF_WIDE_INT UHWtype; > typedef unsigned HOST_WIDE_INT UWtype; > typedef unsigned int UQItype __attribute__ ((mode (QI))); > typedef unsigned int USItype __attribute__ ((mode (SI))); > typedef unsigned int UDItype __attribute__ ((mode (DI))); > -typedef unsigned int UTItype __attribute__ ((mode (TI))); > #if W_TYPE_SIZE == 32 > -# define UDWtype UDItype > -#elif W_TYPE_SIZE == 64 > -# define UDWtype UTItype > +typedef unsigned int UDWtype __attribute__ ((mode (DI))); Can't we use #ifndef __SIZEOF_INT128__ here? > +#else > +typedef unsigned int UDWtype __attribute__ ((mode (TI))); > #endif > #include "longlong.h" > #endif -- H.J.