aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-05-28 11:07:48 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-05-28 11:07:48 +0000
commit4c8bd90f9f48591980394092c4748678c37049ff (patch)
tree3a4f1de180a1cd5c46612ef0a280606f7f72cdc4 /gcc
parenta896172d192d4b2ba73877ba164688dcbdb546c9 (diff)
downloadgcc-4c8bd90f9f48591980394092c4748678c37049ff.zip
gcc-4c8bd90f9f48591980394092c4748678c37049ff.tar.gz
gcc-4c8bd90f9f48591980394092c4748678c37049ff.tar.bz2
hwint.h (*_HALF_WIDE_INT*): Move to ...
2014-05-28 Richard Biener <rguenther@suse.de> * hwint.h (*_HALF_WIDE_INT*): Move to ... * wide-int.cc (HOST_BITS_PER_HALF_WIDE_INT, HOST_HALF_WIDE_INT): ... here and remove the rest. * hwint.h (HOST_WIDE_INT_PRINT_*): Define in terms of PRI*64. From-SVN: r211013
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/hwint.h95
-rw-r--r--gcc/wide-int.cc10
3 files changed, 46 insertions, 66 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 518f5a3..771e204 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2014-05-28 Richard Biener <rguenther@suse.de>
+ * hwint.h (*_HALF_WIDE_INT*): Move to ...
+ * wide-int.cc (HOST_BITS_PER_HALF_WIDE_INT, HOST_HALF_WIDE_INT):
+ ... here and remove the rest.
+ * hwint.h (HOST_WIDE_INT_PRINT_*): Define in terms of PRI*64.
+
+2014-05-28 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/61335
* tree-vrp.c (vrp_visit_phi_node): If the compare of old and
new range fails, drop to varying.
diff --git a/gcc/hwint.h b/gcc/hwint.h
index fa573b8..f2ecc04 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -64,40 +64,6 @@ extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1];
# 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
-# define HOST_HALF_WIDE_INT_PRINT_C "L"
-# define HOST_HALF_WIDE_INT_PRINT_DEC "%" HOST_HALF_WIDE_INT_PRINT "d"
-# define HOST_HALF_WIDE_INT_PRINT_DEC_C HOST_HALF_WIDE_INT_PRINT_DEC HOST_HALF_WIDE_INT_PRINT_C
-# define HOST_HALF_WIDE_INT_PRINT_UNSIGNED "%" HOST_HALF_WIDE_INT_PRINT "u"
-# define HOST_HALF_WIDE_INT_PRINT_HEX "%#" HOST_HALF_WIDE_INT_PRINT "x"
-# define HOST_HALF_WIDE_INT_PRINT_HEX_PURE "%" HOST_HALF_WIDE_INT_PRINT "x"
-#elif HOST_BITS_PER_HALF_WIDE_INT == HOST_BITS_PER_INT
-# define HOST_HALF_WIDE_INT int
-# define HOST_HALF_WIDE_INT_PRINT ""
-# define HOST_HALF_WIDE_INT_PRINT_C ""
-# define HOST_HALF_WIDE_INT_PRINT_DEC "%" HOST_HALF_WIDE_INT_PRINT "d"
-# define HOST_HALF_WIDE_INT_PRINT_DEC_C HOST_HALF_WIDE_INT_PRINT_DEC HOST_HALF_WIDE_INT_PRINT_C
-# define HOST_HALF_WIDE_INT_PRINT_UNSIGNED "%" HOST_HALF_WIDE_INT_PRINT "u"
-# define HOST_HALF_WIDE_INT_PRINT_HEX "%#" HOST_HALF_WIDE_INT_PRINT "x"
-# define HOST_HALF_WIDE_INT_PRINT_HEX_PURE "%" HOST_HALF_WIDE_INT_PRINT "x"
-#elif HOST_BITS_PER_HALF_WIDE_INT == HOST_BITS_PER_SHORT
-# define HOST_HALF_WIDE_INT short
-# define HOST_HALF_WIDE_INT_PRINT ""
-# define HOST_HALF_WIDE_INT_PRINT_C ""
-# define HOST_HALF_WIDE_INT_PRINT_DEC "%" HOST_HALF_WIDE_INT_PRINT "d"
-# define HOST_HALF_WIDE_INT_PRINT_DEC_C HOST_HALF_WIDE_INT_PRINT_DEC HOST_HALF_WIDE_INT_PRINT_C
-# define HOST_HALF_WIDE_INT_PRINT_UNSIGNED "%" HOST_HALF_WIDE_INT_PRINT "u"
-# define HOST_HALF_WIDE_INT_PRINT_HEX "%#" HOST_HALF_WIDE_INT_PRINT "x"
-# define HOST_HALF_WIDE_INT_PRINT_HEX_PURE "%" HOST_HALF_WIDE_INT_PRINT "x"
-#else
-#error Please add support for HOST_HALF_WIDE_INT
-#endif
-
-
#define HOST_WIDE_INT_UC(X) HOST_WIDE_INT_C (X ## U)
#define HOST_WIDE_INT_1 HOST_WIDE_INT_C (1)
#define HOST_WIDE_INT_1U HOST_WIDE_INT_UC (1)
@@ -109,48 +75,45 @@ extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1];
typedef before using the __asm_fprintf__ format attribute. */
typedef HOST_WIDE_INT __gcc_host_wide_int__;
-/* Various printf format strings for 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"
- /* 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 \
- "%016" HOST_LONG_LONG_FORMAT "x"
-#endif /* HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG */
-
-#define HOST_WIDE_INT_PRINT_DEC "%" HOST_WIDE_INT_PRINT "d"
-#define HOST_WIDE_INT_PRINT_DEC_C HOST_WIDE_INT_PRINT_DEC HOST_WIDE_INT_PRINT_C
-#define HOST_WIDE_INT_PRINT_UNSIGNED "%" HOST_WIDE_INT_PRINT "u"
-#define HOST_WIDE_INT_PRINT_HEX "%#" HOST_WIDE_INT_PRINT "x"
-#define HOST_WIDE_INT_PRINT_HEX_PURE "%" HOST_WIDE_INT_PRINT "x"
-
/* Provide C99 <inttypes.h> style format definitions for 64bits. */
#ifndef HAVE_INTTYPES_H
+#if HOST_BITS_PER_LONG == 64
+# define GCC_PRI64 HOST_LONG_FORMAT
+#else
+# define GCC_PRI64 HOST_LONG_LONG_FORMAT
+#endif
#undef PRId64
-#define PRId64 HOST_WIDE_INT_PRINT "d"
+#define PRId64 GCC_PRI64 "d"
#undef PRIi64
-#define PRIi64 HOST_WIDE_INT_PRINT "i"
+#define PRIi64 GCC_PRI64 "i"
#undef PRIo64
-#define PRIo64 HOST_WIDE_INT_PRINT "o"
+#define PRIo64 GCC_PRI64 "o"
#undef PRIu64
-#define PRIu64 HOST_WIDE_INT_PRINT "u"
+#define PRIu64 GCC_PRI64 "u"
#undef PRIx64
-#define PRIx64 HOST_WIDE_INT_PRINT "x"
+#define PRIx64 GCC_PRI64 "x"
#undef PRIX64
-#define PRIX64 HOST_WIDE_INT_PRINT "X"
+#define PRIX64 GCC_PRI64 "X"
#endif
+/* Various printf format strings for HOST_WIDE_INT. */
+
+#if HOST_BITS_PER_LONG == 64
+# define HOST_WIDE_INT_PRINT HOST_LONG_FORMAT
+# define HOST_WIDE_INT_PRINT_C "L"
+#else
+# define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT
+# define HOST_WIDE_INT_PRINT_C "LL"
+#endif
+
+#define HOST_WIDE_INT_PRINT_DEC "%" PRId64
+#define HOST_WIDE_INT_PRINT_DEC_C "%" PRId64 HOST_WIDE_INT_PRINT_C
+#define HOST_WIDE_INT_PRINT_UNSIGNED "%" PRIu64
+#define HOST_WIDE_INT_PRINT_HEX "%#" PRIx64
+#define HOST_WIDE_INT_PRINT_HEX_PURE "%" PRIx64
+#define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%" PRIx64 "%016" PRIx64
+#define HOST_WIDE_INT_PRINT_PADDED_HEX "%016" PRIx64
+
/* Define HOST_WIDEST_FAST_INT to the widest integer type supported
efficiently in hardware. (That is, the widest integer type that fits
in a hardware register.) Normally this is "long" but on some hosts it
diff --git a/gcc/wide-int.cc b/gcc/wide-int.cc
index 3bfae2c..0d26edb 100644
--- a/gcc/wide-int.cc
+++ b/gcc/wide-int.cc
@@ -27,6 +27,16 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "dumpfile.h"
+
+#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
+#elif HOST_BITS_PER_HALF_WIDE_INT == HOST_BITS_PER_INT
+# define HOST_HALF_WIDE_INT int
+#else
+#error Please add support for HOST_HALF_WIDE_INT
+#endif
+
#define W_TYPE_SIZE HOST_BITS_PER_WIDE_INT
#if GCC_VERSION >= 3000 && (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__))
typedef unsigned HOST_HALF_WIDE_INT UHWtype;