Fix problem noticed by Dale Johannesen on the gcc list.
* recog.c (asm_operand_ok): Add missing break after case 'X'. Change if statements to else if statements in default case. (extract_constrain_insn_cached): Fix misspelling of constrain_operands in comment. (constrain_operands_cached): Likewise. (constrain_operands): Change if statements to else if statements in default case. * reload.c (find_reloads): Likewise. From-SVN: r73074
This commit is contained in:
parent
a126dc3a79
commit
3b6c3bb05d
@ -1,3 +1,14 @@
|
||||
2003-10-29 James E Wilson <wilson@specifixinc.com>
|
||||
|
||||
* recog.c (asm_operand_ok): Add missing break after case 'X'.
|
||||
Change if statements to else if statements in default case.
|
||||
(extract_constrain_insn_cached): Fix misspelling of constrain_operands
|
||||
in comment.
|
||||
(constrain_operands_cached): Likewise.
|
||||
(constrain_operands): Change if statements to else if statements in
|
||||
default case.
|
||||
* reload.c (find_reloads): Likewise.
|
||||
|
||||
2003-10-29 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/m68k/m68k.c (notice_update_cc): Clear cc status for
|
||||
|
62
gcc/recog.c
62
gcc/recog.c
@ -1746,6 +1746,7 @@ asm_operand_ok (rtx op, const char *constraint)
|
||||
|
||||
case 'X':
|
||||
result = 1;
|
||||
break;
|
||||
|
||||
case 'g':
|
||||
if (general_operand (op, VOIDmode))
|
||||
@ -1764,20 +1765,16 @@ asm_operand_ok (rtx op, const char *constraint)
|
||||
result = 1;
|
||||
}
|
||||
#ifdef EXTRA_CONSTRAINT_STR
|
||||
if (EXTRA_CONSTRAINT_STR (op, c, constraint))
|
||||
else if (EXTRA_CONSTRAINT_STR (op, c, constraint))
|
||||
result = 1;
|
||||
else if (EXTRA_MEMORY_CONSTRAINT (c, constraint)
|
||||
/* Every memory operand can be reloaded to fit. */
|
||||
&& memory_operand (op, VOIDmode))
|
||||
result = 1;
|
||||
else if (EXTRA_ADDRESS_CONSTRAINT (c, constraint)
|
||||
/* Every address operand can be reloaded to fit. */
|
||||
&& address_operand (op, VOIDmode))
|
||||
result = 1;
|
||||
if (EXTRA_MEMORY_CONSTRAINT (c, constraint))
|
||||
{
|
||||
/* Every memory operand can be reloaded to fit. */
|
||||
if (memory_operand (op, VOIDmode))
|
||||
result = 1;
|
||||
}
|
||||
if (EXTRA_ADDRESS_CONSTRAINT (c, constraint))
|
||||
{
|
||||
/* Every address operand can be reloaded to fit. */
|
||||
if (address_operand (op, VOIDmode))
|
||||
result = 1;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
@ -1970,7 +1967,7 @@ extract_insn_cached (rtx insn)
|
||||
extract_insn (insn);
|
||||
recog_data.insn = insn;
|
||||
}
|
||||
/* Do cached extract_insn, constrain_operand and complain about failures.
|
||||
/* Do cached extract_insn, constrain_operands and complain about failures.
|
||||
Used by insn_attrtab. */
|
||||
void
|
||||
extract_constrain_insn_cached (rtx insn)
|
||||
@ -1980,7 +1977,7 @@ extract_constrain_insn_cached (rtx insn)
|
||||
&& !constrain_operands (reload_completed))
|
||||
fatal_insn_not_found (insn);
|
||||
}
|
||||
/* Do cached constrain_operand and complain about failures. */
|
||||
/* Do cached constrain_operands and complain about failures. */
|
||||
int
|
||||
constrain_operands_cached (int strict)
|
||||
{
|
||||
@ -2535,27 +2532,20 @@ constrain_operands (int strict)
|
||||
else if (EXTRA_CONSTRAINT_STR (op, c, p))
|
||||
win = 1;
|
||||
|
||||
if (EXTRA_MEMORY_CONSTRAINT (c, p))
|
||||
{
|
||||
/* Every memory operand can be reloaded to fit. */
|
||||
if (strict < 0 && GET_CODE (op) == MEM)
|
||||
win = 1;
|
||||
|
||||
/* Before reload, accept what reload can turn into mem. */
|
||||
if (strict < 0 && CONSTANT_P (op))
|
||||
win = 1;
|
||||
|
||||
/* During reload, accept a pseudo */
|
||||
if (reload_in_progress && GET_CODE (op) == REG
|
||||
&& REGNO (op) >= FIRST_PSEUDO_REGISTER)
|
||||
win = 1;
|
||||
}
|
||||
if (EXTRA_ADDRESS_CONSTRAINT (c, p))
|
||||
{
|
||||
/* Every address operand can be reloaded to fit. */
|
||||
if (strict < 0)
|
||||
win = 1;
|
||||
}
|
||||
else if (EXTRA_MEMORY_CONSTRAINT (c, p)
|
||||
/* Every memory operand can be reloaded to fit. */
|
||||
&& ((strict < 0 && GET_CODE (op) == MEM)
|
||||
/* Before reload, accept what reload can turn
|
||||
into mem. */
|
||||
|| (strict < 0 && CONSTANT_P (op))
|
||||
/* During reload, accept a pseudo */
|
||||
|| (reload_in_progress && GET_CODE (op) == REG
|
||||
&& REGNO (op) >= FIRST_PSEUDO_REGISTER)))
|
||||
win = 1;
|
||||
else if (EXTRA_ADDRESS_CONSTRAINT (c, p)
|
||||
/* Every address operand can be reloaded to fit. */
|
||||
&& strict < 0)
|
||||
win = 1;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
15
gcc/reload.c
15
gcc/reload.c
@ -3264,17 +3264,18 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
|
||||
win = 1;
|
||||
/* If the address was already reloaded,
|
||||
we win as well. */
|
||||
if (GET_CODE (operand) == MEM && address_reloaded[i])
|
||||
else if (GET_CODE (operand) == MEM
|
||||
&& address_reloaded[i])
|
||||
win = 1;
|
||||
/* Likewise if the address will be reloaded because
|
||||
reg_equiv_address is nonzero. For reg_equiv_mem
|
||||
we have to check. */
|
||||
if (GET_CODE (operand) == REG
|
||||
&& REGNO (operand) >= FIRST_PSEUDO_REGISTER
|
||||
&& reg_renumber[REGNO (operand)] < 0
|
||||
&& ((reg_equiv_mem[REGNO (operand)] != 0
|
||||
&& EXTRA_CONSTRAINT_STR (reg_equiv_mem[REGNO (operand)], c, p))
|
||||
|| (reg_equiv_address[REGNO (operand)] != 0)))
|
||||
else if (GET_CODE (operand) == REG
|
||||
&& REGNO (operand) >= FIRST_PSEUDO_REGISTER
|
||||
&& reg_renumber[REGNO (operand)] < 0
|
||||
&& ((reg_equiv_mem[REGNO (operand)] != 0
|
||||
&& EXTRA_CONSTRAINT_STR (reg_equiv_mem[REGNO (operand)], c, p))
|
||||
|| (reg_equiv_address[REGNO (operand)] != 0)))
|
||||
win = 1;
|
||||
|
||||
/* If we didn't already win, we can reload
|
||||
|
Loading…
x
Reference in New Issue
Block a user