Re: FORBIDDEN_INC_DEC_CLASSES in ira-costs.c
On Thu, 9 Jun 2011, Hans-Peter Nilsson wrote: * ira-costs.c: Remove #ifdefs on dead FORBIDDEN_INC_DEC_CLASSES. Adjust comments. * system.h (FORBIDDEN_INC_DEC_CLASSES): Poison. Index: ira-costs.c === --- ira-costs.c (revision 174878) +++ ira-costs.c (working copy) Oops; I spotted a missing comment update. Please replace these hunks: @@ -1685,9 +1651,6 @@ find_costs_and_classes (FILE *dump_file) /* Ignore classes that are too small for this operand or invalid for an operand that was auto-incremented. */ 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 || invalid_mode_change_p (i, (enum reg_class) rclass) #endif @@ -1764,9 +1727,6 @@ find_costs_and_classes (FILE *dump_file) operand or invalid for an operand that was auto-incremented. */ 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 || invalid_mode_change_p (i, (enum reg_class) rclass) #endif with these: @@ -1682,12 +1648,9 @@ find_costs_and_classes (FILE *dump_file) for (k = 0; k cost_classes_ptr-num; k++) { rclass = cost_classes[k]; - /* Ignore classes that are too small for this operand or -invalid for an operand that was auto-incremented. */ + /* Ignore classes that are too small or invalid for this +operand. */ 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 || invalid_mode_change_p (i, (enum reg_class) rclass) #endif @@ -1760,13 +1723,9 @@ find_costs_and_classes (FILE *dump_file) rclass = cost_classes[k]; if (! ira_class_subset_p[rclass][regno_aclass[i]]) continue; - /* Ignore classes that are too small for this -operand or invalid for an operand that was -auto-incremented. */ + /* Ignore classes that are too small or invalid +for this operand. */ 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 || invalid_mode_change_p (i, (enum reg_class) rclass) #endif brgds, H-P
Re: FORBIDDEN_INC_DEC_CLASSES in ira-costs.c
On 11-06-10 8:35 AM, Hans-Peter Nilsson wrote: On Thu, 9 Jun 2011, Hans-Peter Nilsson wrote: * ira-costs.c: Remove #ifdefs on dead FORBIDDEN_INC_DEC_CLASSES. Adjust comments. * system.h (FORBIDDEN_INC_DEC_CLASSES): Poison. Index: ira-costs.c === --- ira-costs.c (revision 174878) +++ ira-costs.c (working copy) Oops; I spotted a missing comment update. Please replace these hunks: @@ -1685,9 +1651,6 @@ find_costs_and_classes (FILE *dump_file) /* Ignore classes that are too small for this operand or invalid for an operand that was auto-incremented. */ 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 || invalid_mode_change_p (i, (enum reg_class) rclass) #endif @@ -1764,9 +1727,6 @@ find_costs_and_classes (FILE *dump_file) operand or invalid for an operand that was auto-incremented. */ 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 || invalid_mode_change_p (i, (enum reg_class) rclass) #endif with these: @@ -1682,12 +1648,9 @@ find_costs_and_classes (FILE *dump_file) for (k = 0; k cost_classes_ptr-num; k++) { rclass = cost_classes[k]; - /* Ignore classes that are too small for this operand or -invalid for an operand that was auto-incremented. */ + /* Ignore classes that are too small or invalid for this +operand. */ 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 || invalid_mode_change_p (i, (enum reg_class) rclass) #endif @@ -1760,13 +1723,9 @@ find_costs_and_classes (FILE *dump_file) rclass = cost_classes[k]; if (! ira_class_subset_p[rclass][regno_aclass[i]]) continue; - /* Ignore classes that are too small for this -operand or invalid for an operand that was -auto-incremented. */ + /* Ignore classes that are too small or invalid +for this operand. */ 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 || invalid_mode_change_p (i, (enum reg_class) rclass) #endif brgds, H-P The patch is ok with these changes. Thanks for the patch.
Re: FORBIDDEN_INC_DEC_CLASSES in ira-costs.c
On 06/08/2011 12:37 PM, Hans-Peter Nilsson wrote: There's a lot of dead code inside the obsolete (removed in 2009) and nowhere else set #ifdef FORBIDDEN_INC_DEC_CLASSES. Remove and poison? Yes, I believe so. I'd say borderline obvious, but maybe there's instead reason to reinstate it, if that code is tested and supposed to be live. I can not remember a reason to save it. A big part of ira-costs.c was inherited from old reglcasses.c before the macro was removed. Probably therefore it occurred again. Thanks for finding this. I'd really appreciate if you submit a patch removing this. I'll try to give it a quick review.
Re: FORBIDDEN_INC_DEC_CLASSES in ira-costs.c
On Thu, 9 Jun 2011, Vladimir Makarov wrote: On 06/08/2011 12:37 PM, Hans-Peter Nilsson wrote: There's a lot of dead code inside the obsolete (removed in 2009) and nowhere else set #ifdef FORBIDDEN_INC_DEC_CLASSES. Remove and poison? Yes, I believe so. I'd say borderline obvious, but maybe there's instead reason to reinstate it, if that code is tested and supposed to be live. I can not remember a reason to save it. A big part of ira-costs.c was inherited from old reglcasses.c before the macro was removed. Probably therefore it occurred again. Thanks for finding this. I'd really appreciate if you submit a patch removing this. I'll try to give it a quick review. Tested by adding a #define FORBIDDEN_INC_DEC_CLASSES xyzzy to cris.h and observing (1) without poison, build dies because of references to undefined forbidden_inc_dec_class (ira-costs.c being the sole referer) and (2) with poison, compilation dies at first compilation including cris.h due to the poisoning, (3) without the #define-dummy but with poison, compilation dies in ira-costs.c on first reference to FORBIDDEN_INC_DEC_CLASSES due to the poisoning, so you don't have to trust me on my word that I managed to remove them all. :) Thus, except for the comment adjustments and formatting, the removal is mechanical and self-checking. ...and no warnings this time! Ok? * ira-costs.c: Remove #ifdefs on dead FORBIDDEN_INC_DEC_CLASSES. Adjust comments. * system.h (FORBIDDEN_INC_DEC_CLASSES): Poison. Index: system.h === --- system.h(revision 174865) +++ system.h(working copy) @@ -826,7 +826,8 @@ extern void fancy_abort (const char *, i FUNCTION_ARG_BOUNDARY MUST_USE_SJLJ_EXCEPTIONS US_SOFTWARE_GOFAST \ USING_SVR4_H SVR4_ASM_SPEC FUNCTION_ARG FUNCTION_ARG_ADVANCE \ FUNCTION_INCOMING_ARG IRA_COVER_CLASSES TARGET_VERSION \ - MACHINE_TYPE TARGET_HAS_TARGETCM ASM_OUTPUT_BSS + MACHINE_TYPE TARGET_HAS_TARGETCM ASM_OUTPUT_BSS\ + FORBIDDEN_INC_DEC_CLASSES /* Hooks that are no longer used. */ #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ Index: ira-costs.c === --- ira-costs.c (revision 174878) +++ ira-costs.c (working copy) @@ -46,15 +46,9 @@ static bool pseudo_classes_defined_p = f /* TRUE if we work with allocnos. Otherwise we work with pseudos. */ 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; -#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 class considered for the calculation and of using memory for each allocno or pseudo. */ @@ -1135,13 +1129,7 @@ record_address_regs (enum machine_mode m case PRE_DEC: /* Double the importance of an allocno that is incremented or decremented, since it would take two extra insns if it ends -up in the wrong place. If the operand is a pseudo-register, -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 +up in the wrong place. */ record_address_regs (mode, XEXP (x, 0), 0, code, SCRATCH, 2 * scale); break; @@ -1380,9 +1368,6 @@ print_allocno_costs (FILE *f) { rclass = cost_classes[k]; 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 ! invalid_mode_change_p (regno, (enum reg_class) rclass) #endif @@ -1425,9 +1410,6 @@ print_pseudo_costs (FILE *f) { rclass = cost_classes[k]; 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 ! invalid_mode_change_p (regno, (enum reg_class) rclass) #endif @@ -1477,9 +1459,6 @@ find_costs_and_classes (FILE *dump_file) enum reg_class *regno_best_class; 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 = (enum reg_class *) ira_allocate (max_reg_num () * sizeof (enum reg_class)); @@ -1544,9 +1523,6 @@ find_costs_and_classes (FILE *dump_file) /* Zero out our