20#ifndef GCC_HARD_REG_SET_H
21#define GCC_HARD_REG_SET_H
45#if FIRST_PSEUDO_REGISTER <= HOST_BITS_PER_WIDEST_FAST_INT
52#define HARD_REG_SET_LONGS \
53 ((FIRST_PSEUDO_REGISTER + HOST_BITS_PER_WIDEST_FAST_INT - 1) \
54 / HOST_BITS_PER_WIDEST_FAST_INT)
63 res.elts[
i] = ~elts[
i];
72 res.elts[
i] = elts[
i] & other.elts[
i];
80 elts[
i] &= other.elts[
i];
89 res.elts[
i] = elts[
i] | other.elts[
i];
97 elts[
i] |= other.elts[
i];
106 bad |= (elts[
i] ^ other.elts[
i]);
143#define HARD_CONST(X) ((HARD_REG_ELT_TYPE) (X))
162#define UHOST_BITS_PER_WIDE_INT ((unsigned) HOST_BITS_PER_WIDEST_FAST_INT)
164#if FIRST_PSEUDO_REGISTER <= HOST_BITS_PER_WIDEST_FAST_INT
166#define SET_HARD_REG_BIT(SET, BIT) \
167 ((SET) |= HARD_CONST (1) << (BIT))
168#define CLEAR_HARD_REG_BIT(SET, BIT) \
169 ((SET) &= ~(HARD_CONST (1) << (BIT)))
170#define TEST_HARD_REG_BIT(SET, BIT) \
171 (!!((SET) & (HARD_CONST (1) << (BIT))))
173#define CLEAR_HARD_REG_SET(TO) ((TO) = HARD_CONST (0))
174#define SET_HARD_REG_SET(TO) ((TO) = ~ HARD_CONST (0))
236 bad |= (x.elts[
i] & ~
y.elts[
i]);
245 good |= (x.elts[
i] &
y.elts[
i]);
278#define HARD_REG_ELT_BITS UHOST_BITS_PER_WIDE_INT
284 unsigned min,
unsigned *regno)
286#ifdef HARD_REG_SET_LONGS
317 while (!(iter->
bits & 1))
347#define EXECUTE_IF_SET_IN_HARD_REG_SET(SET, MIN, REGNUM, ITER) \
348 for (hard_reg_set_iter_init (&(ITER), (SET), (MIN), &(REGNUM)); \
349 hard_reg_set_iter_set (&(ITER), &(REGNUM)); \
350 hard_reg_set_iter_next (&(ITER), &(REGNUM)))
463#define this_target_hard_regs (&default_target_hard_regs)
466#define accessible_reg_set \
467 (this_target_hard_regs->x_accessible_reg_set)
468#define operand_reg_set \
469 (this_target_hard_regs->x_operand_reg_set)
471 (this_target_hard_regs->x_fixed_regs)
472#define fixed_reg_set \
473 (this_target_hard_regs->x_fixed_reg_set)
474#define fixed_nonglobal_reg_set \
475 (this_target_hard_regs->x_fixed_nonglobal_reg_set)
477#define call_used_regs \
478 (this_target_hard_regs->x_call_used_regs)
480#define savable_regs \
481 (this_target_hard_regs->x_savable_regs)
483#define regs_invalidated_by_call \
484 (this_target_hard_regs->x_regs_invalidated_by_call)
485#define call_used_or_fixed_regs \
486 (regs_invalidated_by_call | fixed_reg_set)
488#define reg_alloc_order \
489 (this_target_hard_regs->x_reg_alloc_order)
490#define inv_reg_alloc_order \
491 (this_target_hard_regs->x_inv_reg_alloc_order)
492#define reg_class_contents \
493 (this_target_hard_regs->x_reg_class_contents)
494#define class_only_fixed_regs \
495 (this_target_hard_regs->x_class_only_fixed_regs)
496#define reg_class_size \
497 (this_target_hard_regs->x_reg_class_size)
498#define reg_class_subclasses \
499 (this_target_hard_regs->x_reg_class_subclasses)
500#define reg_class_subunion \
501 (this_target_hard_regs->x_reg_class_subunion)
502#define reg_class_superunion \
503 (this_target_hard_regs->x_reg_class_superunion)
505 (this_target_hard_regs->x_reg_names)
513#define REG_CAN_CHANGE_MODE_P(REGN, FROM, TO) \
514 (targetm.can_change_mode_class (FROM, TO, REGNO_REG_CLASS (REGN)))
bool operator==(const nowarn_spec_t &lhs, const nowarn_spec_t &rhs)
Definition diagnostic-spec.h:124
bool operator!=(const nowarn_spec_t &lhs, const nowarn_spec_t &rhs)
Definition diagnostic-spec.h:132
nowarn_spec_t operator|(const nowarn_spec_t &lhs, const nowarn_spec_t &rhs)
Definition diagnostic-spec.h:108
nowarn_spec_t operator&(const nowarn_spec_t &lhs, const nowarn_spec_t &rhs)
Definition diagnostic-spec.h:116
dump_flags_t & operator&=(dump_flags_t &lhs, dump_flags_t rhs)
Definition dumpfile.h:240
dump_flags_t & operator|=(dump_flags_t &lhs, dump_flags_t rhs)
Definition dumpfile.h:232
dump_flags_t operator~(dump_flags_t flags)
Definition dumpfile.h:226
T * ggc_alloc(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:184
#define SET_HARD_REG_SET(TO)
Definition hard-reg-set.h:174
bool hard_reg_set_subset_p(const_hard_reg_set x, const_hard_reg_set y)
Definition hard-reg-set.h:177
#define HARD_REG_ELT_BITS
Definition hard-reg-set.h:278
#define this_target_hard_regs
Definition hard-reg-set.h:463
unsigned HOST_WIDEST_FAST_INT HARD_REG_ELT_TYPE
Definition hard-reg-set.h:43
bool hard_reg_set_iter_set(hard_reg_set_iterator *iter, unsigned *regno)
Definition hard-reg-set.h:306
#define TEST_HARD_REG_BIT(SET, BIT)
Definition hard-reg-set.h:170
#define CLEAR_HARD_REG_BIT(SET, BIT)
Definition hard-reg-set.h:168
char global_regs[FIRST_PSEUDO_REGISTER]
Definition reginfo.cc:92
HARD_REG_ELT_TYPE HARD_REG_SET
Definition hard-reg-set.h:47
bool hard_reg_set_intersect_p(const_hard_reg_set x, const_hard_reg_set y)
Definition hard-reg-set.h:183
#define HARD_CONST(X)
Definition hard-reg-set.h:143
#define fixed_regs
Definition hard-reg-set.h:470
void hard_reg_set_iter_next(hard_reg_set_iterator *iter, unsigned *regno)
Definition hard-reg-set.h:341
#define CLEAR_HARD_REG_SET(TO)
Definition hard-reg-set.h:173
void hard_reg_set_iter_init(hard_reg_set_iterator *iter, const_hard_reg_set set, unsigned min, unsigned *regno)
Definition hard-reg-set.h:283
const char * reg_class_names[]
Definition reginfo.cc:119
bool hard_reg_set_empty_p(const_hard_reg_set x)
Definition hard-reg-set.h:189
#define UHOST_BITS_PER_WIDE_INT
Definition hard-reg-set.h:162
HARD_REG_SET global_reg_set
Definition reginfo.cc:95
#define SET_HARD_REG_BIT(SET, BIT)
Definition hard-reg-set.h:166
struct target_hard_regs default_target_hard_regs
Definition reginfo.cc:63
const HARD_REG_SET const_hard_reg_set
Definition hard-reg-set.h:48
#define HOST_WIDEST_FAST_INT
Definition hwint.h:154
i
Definition poly-int.h:772
Definition array-traits.h:35
Definition hard-reg-set.h:136
HARD_REG_SET set
Definition hard-reg-set.h:137
Definition hard-reg-set.h:262
unsigned short length
Definition hard-reg-set.h:267
const HARD_REG_ELT_TYPE * pelt
Definition hard-reg-set.h:264
unsigned short word_no
Definition hard-reg-set.h:270
HARD_REG_ELT_TYPE bits
Definition hard-reg-set.h:275
Definition hash-traits.h:303
static const size_t constant_size
Definition array-traits.h:29
T element_type
Definition array-traits.h:27
static const bool has_constant_size
Definition array-traits.h:28
static const T * base(const T &x)
Definition array-traits.h:30
static size_t size(const T &)
Definition array-traits.h:31
Definition hard-reg-set.h:368
static hashval_t hash(const simplifiable_subreg *)
Definition reginfo.cc:1166
static bool equal(const simplifiable_subreg *, const subreg_shape *)
Definition reginfo.cc:1174
const subreg_shape * compare_type
Definition hard-reg-set.h:369
Definition hard-reg-set.h:375
int x_reg_alloc_order[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:425
HARD_REG_SET x_fixed_nonglobal_reg_set
Definition hard-reg-set.h:414
char x_call_used_regs[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:398
char x_fixed_regs[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:389
int x_inv_reg_alloc_order[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:428
enum reg_class x_reg_class_subunion[N_REG_CLASSES][N_REG_CLASSES]
Definition hard-reg-set.h:445
bool x_class_only_fixed_regs[N_REG_CLASSES]
Definition hard-reg-set.h:435
unsigned int x_reg_class_size[N_REG_CLASSES]
Definition hard-reg-set.h:438
HARD_REG_SET x_reg_class_contents[N_REG_CLASSES]
Definition hard-reg-set.h:431
const char * x_reg_names[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:452
HARD_REG_SET x_accessible_reg_set
Definition hard-reg-set.h:379
hash_table< simplifiable_subregs_hasher > * x_simplifiable_subregs
Definition hard-reg-set.h:456
HARD_REG_SET x_savable_regs
Definition hard-reg-set.h:408
enum reg_class x_reg_class_subclasses[N_REG_CLASSES][N_REG_CLASSES]
Definition hard-reg-set.h:441
HARD_REG_SET x_operand_reg_set
Definition hard-reg-set.h:383
enum reg_class x_reg_class_superunion[N_REG_CLASSES][N_REG_CLASSES]
Definition hard-reg-set.h:449
void finalize()
Definition reginfo.cc:1344
HARD_REG_SET x_fixed_reg_set
Definition hard-reg-set.h:392
HARD_REG_SET x_regs_invalidated_by_call
Definition hard-reg-set.h:422
const T2 & y
Definition wide-int.h:3870