PR target/66785
* regrename.c (record_operand_use): Keep track of failed operands
and stop appending if we see any.
* regrename.h (struct operand_rr_info): Add a failed field and shrink
n_chains to short.
From-SVN: r230499
+2015-11-17 Bernd Schmidt <bschmidt@redhat.com>
+
+ PR target/66785
+ * regrename.c (record_operand_use): Keep track of failed operands
+ and stop appending if we see any.
+ * regrename.h (struct operand_rr_info): Add a failed field and shrink
+ n_chains to short.
+
2015-11-17 Sandra Loosemore <sandra@codesourcery.com>
PR 48568
static void
record_operand_use (struct du_head *head, struct du_chain *this_du)
{
- if (cur_operand == NULL)
+ if (cur_operand == NULL || cur_operand->failed)
return;
+ if (head->cannot_rename)
+ {
+ cur_operand->failed = true;
+ return;
+ }
gcc_assert (cur_operand->n_chains < MAX_REGS_PER_ADDRESS);
cur_operand->heads[cur_operand->n_chains] = head;
cur_operand->chains[cur_operand->n_chains++] = this_du;
struct operand_rr_info
{
/* The number of chains recorded for this operand. */
- int n_chains;
+ short n_chains;
+ bool failed;
/* Holds either the chain for the operand itself, or for the registers in
a memory operand. */
struct du_chain *chains[MAX_REGS_PER_ADDRESS];