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/hard-reg-set.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/hard-reg-set.h')
-rw-r--r-- | gcc/hard-reg-set.h | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h index a770180e386..166a839a759 100644 --- a/gcc/hard-reg-set.h +++ b/gcc/hard-reg-set.h @@ -33,22 +33,23 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA Note that lots of code assumes that the first part of a regset is the same format as a HARD_REG_SET. To help make sure this is true, - we only try the widest integer mode (HOST_WIDE_INT) instead of all the - smaller types. This approach loses only if there are a very few - registers and then only in the few cases where we have an array of - HARD_REG_SETs, so it needn't be as complex as it used to be. */ + we only try the widest fast integer mode (HOST_WIDEST_FAST_INT) + instead of all the smaller types. This approach loses only if + there are avery few registers and then only in the few cases where + we have an array of HARD_REG_SETs, so it needn't be as complex as + it used to be. */ -typedef unsigned HOST_WIDE_INT HARD_REG_ELT_TYPE; +typedef unsigned HOST_WIDEST_FAST_INT HARD_REG_ELT_TYPE; -#if FIRST_PSEUDO_REGISTER <= HOST_BITS_PER_WIDE_INT +#if FIRST_PSEUDO_REGISTER <= HOST_BITS_PER_WIDEST_FAST_INT #define HARD_REG_SET HARD_REG_ELT_TYPE #else #define HARD_REG_SET_LONGS \ - ((FIRST_PSEUDO_REGISTER + HOST_BITS_PER_WIDE_INT - 1) \ - / HOST_BITS_PER_WIDE_INT) + ((FIRST_PSEUDO_REGISTER + HOST_BITS_PER_WIDEST_FAST_INT - 1) \ + / HOST_BITS_PER_WIDEST_FAST_INT) typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS]; #endif @@ -111,7 +112,7 @@ typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS]; #else -#define UHOST_BITS_PER_WIDE_INT ((unsigned) HOST_BITS_PER_WIDE_INT) +#define UHOST_BITS_PER_WIDE_INT ((unsigned) HOST_BITS_PER_WIDEST_FAST_INT) #define SET_HARD_REG_BIT(SET, BIT) \ ((SET)[(BIT) / UHOST_BITS_PER_WIDE_INT] \ @@ -125,7 +126,7 @@ typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS]; (!!((SET)[(BIT) / UHOST_BITS_PER_WIDE_INT] \ & (HARD_CONST (1) << ((BIT) % UHOST_BITS_PER_WIDE_INT)))) -#if FIRST_PSEUDO_REGISTER <= 2*HOST_BITS_PER_WIDE_INT +#if FIRST_PSEUDO_REGISTER <= 2*HOST_BITS_PER_WIDEST_FAST_INT #define CLEAR_HARD_REG_SET(TO) \ do { HARD_REG_ELT_TYPE *scan_tp_ = (TO); \ scan_tp_[0] = 0; \ @@ -179,7 +180,7 @@ do { HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \ goto TO; } while (0) #else -#if FIRST_PSEUDO_REGISTER <= 3*HOST_BITS_PER_WIDE_INT +#if FIRST_PSEUDO_REGISTER <= 3*HOST_BITS_PER_WIDES_FAST_INT #define CLEAR_HARD_REG_SET(TO) \ do { HARD_REG_ELT_TYPE *scan_tp_ = (TO); \ scan_tp_[0] = 0; \ @@ -243,7 +244,7 @@ do { HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \ goto TO; } while (0) #else -#if FIRST_PSEUDO_REGISTER <= 4*HOST_BITS_PER_WIDE_INT +#if FIRST_PSEUDO_REGISTER <= 4*HOST_BITS_PER_WIDEST_FAST_INT #define CLEAR_HARD_REG_SET(TO) \ do { HARD_REG_ELT_TYPE *scan_tp_ = (TO); \ scan_tp_[0] = 0; \ @@ -316,7 +317,7 @@ do { HARD_REG_ELT_TYPE *scan_xp_ = (X), *scan_yp_ = (Y); \ && (scan_xp_[3] == scan_yp_[3])) \ goto TO; } while (0) -#else /* FIRST_PSEUDO_REGISTER > 3*HOST_BITS_PER_WIDE_INT */ +#else /* FIRST_PSEUDO_REGISTER > 3*HOST_BITS_PER_WIDEST_FAST_INT */ #define CLEAR_HARD_REG_SET(TO) \ do { HARD_REG_ELT_TYPE *scan_tp_ = (TO); \ |