On 08/05/14 19:31, Richard Sandiford wrote: > "Joseph S. Myers" <jos...@codesourcery.com> writes: >> On Thu, 8 May 2014, Ramana Radhakrishnan wrote: >> >>> <DATE> Ramana Radhakrishnan <ramana.radhakrish...@arm.com> >>> >>> * wide-int.cc (UTItype): Define. >>> (UDWtype): Define for appropriate W_TYPE_SIZE. >> >> This breaks builds for 32-bit hosts, where TImode isn't supported. You >> can only use TImode on the host if it's 64-bit. >> >> wide-int.cc:37:56: error: unable to emulate 'TI' > > The longlong.h interface seems to be designed to be as difficult to use > as possible :-( So maybe we really do need to limit it to hosts that are > known to work and benefit from it. > > How about the following? I tested that it produces identical > wide-int.o .text for x86_64. > > I think additions to or removals from the list should be treated as > pre-approved. > > Thanks, > Richard > > > gcc/ > * wide-int.cc: Only include longlong.h for certain targets. > > Index: gcc/wide-int.cc > =================================================================== > --- gcc/wide-int.cc 2014-05-08 19:13:15.782158808 +0100 > +++ gcc/wide-int.cc 2014-05-08 19:28:52.880742385 +0100 > @@ -27,19 +27,20 @@ along with GCC; see the file COPYING3. > #include "tree.h" > #include "dumpfile.h" > > -#if GCC_VERSION >= 3000 > +#if (GCC_VERSION >= 3000 \ > + && (defined __aarch64 \
Needs tailing underscores: __aarch64__ R. > + || defined __alpha \ > + || defined __ia64 \ > + || defined __powerpc64__ \ > + || defined __sparcv9 \ > + || defined __x86_64__)) > #define W_TYPE_SIZE HOST_BITS_PER_WIDE_INT > -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 > -#endif > +typedef unsigned HOST_HALF_WIDE_INT UHWtype; > +typedef unsigned HOST_WIDE_INT UWtype; > +typedef unsigned int UDWtype __attribute__ ((mode (TI))); > #include "longlong.h" > #endif > >