ira_init_register_move_cost_if_necessary asserts have_regs_of_mode[MODE] is true. We need to make sure not to call ira_init_register_move_cost_if_necessary when have_regs_of_mode[MODE] is false.

Verified the H8 port still builds libgcc, also bootstrapped and regression tested on x86_64-linux-gnu and i686-linux-gnu.

Installing on the trunk.

Sorry for the breakage,
Jeff
commit 8f78832934c603a04db68329c195184a142f04a6
Author: Jeff Law <l...@redhat.com>
Date:   Wed Feb 15 23:35:08 2017 -0700

        PR middle-end/79521
        * ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling
        ira_init_register_move_cost_if_necessary.

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d99f444..24d9c15 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-02-15 Jeff Law  <l...@redhat.com>
+
+       PR middle-end/79521
+       * ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling
+       ira_init_register_move_cost_if_necessary.
+
 2017-02-15  Martin Sebor  <mse...@redhat.com>
 
        PR middle-end/32003
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 1737430..9cf0119 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -1452,7 +1452,8 @@ scan_one_insn (rtx_insn *insn)
     {
       rtx x = XEXP (PATTERN (insn), 0);
       if (GET_CODE (x) == REG
-         && REGNO (x) >= FIRST_PSEUDO_REGISTER)
+         && REGNO (x) >= FIRST_PSEUDO_REGISTER
+         && have_regs_of_mode[GET_MODE (x)])
         ira_init_register_move_cost_if_necessary (GET_MODE (x));
       return insn;
     }

Reply via email to