diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2019-02-08 19:01:10 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2019-02-08 19:01:10 +0000 |
commit | 82396b8cfb651c9d7ae108d33648ff5cb7b9bce0 (patch) | |
tree | bb50011d2aa6310db157168cf89875fe372226ef /gcc/lra-constraints.c | |
parent | b74ab8eb4275b704d46dc4db07f98a0913e04ca0 (diff) | |
download | gcc-82396b8cfb651c9d7ae108d33648ff5cb7b9bce0.zip gcc-82396b8cfb651c9d7ae108d33648ff5cb7b9bce0.tar.gz gcc-82396b8cfb651c9d7ae108d33648ff5cb7b9bce0.tar.bz2 |
re PR middle-end/88560 (armv8_2-fp16-move-1.c and related regressions after r266385)
2019-02-08 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/88560
* lra-constraints.c (process_alt_operands): Don't increase reject
for memory when offset memory is required.
From-SVN: r268705
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r-- | gcc/lra-constraints.c | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index 3b975cc..17ea2c5 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -2796,29 +2796,32 @@ process_alt_operands (int only_alternative) (GET_MODE (op), this_alternative, cl))))) losers++; - /* Input reloads can be inherited more often than output - reloads can be removed, so penalize output - reloads. */ - if (!REG_P (op) || curr_static_id->operand[nop].type != OP_IN) - { - if (lra_dump_file != NULL) - fprintf - (lra_dump_file, - " %d Non input pseudo reload: reject++\n", - nop); - reject++; - } - if (MEM_P (op) && offmemok) addr_losers++; - else if (curr_static_id->operand[nop].type == OP_INOUT) + else { - if (lra_dump_file != NULL) - fprintf - (lra_dump_file, - " %d Input/Output reload: reject+=%d\n", - nop, LRA_LOSER_COST_FACTOR); - reject += LRA_LOSER_COST_FACTOR; + /* Input reloads can be inherited more often than + output reloads can be removed, so penalize output + reloads. */ + if (!REG_P (op) || curr_static_id->operand[nop].type != OP_IN) + { + if (lra_dump_file != NULL) + fprintf + (lra_dump_file, + " %d Non input pseudo reload: reject++\n", + nop); + reject++; + } + + if (curr_static_id->operand[nop].type == OP_INOUT) + { + if (lra_dump_file != NULL) + fprintf + (lra_dump_file, + " %d Input/Output reload: reject+=%d\n", + nop, LRA_LOSER_COST_FACTOR); + reject += LRA_LOSER_COST_FACTOR; + } } } |