summaryrefslogtreecommitdiff
path: root/gcc/hwint.h
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2014-05-26 08:19:02 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2014-05-26 08:19:02 +0000
commit1c8ad86a7b27987d2d1d620c665bfb6a28d5325d (patch)
treee28b8ab33b2de7eaa12479bdb8dfb1291a7f26d0 /gcc/hwint.h
parenta142dffd4a046460b3e2d05481b93d5263aef6a5 (diff)
downloadgcc-1c8ad86a7b27987d2d1d620c665bfb6a28d5325d.tar.gz
2014-05-26 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210928 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/hwint.h')
-rw-r--r--gcc/hwint.h101
1 files changed, 26 insertions, 75 deletions
diff --git a/gcc/hwint.h b/gcc/hwint.h
index 4cc4614b4ea..6d2df9d6a99 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -44,40 +44,28 @@ extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1];
#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.
+/* 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' or '__int64'
- because we're targeting a 64-bit machine from a 32-bit host. */
+ Thus, we use that unless we have to use 'long long'
+ because we're on a 32-bit host. */
-#if HOST_BITS_PER_LONG >= 64
-# define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG
+#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_BITS_PER_WIDE_INT HOST_BITS_PER_LONGLONG
+# if HOST_BITS_PER_LONGLONG == 64
# 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
+ #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 (HOST_BITS_PER_WIDE_INT / 2)
+#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
@@ -126,23 +114,15 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__;
#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
+ /* 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"
- /* We can assume that 'long long' is at least 64 bits. */
+ /* 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 \
@@ -155,42 +135,17 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__;
#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
+/* 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
@@ -203,12 +158,8 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__;
# 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"
+# error "Your host said it wanted to use long long but that does not exist"
# endif
#else
# define HOST_WIDEST_FAST_INT long