Re: FORBIDDEN_INC_DEC_CLASSES in ira-costs.c

2011-06-10 Thread Hans-Peter Nilsson
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

2011-06-10 Thread Vladimir Makarov

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

2011-06-09 Thread Vladimir Makarov

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

2011-06-09 Thread Hans-Peter Nilsson
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