aboutsummaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2014-06-11 16:58:51 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2014-06-11 16:58:51 +0000
commitd9c35eee65f97e368a89148572ca8a43d0eb071c (patch)
tree3d0591f6b1eb26e1dda4162bf800619545af750e /gcc/recog.c
parent3c4c42e826b61d7b99e6be965dd1187784d2228c (diff)
downloadgcc-d9c35eee65f97e368a89148572ca8a43d0eb071c.zip
gcc-d9c35eee65f97e368a89148572ca8a43d0eb071c.tar.gz
gcc-d9c35eee65f97e368a89148572ca8a43d0eb071c.tar.bz2
genpreds.c (const_int_start, [...]): New variables.
gcc/ * genpreds.c (const_int_start, const_int_end): New variables. (choose_enum_order): Output CONST_INT constraints before memory constraints. (write_tm_preds_h): Always define insn_const_int_ok_for_constraint. Add CT_CONST_INT. * ira-costs.c (record_reg_classes): Handle CT_CONST_INT. * ira.c (ira_setup_alts): Likewise. * lra-constraints.c (process_alt_operands): Likewise. * recog.c (asm_operand_ok, preprocess_constraints): Likewise. * reload.c (find_reloads): Likewise. From-SVN: r211473
Diffstat (limited to 'gcc/recog.c')
-rw-r--r--gcc/recog.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index 9d9fa77..2b62167 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -1920,6 +1920,13 @@ asm_operand_ok (rtx op, const char *constraint, const char **constraints)
goto reg;
break;
+ case CT_CONST_INT:
+ if (!result
+ && CONST_INT_P (op)
+ && insn_const_int_ok_for_constraint (INTVAL (op), cn))
+ result = 1;
+ break;
+
case CT_MEMORY:
/* Every memory operand can be reloaded to fit. */
result = result || memory_operand (op, VOIDmode);
@@ -2443,6 +2450,9 @@ preprocess_constraints (int n_operands, int n_alternatives,
op_alt[i].cl = reg_class_subunion[op_alt[i].cl][cl];
break;
+ case CT_CONST_INT:
+ break;
+
case CT_MEMORY:
op_alt[i].memory_ok = 1;
break;