This removes the need_64bit_hwi logic, nothing else (well, brings
libcpp in line with gcc).

Bootstrap / regtest pending on x86_64-unknown-linux-gnu.

Just as I promised to send this before committing the "let's try this"
patch (which is now said to fix wide-int fallout).

Richard.

2014-05-07  Richard Biener  <rguent...@suse.de>

        gcc/
        * config.gcc: Remove need_64bit_hwint.
        * configure.ac: Do not define NEED_64BIT_HOST_WIDE_INT.
        * hwint.h: Do not check NEED_64BIT_HOST_WIDE_INT but assume
        it to be true.
        * config.in: Regenerate.
        * configure: Likewise.

        libcpp/
        * configure.ac: Copy gcc logic of detecting a 64bit type.
        Remove HOST_WIDE_INT define.
        * include/cpplib.h: typedef cpp_num_part to a 64bit type,
        similar to how hwint.h does it.
        * config.in: Regenerate.
        * configure: Likewise.

Index: trunk/gcc/config.gcc
===================================================================
*** trunk.orig/gcc/config.gcc   2014-04-30 10:16:58.491135331 +0200
--- trunk/gcc/config.gcc        2014-04-30 10:24:43.902103288 +0200
***************
*** 164,176 ****
  #  gas                        Set to yes or no depending on whether the target
  #                     system normally uses GNU as.
  #
- #  need_64bit_hwint   Set to yes if HOST_WIDE_INT must be 64 bits wide
- #                     for this target.  This is true if this target
- #                     supports "long" or "wchar_t" wider than 32 bits,
- #                     or BITS_PER_WORD is wider than 32 bits.
- #                     The setting made here must match the one made in
- #                     other locations such as libcpp/configure.ac
- #
  #  configure_default_options
  #                     Set to an initializer for configure_default_options
  #                     in configargs.h, based on --with-cpu et cetera.
--- 164,169 ----
*************** gnu_ld="$gnu_ld_flag"
*** 233,239 ****
  default_use_cxa_atexit=no
  default_gnu_indirect_function=no
  target_gtfiles=
- need_64bit_hwint=yes
  need_64bit_isa=
  native_system_header_dir=/usr/include
  target_type_format_char='@'
--- 226,231 ----
*************** m32c*-*-*)
*** 310,323 ****
          ;;
  aarch64*-*-*)
        cpu_type=aarch64
-       need_64bit_hwint=yes
        extra_headers="arm_neon.h"
        extra_objs="aarch64-builtins.o aarch-common.o"
        target_has_targetm_common=yes
        ;;
  alpha*-*-*)
        cpu_type=alpha
-       need_64bit_hwint=yes
        extra_options="${extra_options} g.opt"
        ;;
  am33_2.0-*-linux*)
--- 302,313 ----
*************** arm*-*-*)
*** 333,339 ****
        target_type_format_char='%'
        c_target_objs="arm-c.o"
        cxx_target_objs="arm-c.o"
-       need_64bit_hwint=yes
        extra_options="${extra_options} arm/arm-tables.opt"
        ;;
  avr-*-*)
--- 323,328 ----
*************** i[34567]86-*-*)
*** 363,369 ****
        cpu_type=i386
        c_target_objs="i386-c.o"
        cxx_target_objs="i386-c.o"
-       need_64bit_hwint=yes
        extra_options="${extra_options} fused-madd.opt"
        extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
                       pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
--- 352,357 ----
*************** x86_64-*-*)
*** 393,403 ****
                       adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
                       avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
                       shaintrin.h"
-       need_64bit_hwint=yes
        ;;
  ia64-*-*)
        extra_headers=ia64intrin.h
-       need_64bit_hwint=yes
        extra_options="${extra_options} g.opt fused-madd.opt"
        ;;
  hppa*-*-*)
--- 381,389 ----
*************** microblaze*-*-*)
*** 420,426 ****
          ;;
  mips*-*-*)
        cpu_type=mips
-       need_64bit_hwint=yes
        extra_headers="loongson.h"
        extra_options="${extra_options} g.opt mips/mips-tables.opt"
        ;;
--- 406,411 ----
*************** picochip-*-*)
*** 438,444 ****
  powerpc*-*-*)
        cpu_type=rs6000
        extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h 
spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.h"
-       need_64bit_hwint=yes
        case x$with_cpu in
            
xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|Xe6500)
                cpu_is_64bit=yes
--- 423,428 ----
*************** powerpc*-*-*)
*** 447,453 ****
        extra_options="${extra_options} g.opt fused-madd.opt 
rs6000/rs6000-tables.opt"
        ;;
  rs6000*-*-*)
-       need_64bit_hwint=yes
        extra_options="${extra_options} g.opt fused-madd.opt 
rs6000/rs6000-tables.opt"
        ;;
  score*-*-*)
--- 431,436 ----
*************** sparc*-*-*)
*** 459,480 ****
        c_target_objs="sparc-c.o"
        cxx_target_objs="sparc-c.o"
        extra_headers="visintrin.h"
-       need_64bit_hwint=yes
        ;;
  spu*-*-*)
        cpu_type=spu
-       need_64bit_hwint=yes
        ;;
  s390*-*-*)
        cpu_type=s390
-       need_64bit_hwint=yes
        extra_options="${extra_options} fused-madd.opt"
        extra_headers="s390intrin.h htmintrin.h htmxlintrin.h"
        ;;
  # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
  sh[123456789lbe]*-*-* | sh-*-*)
        cpu_type=sh
-       need_64bit_hwint=yes
        extra_options="${extra_options} fused-madd.opt"
        extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o 
sh_optimize_sett_clrt.o"
        ;;
--- 442,459 ----
*************** xtensa*-*-*)
*** 491,501 ****
        ;;
  tilegx*-*-*)
        cpu_type=tilegx
-       need_64bit_hwint=yes
        ;;
  tilepro*-*-*)
        cpu_type=tilepro
-       need_64bit_hwint=yes
        ;;
  esac
  
--- 470,478 ----
*************** case ${target} in
*** 683,689 ****
      *)
        default_use_cxa_atexit=yes;;
    esac
-   # need_64bit_hwint=yes # system compiler has this for all arch!
    use_gcc_stdint=wrap
    ;;
  *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* 
| *-*-kopensolaris*-gnu)
--- 660,665 ----
*************** hppa*64*-*-linux*)
*** 1183,1189 ****
                 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
                 pa/pa64-linux.h"
        gas=yes gnu_ld=yes
-       need_64bit_hwint=yes
        ;;
  hppa*-*-linux*)
        target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
--- 1159,1164 ----
*************** hppa*64*-*-hpux11*)
*** 1258,1264 ****
        esac
        extra_options="${extra_options} pa/pa-hpux.opt \
                       pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
-       need_64bit_hwint=yes
        tmake_file="t-slibgcc"
        case x${enable_threads} in
        x | xyes | xposix )
--- 1233,1238 ----
*************** mipstx39-*-elf* | mipstx39el-*-elf*)
*** 2092,2098 ****
        ;;
  mmix-knuth-mmixware)
        tm_file="${tm_file} newlib-stdint.h"
-       need_64bit_hwint=yes
        use_gcc_stdint=wrap
        ;;
  mn10300-*-*)
--- 2066,2071 ----
Index: trunk/gcc/config.in
===================================================================
*** trunk.orig/gcc/config.in    2014-04-28 11:53:47.560632455 +0200
--- trunk/gcc/config.in 2014-04-30 10:26:38.000000000 +0200
***************
*** 1729,1740 ****
  #endif
  
  
- /* Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h). */
- #ifndef USED_FOR_TARGET
- #undef NEED_64BIT_HOST_WIDE_INT
- #endif
- 
- 
  /* Define to the address where bug reports for this package should be sent. */
  #ifndef USED_FOR_TARGET
  #undef PACKAGE_BUGREPORT
--- 1729,1734 ----
Index: trunk/gcc/configure
===================================================================
*** trunk.orig/gcc/configure    2014-04-28 13:26:42.395248635 +0200
--- trunk/gcc/configure 2014-04-30 10:26:36.287095551 +0200
*************** else
*** 11150,11161 ****
        done
  fi
  
- if test x$need_64bit_hwint = xyes; then
- 
- $as_echo "#define NEED_64BIT_HOST_WIDE_INT 1" >>confdefs.h
- 
- fi
- 
  if test x$use_long_long_for_widest_fast_int = xyes; then
  
  $as_echo "#define USE_LONG_LONG_FOR_WIDEST_FAST_INT 1" >>confdefs.h
--- 11150,11155 ----
*************** else
*** 17994,18000 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 17997 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 17988,17994 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 17991 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 18100,18106 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 18103 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 18094,18100 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 18097 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
Index: trunk/gcc/configure.ac
===================================================================
*** trunk.orig/gcc/configure.ac 2014-04-28 13:26:42.397248634 +0200
--- trunk/gcc/configure.ac      2014-04-30 10:54:47.723979097 +0200
*************** else
*** 1372,1382 ****
        done
  fi
  
- if test x$need_64bit_hwint = xyes; then
-       AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
- [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
- fi
- 
  if test x$use_long_long_for_widest_fast_int = xyes; then
        AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
  [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
--- 1372,1377 ----
Index: trunk/gcc/hwint.h
===================================================================
*** trunk.orig/gcc/hwint.h      2014-01-07 10:20:15.790453288 +0100
--- trunk/gcc/hwint.h   2014-04-30 10:27:31.640091740 +0200
*************** extern char sizeof_long_long_must_be_8[s
*** 56,62 ****
     Thus, we use that unless we have to use 'long long' or '__int64'
     because we're targeting a 64-bit machine from a 32-bit host.  */
  
! #if HOST_BITS_PER_LONG >= 64 || !defined NEED_64BIT_HOST_WIDE_INT
  #   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG
  #   define HOST_WIDE_INT long
  #   define HOST_WIDE_INT_C(X) X ## L
--- 56,62 ----
     Thus, we use that unless we have to use 'long long' or '__int64'
     because we're targeting a 64-bit machine from a 32-bit host.  */
  
! #if HOST_BITS_PER_LONG >= 64
  #   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG
  #   define HOST_WIDE_INT long
  #   define HOST_WIDE_INT_C(X) X ## L
Index: trunk/libcpp/config.in
===================================================================
*** trunk.orig/libcpp/config.in 2013-03-01 12:05:05.628540226 +0100
--- trunk/libcpp/config.in      2014-04-30 11:09:46.000000000 +0200
***************
*** 180,185 ****
--- 180,188 ----
  /* Define to 1 if you have the <locale.h> header file. */
  #undef HAVE_LOCALE_H
  
+ /* Define to 1 if the system has the type `long long'. */
+ #undef HAVE_LONG_LONG
+ 
  /* Define to 1 if you have the <memory.h> header file. */
  #undef HAVE_MEMORY_H
  
***************
*** 228,236 ****
  /* Define to 1 if you have the <unistd.h> header file. */
  #undef HAVE_UNISTD_H
  
! /* Define to the widest efficient host integer type at least as wide as the
!    target's size_t type. */
! #undef HOST_WIDE_INT
  
  /* Define as const if the declaration of iconv() needs const. */
  #undef ICONV_CONST
--- 231,238 ----
  /* Define to 1 if you have the <unistd.h> header file. */
  #undef HAVE_UNISTD_H
  
! /* Define to 1 if the system has the type `__int64'. */
! #undef HAVE___INT64
  
  /* Define as const if the declaration of iconv() needs const. */
  #undef ICONV_CONST
***************
*** 262,267 ****
--- 264,275 ----
  /* The size of `long', as computed by sizeof. */
  #undef SIZEOF_LONG
  
+ /* The size of `long long', as computed by sizeof. */
+ #undef SIZEOF_LONG_LONG
+ 
+ /* The size of `__int64', as computed by sizeof. */
+ #undef SIZEOF___INT64
+ 
  /* If using the C implementation of alloca, define if you know the
     direction of stack growth for your system; otherwise it will be
     automatically deduced at runtime.
Index: trunk/libcpp/configure
===================================================================
*** trunk.orig/libcpp/configure 2014-02-24 17:40:11.060711433 +0100
--- trunk/libcpp/configure      2014-04-30 11:09:43.683917411 +0200
*************** _ACEOF
*** 5566,5571 ****
--- 5566,5657 ----
  
  fi
  
+ ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" 
"$ac_includes_default"
+ if test "x$ac_cv_type_long_long" = x""yes; then :
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LONG_LONG 1
+ _ACEOF
+ 
+ # The cast to long int works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+ $as_echo_n "checking size of long long... " >&6; }
+ if test "${ac_cv_sizeof_long_long+set}" = set; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" 
"ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
+ 
+ else
+   if test "$ac_cv_type_long_long" = yes; then
+      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { as_fn_set_status 77
+ as_fn_error "cannot compute sizeof (long long)
+ See \`config.log' for more details." "$LINENO" 5; }; }
+    else
+      ac_cv_sizeof_long_long=0
+    fi
+ fi
+ 
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+ $as_echo "$ac_cv_sizeof_long_long" >&6; }
+ 
+ 
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+ _ACEOF
+ 
+ 
+ fi
+ 
+ ac_fn_c_check_type "$LINENO" "__int64" "ac_cv_type___int64" 
"$ac_includes_default"
+ if test "x$ac_cv_type___int64" = x""yes; then :
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE___INT64 1
+ _ACEOF
+ 
+ # The cast to long int works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of __int64" >&5
+ $as_echo_n "checking size of __int64... " >&6; }
+ if test "${ac_cv_sizeof___int64+set}" = set; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (__int64))" 
"ac_cv_sizeof___int64"        "$ac_includes_default"; then :
+ 
+ else
+   if test "$ac_cv_type___int64" = yes; then
+      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { as_fn_set_status 77
+ as_fn_error "cannot compute sizeof (__int64)
+ See \`config.log' for more details." "$LINENO" 5; }; }
+    else
+      ac_cv_sizeof___int64=0
+    fi
+ fi
+ 
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof___int64" >&5
+ $as_echo "$ac_cv_sizeof___int64" >&6; }
+ 
+ 
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define SIZEOF___INT64 $ac_cv_sizeof___int64
+ _ACEOF
+ 
+ 
+ fi
+ 
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in 
sys/time.h or time.h" >&5
  $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
  if test "${ac_cv_struct_tm+set}" = set; then :
*************** $as_echo "#define ENABLE_CANONICAL_SYSTE
*** 7151,7191 ****
  
  fi
  
- 
- case $target in
-       aarch64*-*-* | \
-       alpha*-*-* | \
-       arm*-*-* | \
-       x86_64-*-* | \
-       ia64-*-* | \
-       hppa*64*-*-* | \
-       i[34567]86-*-* | x86_64-*-solaris2.1[0-9]* | \
-       mips*-*-* | \
-       mmix-*-* | \
-       powerpc*-*-* | \
-       rs6000*-*-* | \
-       s390*-*-* | \
-       sparc*-*-* | \
-       spu-*-* | \
-       sh[123456789lbe]*-*-* | sh-*-* | \
-       tilegx*-*-* | tilepro*-*-* )
-               need_64bit_hwint=yes ;;
-       *)
-               need_64bit_hwint=no ;;
- esac
- 
- case $need_64bit_hwint:$ac_cv_sizeof_long in
-       *:8 | no:*) host_wide_int=long ;;
-       *) host_wide_int='long long' ;;
- esac
- 
- 
- 
- cat >>confdefs.h <<_ACEOF
- #define HOST_WIDE_INT $host_wide_int
- _ACEOF
- 
- 
  case $target in
    i?86-* | x86_64-*)
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--- 7237,7242 ----
Index: trunk/libcpp/configure.ac
===================================================================
*** trunk.orig/libcpp/configure.ac      2014-04-30 10:16:58.480135332 +0200
--- trunk/libcpp/configure.ac   2014-04-30 10:56:21.677972629 +0200
*************** AC_TYPE_SIZE_T
*** 64,69 ****
--- 64,71 ----
  AC_TYPE_SSIZE_T
  AC_TYPE_UINTPTR_T
  AC_CHECK_TYPE(ptrdiff_t, int)
+ AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
+ AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
  AC_STRUCT_TM
  AC_CHECK_SIZEOF(int)
  AC_CHECK_SIZEOF(long)
*************** if test $enable_canonical_system_headers
*** 180,218 ****
              1, [Define to enable system headers canonicalization.])
  fi
  
- m4_changequote(,)
- case $target in
-       aarch64*-*-* | \
-       alpha*-*-* | \
-       arm*-*-* | \
-       x86_64-*-* | \
-       ia64-*-* | \
-       hppa*64*-*-* | \
-       i[34567]86-*-* | x86_64-*-solaris2.1[0-9]* | \
-       mips*-*-* | \
-       mmix-*-* | \
-       powerpc*-*-* | \
-       rs6000*-*-* | \
-       s390*-*-* | \
-       sparc*-*-* | \
-       spu-*-* | \
-       sh[123456789lbe]*-*-* | sh-*-* | \
-       tilegx*-*-* | tilepro*-*-* )
-               need_64bit_hwint=yes ;;
-       *)
-               need_64bit_hwint=yes ;;
- esac
- 
- case $need_64bit_hwint:$ac_cv_sizeof_long in
-       *:8 | no:*) host_wide_int=long ;;
-       *) host_wide_int='long long' ;;
- esac
- m4_changequote([,])
- 
- AC_DEFINE_UNQUOTED(HOST_WIDE_INT, $host_wide_int,
- [Define to the widest efficient host integer type at least
-    as wide as the target's size_t type.])
- 
  case $target in
    i?86-* | x86_64-*)
      AC_TRY_COMPILE([], [asm ("pcmpestri %0, %%xmm0, %%xmm1" : : "i"(0))],
--- 182,187 ----
Index: trunk/libcpp/include/cpplib.h
===================================================================
*** trunk.orig/libcpp/include/cpplib.h  2014-01-07 10:20:27.942452756 +0100
--- trunk/libcpp/include/cpplib.h       2014-04-30 11:09:27.230918544 +0200
*************** extern int cpp_defined (cpp_reader *, co
*** 819,825 ****
  
  /* A preprocessing number.  Code assumes that any unused high bits of
     the double integer are set to zero.  */
! typedef unsigned HOST_WIDE_INT cpp_num_part;
  typedef struct cpp_num cpp_num;
  struct cpp_num
  {
--- 819,842 ----
  
  /* A preprocessing number.  Code assumes that any unused high bits of
     the double integer are set to zero.  */
! 
! /* Find a type with at least 64bit precision, mimicking hwint.h.
!    This type has to be equal to unsigned HOST_WIDE_INT, see
!    gcc/c-family/c-lex.c.  */
! #if SIZEOF_LONG >= 8
! typedef unsigned long cpp_num_part;
! #else
! # if SIZEOF_LONG_LONG >= 8
! typedef unsigned long long cpp_num_part;
! # else
! #  if SIZEOF___INT64 >= 8
! typedef unsigned __int64 cpp_num_part;
! #  else
!     #error "This line should be impossible to reach"
! #  endif
! # endif
! #endif
! 
  typedef struct cpp_num cpp_num;
  struct cpp_num
  {

Reply via email to