ira-lives.c (single_reg_class): Add missing break.

gcc/
	* ira-lives.c (single_reg_class): Add missing break.  Explicitly
	return NO_REGS for extra address and memory constraints.  Handle
	operands that match (or are equivalent to something that matches)
	extra constant constraints.  Ignore other non-register operands.

From-SVN: r211300
This commit is contained in:
Richard Sandiford 2014-06-06 06:59:22 +00:00 committed by Richard Sandiford
parent 3def9a9769
commit b58923e2a9
2 changed files with 22 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2014-06-06 Richard Sandiford <rdsandiford@googlemail.com>
* ira-lives.c (single_reg_class): Add missing break. Explicitly
return NO_REGS for extra address and memory constraints. Handle
operands that match (or are equivalent to something that matches)
extra constant constraints. Ignore other non-register operands.
2014-06-06 Alan Modra <amodra@gmail.com>
PR target/61300

View File

@ -839,7 +839,8 @@ single_reg_class (const char *constraints, rtx op, rtx equiv_const)
&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (equiv_const,
c, constraints)))
return NO_REGS;
/* ??? what about memory */
break;
case 'r':
case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
case 'h': case 'j': case 'k': case 'l':
@ -848,9 +849,22 @@ single_reg_class (const char *constraints, rtx op, rtx equiv_const)
case 'A': case 'B': case 'C': case 'D':
case 'Q': case 'R': case 'S': case 'T': case 'U':
case 'W': case 'Y': case 'Z':
#ifdef EXTRA_CONSTRAINT_STR
/* ??? Is this the best way to handle memory constraints? */
if (EXTRA_MEMORY_CONSTRAINT (c, constraints)
|| EXTRA_ADDRESS_CONSTRAINT (c, constraints))
return NO_REGS;
if (EXTRA_CONSTRAINT_STR (op, c, constraints)
|| (equiv_const != NULL_RTX
&& CONSTANT_P (equiv_const)
&& EXTRA_CONSTRAINT_STR (equiv_const, c, constraints)))
return NO_REGS;
#endif
next_cl = (c == 'r'
? GENERAL_REGS
: REG_CLASS_FROM_CONSTRAINT (c, constraints));
if (next_cl == NO_REGS)
break;
if (cl == NO_REGS
? ira_class_singleton[next_cl][GET_MODE (op)] < 0
: (ira_class_singleton[cl][GET_MODE (op)]