OSDN Git Service

2010-12-09 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Dec 2010 10:00:25 +0000 (10:00 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Dec 2010 10:00:25 +0000 (10:00 +0000)
* rtl.h (invalid_mode_change_p): Adjust prototype.
* reginfo.c (invalid_mode_change_p): Remove from argument.
* ira-costs.c (print_allocno_costs): Adjust callers.
(find_costs_and_classes): Likewise.

2010-12-09  Richard Guenther  <rguenther@suse.de>

* ira.c (ira): Do not call finish_subregs_of_mode.
* ira-costs.c (finish_costs): Call finish_subregs_of_mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167631 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ira-costs.c
gcc/ira.c
gcc/reginfo.c
gcc/rtl.h

index 5ad27b7..f4338c0 100644 (file)
@@ -1,3 +1,15 @@
+2010-12-09  Richard Guenther  <rguenther@suse.de>
+
+       * ira.c (ira): Do not call finish_subregs_of_mode.
+       * ira-costs.c (finish_costs): Call finish_subregs_of_mode.
+
+2010-12-09  Richard Guenther  <rguenther@suse.de>
+
+       * rtl.h (invalid_mode_change_p): Adjust prototype.
+       * reginfo.c (invalid_mode_change_p): Remove from argument.
+       * ira-costs.c (print_allocno_costs): Adjust callers.
+       (find_costs_and_classes): Likewise.
+
 2010-12-09  Jakub Jelinek  <jakub@redhat.com>
 
        * config/s390/s390.md (*mov<mode>cc): Change lgoc and stgoc to
index 2a7a9a8..2329613 100644 (file)
@@ -1093,8 +1093,7 @@ print_allocno_costs (FILE *f)
              && (! in_inc_dec[i] || ! forbidden_inc_dec_class[rclass])
 #endif
 #ifdef CANNOT_CHANGE_MODE_CLASS
-             && ! invalid_mode_change_p (regno, (enum reg_class) rclass,
-                                         PSEUDO_REGNO_MODE (regno))
+             && ! invalid_mode_change_p (regno, (enum reg_class) rclass)
 #endif
              )
            {
@@ -1131,8 +1130,7 @@ print_pseudo_costs (FILE *f)
              && (! in_inc_dec[regno] || ! forbidden_inc_dec_class[rclass])
 #endif
 #ifdef CANNOT_CHANGE_MODE_CLASS
-             && ! invalid_mode_change_p (regno, (enum reg_class) rclass,
-                                         PSEUDO_REGNO_MODE (regno))
+             && ! invalid_mode_change_p (regno, (enum reg_class) rclass)
 #endif
              )
            fprintf (f, " %s:%d", reg_class_names[rclass],
@@ -1336,8 +1334,7 @@ find_costs_and_classes (FILE *dump_file)
                  || (inc_dec_p && forbidden_inc_dec_class[rclass])
 #endif
 #ifdef CANNOT_CHANGE_MODE_CLASS
-                 || invalid_mode_change_p (i, (enum reg_class) rclass,
-                                           PSEUDO_REGNO_MODE (i))
+                 || invalid_mode_change_p (i, (enum reg_class) rclass)
 #endif
                  )
                continue;
@@ -1412,8 +1409,7 @@ find_costs_and_classes (FILE *dump_file)
                          || (inc_dec_p && forbidden_inc_dec_class[rclass])
 #endif
 #ifdef CANNOT_CHANGE_MODE_CLASS
-                         || invalid_mode_change_p (i, (enum reg_class) rclass,
-                                                   PSEUDO_REGNO_MODE (i))
+                         || invalid_mode_change_p (i, (enum reg_class) rclass)
 #endif
                          )
                        ;
@@ -1699,6 +1695,7 @@ init_costs (void)
 static void
 finish_costs (void)
 {
+  finish_subregs_of_mode ();
   ira_free (regno_equiv_gains);
   ira_free (regno_cover_class);
   ira_free (pref_buffer);
index df86bb5..6db1fba 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -3279,8 +3279,6 @@ ira (FILE *f)
 
   reload_completed = !reload (get_insns (), ira_conflicts_p);
 
-  finish_subregs_of_mode ();
-
   timevar_pop (TV_RELOAD);
 
   timevar_push (TV_IRA);
index 7c1209f..dd2376b 100644 (file)
@@ -1338,12 +1338,12 @@ init_subregs_of_mode (void)
    mode.  */
 bool
 invalid_mode_change_p (unsigned int regno,
-                      enum reg_class rclass ATTRIBUTE_UNUSED,
-                      enum machine_mode from)
+                      enum reg_class rclass ATTRIBUTE_UNUSED)
 {
   struct subregs_of_mode_node dummy, *node;
   unsigned int to;
   unsigned char mask;
+  enum machine_mode from = PSEUDO_REGNO_MODE (regno);
 
   gcc_assert (subregs_of_mode);
   dummy.block = regno & -8;
index fdb185c..bb482ba 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2455,8 +2455,7 @@ extern void init_reg_sets (void);
 extern void regclass (rtx, int);
 extern void reg_scan (rtx, unsigned int);
 extern void fix_register (const char *, int, int);
-extern bool invalid_mode_change_p (unsigned int, enum reg_class,
-                                  enum machine_mode);
+extern bool invalid_mode_change_p (unsigned int, enum reg_class);
 
 /* In reorg.c */
 extern void dbr_schedule (rtx);