aboutsummaryrefslogtreecommitdiff
path: root/gcc/ira-lives.c
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2014-06-04 17:34:40 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2014-06-04 17:34:40 +0000
commit1145837df5c8c6c7664551878d216671ecf8ef6e (patch)
treed9fb5507a542d8ccc1d218346a802396dd5c276c /gcc/ira-lives.c
parent5f2e0797aeb67a52d1b71859e054f55d1cd24ec7 (diff)
downloadgcc-1145837df5c8c6c7664551878d216671ecf8ef6e.zip
gcc-1145837df5c8c6c7664551878d216671ecf8ef6e.tar.gz
gcc-1145837df5c8c6c7664551878d216671ecf8ef6e.tar.bz2
recog.h (operand_alternative): Convert reg_class, reject, matched and matches into bitfields.
gcc/ * recog.h (operand_alternative): Convert reg_class, reject, matched and matches into bitfields. (preprocess_constraints): New overload. (preprocess_insn_constraints): New function. (preprocess_constraints): Take the insn as parameter. (recog_op_alt): Change into a pointer. (target_recog): Add x_op_alt. * recog.c (asm_op_alt): New variable. (recog_op_alt): Change into a pointer. (preprocess_constraints): New overload, replacing the old function definition with one that doesn't use global state. (preprocess_insn_constraints): New function. (preprocess_constraints): Use them. Take the insn as parameter. Use asm_op_alt for asms. (recog_init): Free existing x_op_alt entries. * ira-lives.c (check_and_make_def_conflict): Make operand_alternative pointer const. (make_early_clobber_and_input_conflicts): Likewise. (process_bb_node_lives): Pass the insn to process_constraints. * reg-stack.c (check_asm_stack_operands): Likewise. (subst_asm_stack_regs): Likewise. * regcprop.c (copyprop_hardreg_forward_1): Likewise. * regrename.c (build_def_use): Likewise. * sched-deps.c (sched_analyze_insn): Likewise. * sel-sched.c (get_reg_class, implicit_clobber_conflict_p): Likewise. * config/arm/arm.c (xscale_sched_adjust_cost): Likewise. (note_invalid_constants): Likewise. * config/i386/i386.c (ix86_legitimate_combined_insn): Likewise. (ix86_legitimate_combined_insn): Make operand_alternative pointer const. From-SVN: r211240
Diffstat (limited to 'gcc/ira-lives.c')
-rw-r--r--gcc/ira-lives.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c
index 62e3768..6513320 100644
--- a/gcc/ira-lives.c
+++ b/gcc/ira-lives.c
@@ -625,7 +625,7 @@ check_and_make_def_conflict (int alt, int def, enum reg_class def_cl)
advance_p = true;
int n_operands = recog_data.n_operands;
- operand_alternative *op_alt = &recog_op_alt[alt * n_operands];
+ const operand_alternative *op_alt = &recog_op_alt[alt * n_operands];
for (use = 0; use < n_operands; use++)
{
int alt1;
@@ -646,7 +646,8 @@ check_and_make_def_conflict (int alt, int def, enum reg_class def_cl)
{
if (!TEST_BIT (enabled, alt1))
continue;
- operand_alternative *op_alt1 = &recog_op_alt[alt1 * n_operands];
+ const operand_alternative *op_alt1
+ = &recog_op_alt[alt1 * n_operands];
if (op_alt1[use].matches == def
|| (use < n_operands - 1
&& recog_data.constraints[use][0] == '%'
@@ -692,7 +693,7 @@ make_early_clobber_and_input_conflicts (void)
int n_alternatives = recog_data.n_alternatives;
int n_operands = recog_data.n_operands;
alternative_mask enabled = recog_data.enabled_alternatives;
- operand_alternative *op_alt = recog_op_alt;
+ const operand_alternative *op_alt = recog_op_alt;
for (alt = 0; alt < n_alternatives; alt++, op_alt += n_operands)
if (TEST_BIT (enabled, alt))
for (def = 0; def < n_operands; def++)
@@ -1251,7 +1252,7 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node)
}
extract_insn (insn);
- preprocess_constraints ();
+ preprocess_constraints (insn);
process_single_reg_class_operands (false, freq);
/* See which defined values die here. */