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
This commit is contained in:
parent
a896172d19
commit
4c8bd90f9f
3 changed files with 47 additions and 67 deletions
|
@ -1,3 +1,10 @@
|
|||
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
|
||||
|
|
97
gcc/hwint.h
97
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__;
|
||||
|
||||
/* 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 GCC_PRI64 "d"
|
||||
#undef PRIi64
|
||||
#define PRIi64 GCC_PRI64 "i"
|
||||
#undef PRIo64
|
||||
#define PRIo64 GCC_PRI64 "o"
|
||||
#undef PRIu64
|
||||
#define PRIu64 GCC_PRI64 "u"
|
||||
#undef PRIx64
|
||||
#define PRIx64 GCC_PRI64 "x"
|
||||
#undef PRIX64
|
||||
#define PRIX64 GCC_PRI64 "X"
|
||||
#endif
|
||||
|
||||
/* Various printf format strings for HOST_WIDE_INT. */
|
||||
|
||||
#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
|
||||
#if HOST_BITS_PER_LONG == 64
|
||||
# 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
|
||||
#undef PRId64
|
||||
#define PRId64 HOST_WIDE_INT_PRINT "d"
|
||||
#undef PRIi64
|
||||
#define PRIi64 HOST_WIDE_INT_PRINT "i"
|
||||
#undef PRIo64
|
||||
#define PRIo64 HOST_WIDE_INT_PRINT "o"
|
||||
#undef PRIu64
|
||||
#define PRIu64 HOST_WIDE_INT_PRINT "u"
|
||||
#undef PRIx64
|
||||
#define PRIx64 HOST_WIDE_INT_PRINT "x"
|
||||
#undef PRIX64
|
||||
#define PRIX64 HOST_WIDE_INT_PRINT "X"
|
||||
#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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue