This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH][2/n] Always 64bit-HWI cleanups


The following changes the configury to insist on [u]int64_t being
available and removes the very old __int64 case.  Autoconf doesn't
check for it, support came in via a big merge in Dec 2002, r60174,
and it was never used on the libcpp side until I fixed that with
the last patch of this series, so we couldn't have relied on it
at least since libcpp was introduced.

Both libcpp and vmsdbg.h now use [u]int64_t, switching HOST_WIDE_INT
to literally use int64_t has to be done with the grand renaming of
all users due to us using 'unsigned HOST_WIDE_INT'.

Btw, I couldn't find any "standard" way of writing
[u]int64_t literals (substitution for HOST_WIDE_INT_C) nor
one for printf formats (substitutions for HOST_WIDE_INT_PRINT
and friends).  I'll consider doing s/HOST_WIDE_INT/[U]INT64/
there if nobody comes up with a better plan.

Unfortunately any followup will be the whole renaming game
at once due to the 'unsigned' issue.  I'll make sure to
propose a hwint.h-only patch with a renaming guide for
review and expect the actual renaming to take place using
a script.

Bootstrap and regtest running on x86_64-unknown-linux-gnu, ok?

After this patch you may use [u]int64_t freely in host sources
(lto-plugin already does that - heh).

Thanks,
Richard.

2014-05-23  Richard Biener  <rguenther@suse.de>

	libcpp/
	* configure.ac: Remove long long and __int64 type checks,
	add check for uint64_t and fail if that wasn't found.
	* include/cpplib.h (cpp_num_part): Use uint64_t.
	* config.in: Regenerate.
	* configure: Likewise.

	gcc/
	* configure.ac: Drop __int64 type check.  Insist that we
	found uint64_t and int64_t.
	* hwint.h (HOST_BITS_PER___INT64): Remove.
	(HOST_BITS_PER_WIDE_INT): Define to 64 and remove
	__int64 case.
	(HOST_WIDE_INT_PRINT_*): Remove 32bit case.
	(HOST_WIDEST_INT*): Define to HOST_WIDE_INT*.
	(HOST_WIDEST_FAST_INT): Remove __int64 case.
	* vmsdbg.h (struct _DST_SRC_COMMAND): Use int64_t
	for dst_q_src_df_rms_cdt.
	* configure: Regenerate.
	* config.in: Likewise.

Index: libcpp/config.in
===================================================================
*** libcpp/config.in	(revision 210847)
--- libcpp/config.in	(working copy)
***************
*** 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
  
--- 180,185 ----
***************
*** 231,239 ****
  /* 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
  
--- 228,233 ----
***************
*** 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.
--- 258,263 ----
***************
*** 340,345 ****
--- 328,338 ----
  /* Define to 1 if you need to in order for `stat' and other things to work. */
  #undef _POSIX_SOURCE
  
+ /* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
+    <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+    #define below would cause a syntax error. */
+ #undef _UINT64_T
+ 
  /* Define to empty if `const' does not conform to ANSI C. */
  #undef const
  
***************
*** 361,366 ****
--- 354,363 ----
  /* Define to `int' if <sys/types.h> does not define. */
  #undef ssize_t
  
+ /* Define to the type of an unsigned integer type of width exactly 64 bits if
+    such a type exists and the standard includes do not define it. */
+ #undef uint64_t
+ 
  /* Define to the type of an unsigned integer type wide enough to hold a
     pointer, if such a type exists, and if the system does not define it. */
  #undef uintptr_t
Index: libcpp/configure
===================================================================
*** libcpp/configure	(revision 210847)
--- libcpp/configure	(working copy)
*************** $as_echo "$ac_res" >&6; }
*** 1822,1827 ****
--- 1822,1879 ----
  
  } # ac_fn_c_check_type
  
+ # ac_fn_c_find_uintX_t LINENO BITS VAR
+ # ------------------------------------
+ # Finds an unsigned integer type with width BITS, setting cache variable VAR
+ # accordingly.
+ ac_fn_c_find_uintX_t ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+ $as_echo_n "checking for uint$2_t... " >&6; }
+ if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+   $as_echo_n "(cached) " >&6
+ else
+   eval "$3=no"
+      for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+ 	 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ $ac_includes_default
+ int
+ main ()
+ {
+ static int test_array [1 - 2 * !(($ac_type) -1 >> ($2 - 1) == 1)];
+ test_array [0] = 0
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   case $ac_type in #(
+   uint$2_t) :
+     eval "$3=yes" ;; #(
+   *) :
+     eval "$3=\$ac_type" ;;
+ esac
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+        eval as_val=\$$3
+    if test "x$as_val" = x""no; then :
+ 
+ else
+   break
+ fi
+      done
+ fi
+ eval ac_res=\$$3
+ 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ 
+ } # ac_fn_c_find_uintX_t
+ 
  # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
  # --------------------------------------------
  # Tries to find the compile-time value of EXPR in a program that includes
*************** _ACEOF
*** 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 :
--- 5618,5640 ----
  
  fi
  
! ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t"
! case $ac_cv_c_uint64_t in #(
!   no|yes) ;; #(
!   *)
  
+ $as_echo "#define _UINT64_T 1" >>confdefs.h
  
  
  cat >>confdefs.h <<_ACEOF
! #define uint64_t $ac_cv_c_uint64_t
  _ACEOF
+ ;;
+   esac
  
! if test x"$ac_cv_c_uint64_t" = x"no"; then
!   as_fn_error "uint64_t not found" "$LINENO" 5
  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 :
Index: libcpp/configure.ac
===================================================================
*** libcpp/configure.ac	(revision 210847)
--- libcpp/configure.ac	(working copy)
*************** AC_TYPE_SIZE_T
*** 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)
--- 64,73 ----
  AC_TYPE_SSIZE_T
  AC_TYPE_UINTPTR_T
  AC_CHECK_TYPE(ptrdiff_t, int)
! AC_TYPE_UINT64_T
! if test x"$ac_cv_c_uint64_t" = x"no"; then
!   AC_MSG_ERROR([uint64_t not found])
! fi
  AC_STRUCT_TM
  AC_CHECK_SIZEOF(int)
  AC_CHECK_SIZEOF(long)
Index: libcpp/include/cpplib.h
===================================================================
*** libcpp/include/cpplib.h	(revision 210847)
--- libcpp/include/cpplib.h	(working copy)
*************** extern int cpp_defined (cpp_reader *, co
*** 820,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
  {
--- 820,828 ----
  /* A preprocessing number.  Code assumes that any unused high bits of
     the double integer are set to zero.  */
  
! /* This type has to be equal to unsigned HOST_WIDE_INT, see
     gcc/c-family/c-lex.c.  */
! typedef uint64_t cpp_num_part;
  typedef struct cpp_num cpp_num;
  struct cpp_num
  {
Index: gcc/configure.ac
===================================================================
*** gcc/configure.ac	(revision 210847)
--- gcc/configure.ac	(working copy)
*************** AC_CHECK_SIZEOF(short)
*** 311,318 ****
  AC_CHECK_SIZEOF(int)
  AC_CHECK_SIZEOF(long)
  AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
- AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
  GCC_STDINT_TYPES
  
  # ---------------------
  # Warnings and checking
--- 311,320 ----
  AC_CHECK_SIZEOF(int)
  AC_CHECK_SIZEOF(long)
  AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
  GCC_STDINT_TYPES
+ if test x"$ac_cv_c_uint64_t" = x"no" -o x"$ac_cv_c_int64_t" = x"no"; then
+   AC_MSG_ERROR([uint64_t or int64_t not found])
+ fi
  
  # ---------------------
  # Warnings and checking
*************** fi
*** 1374,1380 ****
  
  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
  efficiently supported by the host hardware.])
  fi
  
--- 1376,1382 ----
  
  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' type is wider than 'long' but still
  efficiently supported by the host hardware.])
  fi
  
Index: gcc/hwint.h
===================================================================
*** gcc/hwint.h	(revision 210847)
--- gcc/hwint.h	(working copy)
*************** extern char sizeof_long_long_must_be_8[s
*** 44,83 ****
  #ifdef HAVE_LONG_LONG
  # define HOST_BITS_PER_LONGLONG (CHAR_BIT * SIZEOF_LONG_LONG)
  #endif
- #ifdef HAVE___INT64
- # define HOST_BITS_PER___INT64 (CHAR_BIT * SIZEOF___INT64)
- #endif
  
! /* Set HOST_WIDE_INT.  This should be the widest efficient host
!    integer type.  It can be 32 or 64 bits, except that if we are
!    targeting a machine with 64-bit size_t then it has to be 64 bits.
  
     With a sane ABI, 'long' is the largest efficient host integer type.
!    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
  #else
! # if HOST_BITS_PER_LONGLONG >= 64
! #   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONGLONG
  #   define HOST_WIDE_INT long long
  #   define HOST_WIDE_INT_C(X) X ## LL
  # else
! #  if HOST_BITS_PER___INT64 >= 64
! #   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER___INT64
! #   define HOST_WIDE_INT __int64
! #   define HOST_WIDE_INT_C(X) X ## i64
! #  else
!     #error "Unable to find a suitable type for HOST_WIDE_INT"
! #  endif
  # endif
  #endif
  
  /* Print support for half a host wide int.  */
! #define HOST_BITS_PER_HALF_WIDE_INT (HOST_BITS_PER_WIDE_INT / 2)
  #if HOST_BITS_PER_HALF_WIDE_INT == HOST_BITS_PER_LONG
  # define HOST_HALF_WIDE_INT long
  # define HOST_HALF_WIDE_INT_PRINT HOST_LONG_FORMAT
--- 44,71 ----
  #ifdef HAVE_LONG_LONG
  # define HOST_BITS_PER_LONGLONG (CHAR_BIT * SIZEOF_LONG_LONG)
  #endif
  
! /* Set HOST_WIDE_INT, this should be always 64 bits.
  
     With a sane ABI, 'long' is the largest efficient host integer type.
!    Thus, we use that unless we have to use 'long long'
!    because we're on a 32-bit host.  */
  
! #define HOST_BITS_PER_WIDE_INT 64
! #if HOST_BITS_PER_LONG == 64
  #   define HOST_WIDE_INT long
  #   define HOST_WIDE_INT_C(X) X ## L
  #else
! # if HOST_BITS_PER_LONGLONG == 64
  #   define HOST_WIDE_INT long long
  #   define HOST_WIDE_INT_C(X) X ## LL
  # else
!    #error "Unable to find a suitable type for HOST_WIDE_INT"
  # endif
  #endif
  
  /* Print support for half a host wide int.  */
! #define HOST_BITS_PER_HALF_WIDE_INT 32
  #if HOST_BITS_PER_HALF_WIDE_INT == HOST_BITS_PER_LONG
  # define HOST_HALF_WIDE_INT long
  # define HOST_HALF_WIDE_INT_PRINT HOST_LONG_FORMAT
*************** typedef HOST_WIDE_INT __gcc_host_wide_in
*** 126,148 ****
  #if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
  # define HOST_WIDE_INT_PRINT HOST_LONG_FORMAT
  # define HOST_WIDE_INT_PRINT_C "L"
!   /* 'long' might be 32 or 64 bits, and the number of leading zeroes
!      must be tweaked accordingly.  */
! # if HOST_BITS_PER_WIDE_INT == 64
! #  define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
!      "0x%" HOST_LONG_FORMAT "x%016" HOST_LONG_FORMAT "x"
! #  define HOST_WIDE_INT_PRINT_PADDED_HEX \
!      "%016" HOST_LONG_FORMAT "x"
! # else
! #  define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
!      "0x%" HOST_LONG_FORMAT "x%08" HOST_LONG_FORMAT "x"
! #  define HOST_WIDE_INT_PRINT_PADDED_HEX \
!      "%08" HOST_LONG_FORMAT "x"
! # endif
  #else
  # define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT
  # define HOST_WIDE_INT_PRINT_C "LL"
!   /* We can assume that 'long long' is at least 64 bits.  */
  # define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
      "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
  # define HOST_WIDE_INT_PRINT_PADDED_HEX \
--- 114,128 ----
  #if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
  # define HOST_WIDE_INT_PRINT HOST_LONG_FORMAT
  # define HOST_WIDE_INT_PRINT_C "L"
!   /* HOST_BITS_PER_WIDE_INT is 64 bits.  */
! # define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
!     "0x%" HOST_LONG_FORMAT "x%016" HOST_LONG_FORMAT "x"
! # define HOST_WIDE_INT_PRINT_PADDED_HEX \
!     "%016" HOST_LONG_FORMAT "x"
  #else
  # define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT
  # define HOST_WIDE_INT_PRINT_C "LL"
!   /* HOST_BITS_PER_WIDE_INT is 64 bits.  */
  # define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
      "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
  # define HOST_WIDE_INT_PRINT_PADDED_HEX \
*************** typedef HOST_WIDE_INT __gcc_host_wide_in
*** 155,196 ****
  #define HOST_WIDE_INT_PRINT_HEX "%#" HOST_WIDE_INT_PRINT "x"
  #define HOST_WIDE_INT_PRINT_HEX_PURE "%" HOST_WIDE_INT_PRINT "x"
  
! /* Set HOST_WIDEST_INT.  This is a 64-bit type unless the compiler
!    in use has no 64-bit type at all; in that case it's 32 bits.  */
  
! #if HOST_BITS_PER_WIDE_INT >= 64 \
!     || (HOST_BITS_PER_LONGLONG < 64 && HOST_BITS_PER___INT64 < 64)
! # define HOST_WIDEST_INT		      HOST_WIDE_INT
! # define HOST_BITS_PER_WIDEST_INT	      HOST_BITS_PER_WIDE_INT
! # define HOST_WIDEST_INT_PRINT                HOST_WIDE_INT_PRINT
! # define HOST_WIDEST_INT_PRINT_DEC	      HOST_WIDE_INT_PRINT_DEC
! # define HOST_WIDEST_INT_PRINT_DEC_C	      HOST_WIDE_INT_PRINT_DEC_C
! # define HOST_WIDEST_INT_PRINT_UNSIGNED	      HOST_WIDE_INT_PRINT_UNSIGNED
! # define HOST_WIDEST_INT_PRINT_HEX	      HOST_WIDE_INT_PRINT_HEX
! # define HOST_WIDEST_INT_PRINT_DOUBLE_HEX     HOST_WIDE_INT_PRINT_DOUBLE_HEX
! # define HOST_WIDEST_INT_C(X)		      HOST_WIDE_INT (X)
! #else
! # if HOST_BITS_PER_LONGLONG >= 64
! #  define HOST_BITS_PER_WIDEST_INT	      HOST_BITS_PER_LONGLONG
! #  define HOST_WIDEST_INT		      long long
! #  define HOST_WIDEST_INT_C(X)		      X ## LL
! # else
! #  if HOST_BITS_PER___INT64 >= 64
! #   define HOST_BITS_PER_WIDEST_INT	      HOST_BITS_PER___INT64
! #   define HOST_WIDEST_INT		      __int64
! #   define HOST_WIDEST_INT_C(X)		      X ## i64
! #  else
!     #error "This line should be impossible to reach"
! #  endif
! # endif
! # define HOST_WIDEST_INT_PRINT                HOST_LONG_LONG_FORMAT
! # define HOST_WIDEST_INT_PRINT_DEC	      "%" HOST_LONG_LONG_FORMAT "d"
! # define HOST_WIDEST_INT_PRINT_DEC_C	      "%" HOST_LONG_LONG_FORMAT "dLL"
! # define HOST_WIDEST_INT_PRINT_UNSIGNED	      "%" HOST_LONG_LONG_FORMAT "u"
! # define HOST_WIDEST_INT_PRINT_HEX	      "%#" HOST_LONG_LONG_FORMAT "x"
! # define HOST_WIDEST_INT_PRINT_DOUBLE_HEX     \
!     "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
! #endif
  
  /* Define HOST_WIDEST_FAST_INT to the widest integer type supported
     efficiently in hardware.  (That is, the widest integer type that fits
--- 135,151 ----
  #define HOST_WIDE_INT_PRINT_HEX "%#" HOST_WIDE_INT_PRINT "x"
  #define HOST_WIDE_INT_PRINT_HEX_PURE "%" HOST_WIDE_INT_PRINT "x"
  
! /* Set HOST_WIDEST_INT.  This is a 64-bit type.  */
  
! #define HOST_WIDEST_INT			      HOST_WIDE_INT
! #define HOST_BITS_PER_WIDEST_INT	      HOST_BITS_PER_WIDE_INT
! #define HOST_WIDEST_INT_PRINT		      HOST_WIDE_INT_PRINT
! #define HOST_WIDEST_INT_PRINT_DEC	      HOST_WIDE_INT_PRINT_DEC
! #define HOST_WIDEST_INT_PRINT_DEC_C	      HOST_WIDE_INT_PRINT_DEC_C
! #define HOST_WIDEST_INT_PRINT_UNSIGNED	      HOST_WIDE_INT_PRINT_UNSIGNED
! #define HOST_WIDEST_INT_PRINT_HEX	      HOST_WIDE_INT_PRINT_HEX
! #define HOST_WIDEST_INT_PRINT_DOUBLE_HEX      HOST_WIDE_INT_PRINT_DOUBLE_HEX
! #define HOST_WIDEST_INT_C(X)		      HOST_WIDE_INT (X)
  
  /* Define HOST_WIDEST_FAST_INT to the widest integer type supported
     efficiently in hardware.  (That is, the widest integer type that fits
*************** typedef HOST_WIDE_INT __gcc_host_wide_in
*** 203,214 ****
  #  ifdef HAVE_LONG_LONG
  #    define HOST_WIDEST_FAST_INT long long
  #    define HOST_BITS_PER_WIDEST_FAST_INT HOST_BITS_PER_LONGLONG
- #  elif defined (HAVE___INT64)
- #    define HOST_WIDEST_FAST_INT __int64
- #    define HOST_BITS_PER_WIDEST_FAST_INT HOST_BITS_PER___INT64
  #  else
! #    error "Your host said it wanted to use long long or __int64 but neither"
! #    error "exist"
  #  endif
  #else
  #  define HOST_WIDEST_FAST_INT long
--- 158,165 ----
  #  ifdef HAVE_LONG_LONG
  #    define HOST_WIDEST_FAST_INT long long
  #    define HOST_BITS_PER_WIDEST_FAST_INT HOST_BITS_PER_LONGLONG
  #  else
! #    error "Your host said it wanted to use long long but that does not exist"
  #  endif
  #else
  #  define HOST_WIDEST_FAST_INT long
Index: gcc/vmsdbg.h
===================================================================
*** gcc/vmsdbg.h	(revision 210847)
--- gcc/vmsdbg.h	(working copy)
*************** typedef struct _DST_SRC_COMMAND
*** 216,228 ****
  	  unsigned char dst_b_src_df_length;
  	  unsigned char dst_b_src_df_flags;
  	  unsigned short int dst_w_src_df_fileid;
! #ifdef HAVE_LONG_LONG
! 	  long long dst_q_src_df_rms_cdt;
! #else
! #ifdef HAVE___INT64
! 	  __int64 dst_q_src_df_rms_cdt;
! #endif
! #endif
  	  unsigned int dst_l_src_df_rms_ebk;
  	  unsigned short int dst_w_src_df_rms_ffb;
  	  unsigned char dst_b_src_df_rms_rfo;
--- 216,222 ----
  	  unsigned char dst_b_src_df_length;
  	  unsigned char dst_b_src_df_flags;
  	  unsigned short int dst_w_src_df_fileid;
! 	  int64_t dst_q_src_df_rms_cdt;
  	  unsigned int dst_l_src_df_rms_ebk;
  	  unsigned short int dst_w_src_df_rms_ffb;
  	  unsigned char dst_b_src_df_rms_rfo;
Index: gcc/configure
===================================================================
*** gcc/configure	(revision 210847)
--- gcc/configure	(working copy)
*************** _ACEOF
*** 5862,5910 ****
  
  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
- 
  ac_fn_c_find_intX_t "$LINENO" "8" "ac_cv_c_int8_t"
  case $ac_cv_c_int8_t in #(
    no|yes) ;; #(
--- 5862,5867 ----
*************** fi
*** 6269,6274 ****
--- 6226,6234 ----
  
  
  
+ if test x"$ac_cv_c_uint64_t" = x"no" -o x"$ac_cv_c_int64_t" = x"no"; then
+   as_fn_error "uint64_t or int64_t not found" "$LINENO" 5
+ fi
  
  # ---------------------
  # Warnings and checking
*************** else
*** 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
--- 17948,17954 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 17951 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 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
--- 18054,18060 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 18057 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
Index: gcc/config.in
===================================================================
*** gcc/config.in	(revision 210847)
--- gcc/config.in	(working copy)
***************
*** 1655,1666 ****
  #endif
  
  
- /* Define to 1 if the system has the type `__int64'. */
- #ifndef USED_FOR_TARGET
- #undef HAVE___INT64
- #endif
- 
- 
  /* Define if cloog is in use. */
  #ifndef USED_FOR_TARGET
  #undef HAVE_cloog
--- 1655,1660 ----
***************
*** 1807,1818 ****
  #endif
  
  
- /* The size of `__int64', as computed by sizeof. */
- #ifndef USED_FOR_TARGET
- #undef SIZEOF___INT64
- #endif
- 
- 
  /* Define to 1 if you have the ANSI C header files. */
  #ifndef USED_FOR_TARGET
  #undef STDC_HEADERS
--- 1801,1806 ----
***************
*** 1866,1873 ****
  #endif
  
  
! /* Define to 1 if the 'long long' (or '__int64') is wider than 'long' but
!    still efficiently supported by the host hardware. */
  #ifndef USED_FOR_TARGET
  #undef USE_LONG_LONG_FOR_WIDEST_FAST_INT
  #endif
--- 1854,1861 ----
  #endif
  
  
! /* Define to 1 if the 'long long' type is wider than 'long' but still
!    efficiently supported by the host hardware. */
  #ifndef USED_FOR_TARGET
  #undef USE_LONG_LONG_FOR_WIDEST_FAST_INT
  #endif


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]