aboutsummaryrefslogtreecommitdiff
path: root/gcc/regclass.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-08-28 17:44:21 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-08-28 17:44:21 -0700
commitc2cba7a96e04069011ae508e3027bbf128208040 (patch)
treed7a7f8b66cdb1d768634a359009e273bb3b645dd /gcc/regclass.c
parent881c6935bf565020e7955fede0b186232aa30bc7 (diff)
downloadgcc-c2cba7a96e04069011ae508e3027bbf128208040.zip
gcc-c2cba7a96e04069011ae508e3027bbf128208040.tar.gz
gcc-c2cba7a96e04069011ae508e3027bbf128208040.tar.bz2
local-alloc.c (requires_inout): Don't use reserved range for EXTRA_CONSTRAINTS...
* local-alloc.c (requires_inout): Don't use reserved range for EXTRA_CONSTRAINTS; use anything not matched by REG_CLASS_FROM_LETTER. * recog.c (asm_operand_ok): Likewise. (preprocess_constraints, constrain_operands): Likewise. * regclass.c (record_reg_classes): Likewise. * reload.c (find_reloads): Likewise. * reload1.c (maybe_fix_stack_asms): Likewise. (reload_cse_simplify_operands): Likewise. * stmt.c (expand_asm_operands): Likewise. * md.texi: Update constraints documentation. * tm.texi (EXTRA_CONSTRAINT): Update. From-SVN: r36023
Diffstat (limited to 'gcc/regclass.c')
-rw-r--r--gcc/regclass.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/gcc/regclass.c b/gcc/regclass.c
index 90c59b2..866f5b8 100644
--- a/gcc/regclass.c
+++ b/gcc/regclass.c
@@ -1561,17 +1561,6 @@ record_reg_classes (n_alts, n_ops, ops, modes,
win = 1;
break;
-#ifdef EXTRA_CONSTRAINT
- case 'Q':
- case 'R':
- case 'S':
- case 'T':
- case 'U':
- if (EXTRA_CONSTRAINT (op, c))
- win = 1;
- break;
-#endif
-
case 'g':
if (GET_CODE (op) == MEM
|| (CONSTANT_P (op)
@@ -1587,9 +1576,15 @@ record_reg_classes (n_alts, n_ops, ops, modes,
break;
default:
- classes[i]
- = reg_class_subunion[(int) classes[i]]
- [(int) REG_CLASS_FROM_LETTER (c)];
+ if (REG_CLASS_FROM_LETTER (c) != NO_REGS)
+ classes[i]
+ = reg_class_subunion[(int) classes[i]]
+ [(int) REG_CLASS_FROM_LETTER (c)];
+#ifdef EXTRA_CONSTRAINT
+ else if (EXTRA_CONSTRAINT (op, c))
+ win = 1;
+#endif
+ break;
}
constraints[i] = p;