diff options
author | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-31 00:29:04 +0000 |
---|---|---|
committer | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-31 00:29:04 +0000 |
commit | 3f28a0320537b64a56f5ca7f1629bd977322cb63 (patch) | |
tree | a163328f7fe038e4d6f4871e51c5cd9cf77f18b7 /gcc/hwint.h | |
parent | 16a0c0edea2dc879179508fc3ca88d003fb822aa (diff) | |
download | gcc-3f28a0320537b64a56f5ca7f1629bd977322cb63.tar.gz |
2004-08-30 Andrew Pinski <apinski@apple.com>
PR rtl-opt/13987
* config.host (use_long_long_for_widest_fast_int): New, default is
off.
(ia64-*-hpux*): Enable use_long_long_for_widest_fast_int.
* configure.ac: If use_long_long_for_widest_fast_int, then
define USE_LONG_LONG_FOR_WIDEST_FAST_INT.
* configure: Regenerate.
* config.in: Regenerate.
* hwint.h (HOST_WIDEST_FAST_INT, HOST_BITS_PER_WIDEST_FAST_INT):
New: widest integer type supported efficiently in hardware for the
host.
* sbitmap.h (SBITMAP_ELT_BITS): Define based on
HOST_BITS_PER_WIDEST_FAST_INT.
(SBITMAP_ELT_TYPE): Define based on HOST_WIDEST_FAST_INT.
* hard-reg-set.h (HARD_REG_ELT_TYPE): Define based on
HOST_WIDEST_FAST_INT
instead of HOST_WIDE_INT.
(HARD_REG_SET_LONGS): Likewise.
(UHOST_BITS_PER_WIDE_INT): Likewise.
Change the checks for the fast cases to be based on
HOST_BITS_PER_WIDES_FAST_INT instead of HOST_BITS_PER_WIDE_INT.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86816 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/hwint.h')
-rw-r--r-- | gcc/hwint.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/hwint.h b/gcc/hwint.h index 4fed004cbf6..ccf624f6d05 100644 --- a/gcc/hwint.h +++ b/gcc/hwint.h @@ -116,4 +116,27 @@ extern char sizeof_long_long_must_be_8[sizeof(long long) == 8 ? 1 : -1]; # define HOST_WIDEST_INT_PRINT_DOUBLE_HEX "0x%llx%016llx" #endif +/* 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 + should be "long long" or "__int64". This is no convenient way to + autodect this, so such systems must set a flag in config.host; see there + for details. */ + +#ifdef USE_LONG_LONG_FOR_WIDEST_FAST_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 wantted to use long long or __int64 but neither" +# error "exist" +# endif +#else +# define HOST_WIDEST_FAST_INT long +# define HOST_BITS_PER_WIDEST_FAST_INT HOST_BITS_PER_LONG +#endif + #endif /* ! GCC_HWINT_H */ |