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
>  
> 


Reply via email to