summaryrefslogtreecommitdiff
path: root/gcc/ira.h
diff options
context:
space:
mode:
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-12-15 19:51:31 +0000
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-12-15 19:51:31 +0000
commit2bd0853710d6bda898e11f38dc704107e0c2823d (patch)
tree750014302b6c2aa69719a56bb900622d8fc084ca /gcc/ira.h
parent06f29f535a7d704bfd14da3b6a42e8529827ad01 (diff)
downloadgcc-2bd0853710d6bda898e11f38dc704107e0c2823d.tar.gz
2014-12-15 Vladimir Makarov <vmakarov@redhat.com>
* ira-int.h (ira_prohibited_class_mode_regs): Remove. (struct target_ira_int): Move x_ira_prohibited_class_mode_regs to ... * ira.h (struct target_ira_int): ... here. (ira_prohibited_class_mode_regs): Define. * lra-constraints.c (process_alt_operands): Add one more condition to refuse alternative when reload pseudo of given class can not hold value of given mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218760 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ira.h')
-rw-r--r--gcc/ira.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ira.h b/gcc/ira.h
index d62656cc0bd..2fa8d6db902 100644
--- a/gcc/ira.h
+++ b/gcc/ira.h
@@ -110,6 +110,11 @@ struct target_ira
/* Function specific hard registers can not be used for the register
allocation. */
HARD_REG_SET x_ira_no_alloc_regs;
+
+ /* Array whose values are hard regset of hard registers available for
+ the allocation of given register class whose HARD_REGNO_MODE_OK
+ values for given mode are zero. */
+ HARD_REG_SET x_ira_prohibited_class_mode_regs[N_REG_CLASSES][NUM_MACHINE_MODES];
};
extern struct target_ira default_target_ira;
@@ -155,6 +160,8 @@ extern struct target_ira *this_target_ira;
(this_target_ira->x_ira_class_singleton)
#define ira_no_alloc_regs \
(this_target_ira->x_ira_no_alloc_regs)
+#define ira_prohibited_class_mode_regs \
+ (this_target_ira->x_ira_prohibited_class_mode_regs)
/* Major structure describing equivalence info for a pseudo. */
struct ira_reg_equiv_s