__intN patch 3/5: main __int128 -> __intN conversion.

Markus Trippelsdorf markus@trippelsdorf.de
Thu Oct 16 06:25:00 GMT 2014


On 2014.10.15 at 17:00 -0400, DJ Delorie wrote:
> 
> > If you could implement the second option, it would be appreciated.
> 
> Could you please test this for me?  It builds as a powerpc-elf
> cross-compiler (at least the host half) but I don't have a power
> machine here to test on.
> 
> Index: rs6000-c.c
> ===================================================================
> --- rs6000-c.c	(revision 216241)
> +++ rs6000-c.c	(working copy)
> @@ -157,12 +157,29 @@ init_vector_keywords (void)
>      {
>        __int128_type = get_identifier ("__int128_t");
>        __uint128_type = get_identifier ("__uint128_t");
>      }
>  }
>  
> +/* Helper function to find out which RID_INT_N_* code is the one for
> +   __int128, if any.  Returns RID_MAX+1 if none apply, which is safe
> +   (for our purposes, since we always expect to have __int128) to
> +   compare against.  */
> +static int
> +rid_int128(void)
> +{
> +  int i;
> +
> +  for (i = 0; i < NUM_INT_N_ENTS; i ++)
> +    if (int_n_enabled_p[i]
> +	&& int_n_data[i].bitsize == 128)
> +      return RID_INT_N_0 + i;
> +
> +  return RID_MAX + 1;
> +}
> +
>  /* Called to decide whether a conditional macro should be expanded.
>     Since we have exactly one such macro (i.e, 'vector'), we do not
>     need to examine the 'tok' parameter.  */
>  
>  static cpp_hashnode *
>  rs6000_macro_to_expand (cpp_reader *pfile, const cpp_token *tok)
> @@ -231,13 +248,13 @@ rs6000_macro_to_expand (cpp_reader *pfil
>  
>  	  if (rid_code == RID_UNSIGNED || rid_code == RID_LONG
>  	      || rid_code == RID_SHORT || rid_code == RID_SIGNED
>  	      || rid_code == RID_INT || rid_code == RID_CHAR
>  	      || rid_code == RID_FLOAT
>  	      || (rid_code == RID_DOUBLE && TARGET_VSX)
> -	      || (rid_code == RID_INT128 && TARGET_VADDUQM))
> +	      || (rid_code == rid_int128 () && TARGET_VADDUQM))
>  	    {
>  	      expand_this = C_CPP_HASHNODE (__vector_keyword);
>  	      /* If the next keyword is bool or pixel, it
>  		 will need to be expanded as well.  */
>  	      do
>  		tok = cpp_peek_token (pfile, idx++);
> 

Testing went fine (although there is a lot of noise because of the
-std=gnu11 standard change).
But I cannot approve the patch. Adding more people to CC.

Thanks.
-- 
Markus



More information about the Gcc-patches mailing list