aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-12-09 10:00:25 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-12-09 10:00:25 +0000
commitfa1fabcbbce4ec891b5856ebd994384c6635736b (patch)
tree8004babdc793f99c4704ed369b977399b980bd34 /gcc
parent27037b5f7d05ec826b4931d87d4e9a68f680e62f (diff)
downloadgcc-fa1fabcbbce4ec891b5856ebd994384c6635736b.zip
gcc-fa1fabcbbce4ec891b5856ebd994384c6635736b.tar.gz
gcc-fa1fabcbbce4ec891b5856ebd994384c6635736b.tar.bz2
rtl.h (invalid_mode_change_p): Adjust prototype.
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 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. From-SVN: r167631
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/ira-costs.c13
-rw-r--r--gcc/ira.c2
-rw-r--r--gcc/reginfo.c4
-rw-r--r--gcc/rtl.h3
5 files changed, 20 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5ad27b7..f4338c0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 2a7a9a8..2329613 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -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);
diff --git a/gcc/ira.c b/gcc/ira.c
index df86bb5..6db1fba 100644
--- 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);
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index 7c1209f..dd2376b 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -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;
diff --git a/gcc/rtl.h b/gcc/rtl.h
index fdb185c..bb482ba 100644
--- 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);