aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2019-02-08 19:01:10 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2019-02-08 19:01:10 +0000
commit82396b8cfb651c9d7ae108d33648ff5cb7b9bce0 (patch)
treebb50011d2aa6310db157168cf89875fe372226ef /gcc/lra-constraints.c
parentb74ab8eb4275b704d46dc4db07f98a0913e04ca0 (diff)
downloadgcc-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.c43
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;
+ }
}
}