Commit 9aaa7e47 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

ira-costs.c: Remove #ifdefs on dead FORBIDDEN_INC_DEC_CLASSES.

	* ira-costs.c: Remove #ifdefs on dead FORBIDDEN_INC_DEC_CLASSES.
	Adjust comments.
	* system.h (FORBIDDEN_INC_DEC_CLASSES): Poison.

From-SVN: r174908
parent 32293e2b
2011-06-10 Hans-Peter Nilsson <hp@axis.com>
* ira-costs.c: Remove #ifdefs on dead FORBIDDEN_INC_DEC_CLASSES.
Adjust comments.
* system.h (FORBIDDEN_INC_DEC_CLASSES): Poison.
2011-06-10 Jan Hubicka <jh@suse.cz> 2011-06-10 Jan Hubicka <jh@suse.cz>
* ipa-cp.c (ipcp_process_devirtualization_opportunities): * ipa-cp.c (ipcp_process_devirtualization_opportunities):
......
...@@ -46,15 +46,9 @@ static bool pseudo_classes_defined_p = false; ...@@ -46,15 +46,9 @@ static bool pseudo_classes_defined_p = false;
/* TRUE if we work with allocnos. Otherwise we work with pseudos. */ /* TRUE if we work with allocnos. Otherwise we work with pseudos. */
static bool allocno_p; static bool allocno_p;
/* Number of elements in arrays `in_inc_dec' and `costs'. */ /* Number of elements in array `costs'. */
static int cost_elements_num; static int cost_elements_num;
#ifdef FORBIDDEN_INC_DEC_CLASSES
/* Indexed by n, is TRUE if allocno or pseudo with number N is used in
an auto-inc or auto-dec context. */
static bool *in_inc_dec;
#endif
/* The `costs' struct records the cost of using hard registers of each /* The `costs' struct records the cost of using hard registers of each
class considered for the calculation and of using memory for each class considered for the calculation and of using memory for each
allocno or pseudo. */ allocno or pseudo. */
...@@ -1135,13 +1129,7 @@ record_address_regs (enum machine_mode mode, rtx x, int context, ...@@ -1135,13 +1129,7 @@ record_address_regs (enum machine_mode mode, rtx x, int context,
case PRE_DEC: case PRE_DEC:
/* Double the importance of an allocno that is incremented or /* Double the importance of an allocno that is incremented or
decremented, since it would take two extra insns if it ends decremented, since it would take two extra insns if it ends
up in the wrong place. If the operand is a pseudo-register, up in the wrong place. */
show it is being used in an INC_DEC context. */
#ifdef FORBIDDEN_INC_DEC_CLASSES
if (REG_P (XEXP (x, 0))
&& REGNO (XEXP (x, 0)) >= FIRST_PSEUDO_REGISTER)
in_inc_dec[COST_INDEX (REGNO (XEXP (x, 0)))] = true;
#endif
record_address_regs (mode, XEXP (x, 0), 0, code, SCRATCH, 2 * scale); record_address_regs (mode, XEXP (x, 0), 0, code, SCRATCH, 2 * scale);
break; break;
...@@ -1380,9 +1368,6 @@ print_allocno_costs (FILE *f) ...@@ -1380,9 +1368,6 @@ print_allocno_costs (FILE *f)
{ {
rclass = cost_classes[k]; rclass = cost_classes[k];
if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)] if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)]
#ifdef FORBIDDEN_INC_DEC_CLASSES
&& (! in_inc_dec[i] || ! forbidden_inc_dec_class[rclass])
#endif
#ifdef CANNOT_CHANGE_MODE_CLASS #ifdef CANNOT_CHANGE_MODE_CLASS
&& ! invalid_mode_change_p (regno, (enum reg_class) rclass) && ! invalid_mode_change_p (regno, (enum reg_class) rclass)
#endif #endif
...@@ -1425,9 +1410,6 @@ print_pseudo_costs (FILE *f) ...@@ -1425,9 +1410,6 @@ print_pseudo_costs (FILE *f)
{ {
rclass = cost_classes[k]; rclass = cost_classes[k];
if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)] if (contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (regno)]
#ifdef FORBIDDEN_INC_DEC_CLASSES
&& (! in_inc_dec[regno] || ! forbidden_inc_dec_class[rclass])
#endif
#ifdef CANNOT_CHANGE_MODE_CLASS #ifdef CANNOT_CHANGE_MODE_CLASS
&& ! invalid_mode_change_p (regno, (enum reg_class) rclass) && ! invalid_mode_change_p (regno, (enum reg_class) rclass)
#endif #endif
...@@ -1477,9 +1459,6 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1477,9 +1459,6 @@ find_costs_and_classes (FILE *dump_file)
enum reg_class *regno_best_class; enum reg_class *regno_best_class;
init_recog (); init_recog ();
#ifdef FORBIDDEN_INC_DEC_CLASSES
in_inc_dec = ira_allocate (sizeof (bool) * cost_elements_num);
#endif /* FORBIDDEN_INC_DEC_CLASSES */
regno_best_class regno_best_class
= (enum reg_class *) ira_allocate (max_reg_num () = (enum reg_class *) ira_allocate (max_reg_num ()
* sizeof (enum reg_class)); * sizeof (enum reg_class));
...@@ -1544,9 +1523,6 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1544,9 +1523,6 @@ find_costs_and_classes (FILE *dump_file)
/* Zero out our accumulation of the cost of each class for each /* Zero out our accumulation of the cost of each class for each
allocno. */ allocno. */
memset (costs, 0, cost_elements_num * struct_costs_size); memset (costs, 0, cost_elements_num * struct_costs_size);
#ifdef FORBIDDEN_INC_DEC_CLASSES
memset (in_inc_dec, 0, cost_elements_num * sizeof (bool));
#endif
if (allocno_p) if (allocno_p)
{ {
...@@ -1578,9 +1554,6 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1578,9 +1554,6 @@ find_costs_and_classes (FILE *dump_file)
ira_loop_tree_node_t parent; ira_loop_tree_node_t parent;
int best_cost, allocno_cost; int best_cost, allocno_cost;
enum reg_class best, alt_class; enum reg_class best, alt_class;
#ifdef FORBIDDEN_INC_DEC_CLASSES
int inc_dec_p = false;
#endif
cost_classes_t cost_classes_ptr = regno_cost_classes[i]; cost_classes_t cost_classes_ptr = regno_cost_classes[i];
enum reg_class *cost_classes = cost_classes_ptr->classes; enum reg_class *cost_classes = cost_classes_ptr->classes;
int *i_costs = temp_costs->cost; int *i_costs = temp_costs->cost;
...@@ -1591,9 +1564,6 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1591,9 +1564,6 @@ find_costs_and_classes (FILE *dump_file)
{ {
if (regno_reg_rtx[i] == NULL_RTX) if (regno_reg_rtx[i] == NULL_RTX)
continue; continue;
#ifdef FORBIDDEN_INC_DEC_CLASSES
inc_dec_p = in_inc_dec[i];
#endif
memcpy (temp_costs, COSTS (costs, i), struct_costs_size); memcpy (temp_costs, COSTS (costs, i), struct_costs_size);
i_mem_cost = temp_costs->mem_cost; i_mem_cost = temp_costs->mem_cost;
} }
...@@ -1659,10 +1629,6 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1659,10 +1629,6 @@ find_costs_and_classes (FILE *dump_file)
i_mem_cost = INT_MAX; i_mem_cost = INT_MAX;
else else
i_mem_cost += add_cost; i_mem_cost += add_cost;
#ifdef FORBIDDEN_INC_DEC_CLASSES
if (in_inc_dec[a_num])
inc_dec_p = true;
#endif
} }
} }
if (equiv_savings < 0) if (equiv_savings < 0)
...@@ -1682,12 +1648,9 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1682,12 +1648,9 @@ find_costs_and_classes (FILE *dump_file)
for (k = 0; k < cost_classes_ptr->num; k++) for (k = 0; k < cost_classes_ptr->num; k++)
{ {
rclass = cost_classes[k]; rclass = cost_classes[k];
/* Ignore classes that are too small for this operand or /* Ignore classes that are too small or invalid for this
invalid for an operand that was auto-incremented. */ operand. */
if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)] if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)]
#ifdef FORBIDDEN_INC_DEC_CLASSES
|| (inc_dec_p && forbidden_inc_dec_class[rclass])
#endif
#ifdef CANNOT_CHANGE_MODE_CLASS #ifdef CANNOT_CHANGE_MODE_CLASS
|| invalid_mode_change_p (i, (enum reg_class) rclass) || invalid_mode_change_p (i, (enum reg_class) rclass)
#endif #endif
...@@ -1760,13 +1723,9 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1760,13 +1723,9 @@ find_costs_and_classes (FILE *dump_file)
rclass = cost_classes[k]; rclass = cost_classes[k];
if (! ira_class_subset_p[rclass][regno_aclass[i]]) if (! ira_class_subset_p[rclass][regno_aclass[i]])
continue; continue;
/* Ignore classes that are too small for this /* Ignore classes that are too small or invalid
operand or invalid for an operand that was for this operand. */
auto-incremented. */
if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)] if (! contains_reg_of_mode[rclass][PSEUDO_REGNO_MODE (i)]
#ifdef FORBIDDEN_INC_DEC_CLASSES
|| (inc_dec_p && forbidden_inc_dec_class[rclass])
#endif
#ifdef CANNOT_CHANGE_MODE_CLASS #ifdef CANNOT_CHANGE_MODE_CLASS
|| invalid_mode_change_p (i, (enum reg_class) rclass) || invalid_mode_change_p (i, (enum reg_class) rclass)
#endif #endif
...@@ -1813,9 +1772,6 @@ find_costs_and_classes (FILE *dump_file) ...@@ -1813,9 +1772,6 @@ find_costs_and_classes (FILE *dump_file)
} }
} }
ira_free (regno_best_class); ira_free (regno_best_class);
#ifdef FORBIDDEN_INC_DEC_CLASSES
ira_free (in_inc_dec);
#endif
} }
......
...@@ -827,7 +827,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; ...@@ -827,7 +827,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
USING_SVR4_H SVR4_ASM_SPEC FUNCTION_ARG FUNCTION_ARG_ADVANCE \ USING_SVR4_H SVR4_ASM_SPEC FUNCTION_ARG FUNCTION_ARG_ADVANCE \
FUNCTION_INCOMING_ARG IRA_COVER_CLASSES TARGET_VERSION \ FUNCTION_INCOMING_ARG IRA_COVER_CLASSES TARGET_VERSION \
MACHINE_TYPE TARGET_HAS_TARGETCM ASM_OUTPUT_BSS \ MACHINE_TYPE TARGET_HAS_TARGETCM ASM_OUTPUT_BSS \
SETJMP_VIA_SAVE_AREA SETJMP_VIA_SAVE_AREA FORBIDDEN_INC_DEC_CLASSES
/* Hooks that are no longer used. */ /* Hooks that are no longer used. */
#pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment