From 0d2a576a1417b8d4526d369fef1d87cee2c49f99 Mon Sep 17 00:00:00 2001 From: Vladimir Makarov Date: Mon, 1 Apr 2019 16:18:30 +0000 Subject: [PATCH] re PR rtl-optimization/89865 (FAIL: gcc.target/i386/pr49095.c scan-assembler-times \\\\), % 45) 2019-04-01 Vladimir Makarov PR rtl-optimization/89865 * ira-costs.c (process_bb_node_for_hard_reg_moves): Skip hard register if it is a part of small class. From-SVN: r270060 --- gcc/ChangeLog | 6 ++++++ gcc/ira-costs.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f55f595f3f..5016bd26c21 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-04-01 Vladimir Makarov + + PR rtl-optimization/89865 + * ira-costs.c (process_bb_node_for_hard_reg_moves): Skip hard + register if it is a part of small class. + 2019-04-01 Andrey Belevantsev PR rtl-optimization/87273 diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index a17dae3302c..c7feaba3718 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -2107,6 +2107,13 @@ process_bb_node_for_hard_reg_moves (ira_loop_tree_node_t loop_tree_node) } else continue; + if (reg_class_size[(int) REGNO_REG_CLASS (hard_regno)] + == (ira_reg_class_max_nregs + [REGNO_REG_CLASS (hard_regno)][(int) ALLOCNO_MODE(a)])) + /* If the class can provide only one hard reg to the allocno, + we processed the insn record_operand_costs already and we + actually updated the hard reg cost there. */ + continue; rclass = ALLOCNO_CLASS (a); if (! TEST_HARD_REG_BIT (reg_class_contents[rclass], hard_regno)) continue; -- 2.30.2