Commit 4c8bd90f by Richard Biener Committed by Richard Biener

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
parent a896172d
2014-05-28 Richard Biener <rguenther@suse.de> 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 PR tree-optimization/61335
* tree-vrp.c (vrp_visit_phi_node): If the compare of old and * tree-vrp.c (vrp_visit_phi_node): If the compare of old and
new range fails, drop to varying. new range fails, drop to varying.
......
...@@ -64,40 +64,6 @@ extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1]; ...@@ -64,40 +64,6 @@ extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1];
# endif # endif
#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_UC(X) HOST_WIDE_INT_C (X ## U)
#define HOST_WIDE_INT_1 HOST_WIDE_INT_C (1) #define HOST_WIDE_INT_1 HOST_WIDE_INT_C (1)
#define HOST_WIDE_INT_1U HOST_WIDE_INT_UC (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]; ...@@ -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 before using the __asm_fprintf__ format attribute. */
typedef HOST_WIDE_INT __gcc_host_wide_int__; 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. */ /* Provide C99 <inttypes.h> style format definitions for 64bits. */
#ifndef HAVE_INTTYPES_H #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 #undef PRId64
#define PRId64 HOST_WIDE_INT_PRINT "d" #define PRId64 GCC_PRI64 "d"
#undef PRIi64 #undef PRIi64
#define PRIi64 HOST_WIDE_INT_PRINT "i" #define PRIi64 GCC_PRI64 "i"
#undef PRIo64 #undef PRIo64
#define PRIo64 HOST_WIDE_INT_PRINT "o" #define PRIo64 GCC_PRI64 "o"
#undef PRIu64 #undef PRIu64
#define PRIu64 HOST_WIDE_INT_PRINT "u" #define PRIu64 GCC_PRI64 "u"
#undef PRIx64 #undef PRIx64
#define PRIx64 HOST_WIDE_INT_PRINT "x" #define PRIx64 GCC_PRI64 "x"
#undef PRIX64 #undef PRIX64
#define PRIX64 HOST_WIDE_INT_PRINT "X" #define PRIX64 GCC_PRI64 "X"
#endif #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 /* Define HOST_WIDEST_FAST_INT to the widest integer type supported
efficiently in hardware. (That is, the widest integer type that fits efficiently in hardware. (That is, the widest integer type that fits
in a hardware register.) Normally this is "long" but on some hosts it in a hardware register.) Normally this is "long" but on some hosts it
......
...@@ -27,6 +27,16 @@ along with GCC; see the file COPYING3. If not see ...@@ -27,6 +27,16 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h" #include "tree.h"
#include "dumpfile.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 #define W_TYPE_SIZE HOST_BITS_PER_WIDE_INT
#if GCC_VERSION >= 3000 && (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__)) #if GCC_VERSION >= 3000 && (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__))
typedef unsigned HOST_HALF_WIDE_INT UHWtype; typedef unsigned HOST_HALF_WIDE_INT UHWtype;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment