summaryrefslogtreecommitdiff
path: root/gcc/genoutput.c
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2014-05-28 19:49:18 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2014-05-28 19:49:18 +0000
commit205c3b0ab6423dca05db534c7b7099f39eaee409 (patch)
tree18194c4ebc03529b7414e609111af0e8e670d580 /gcc/genoutput.c
parent75b115f41512fbbab79191059ba6a21bbd98a7c9 (diff)
downloadgcc-205c3b0ab6423dca05db534c7b7099f39eaee409.tar.gz
gcc/
* doc/md.texi: Document that the % constraint character must be at the beginning of the string. * genoutput.c (validate_insn_alternatives): Check that '=', '+' and '%' only appear at the beginning of a constraint. * ira.c (commutative_constraint_p): Delete. (ira_get_dup_out_num): Expect the '%' commutativity marker to be at the start of the string. * config/alpha/alpha.md (*movmemdi_1, *clrmemdi_1): Remove duplicate '='s. * config/arm/neon.md (bicdi3_neon): Likewise. * config/iq2000/iq2000.md (addsi3_internal, subsi3_internal, sgt_si) (slt_si, sltu_si): Likewise. * config/vax/vax.md (sbcdi3): Likewise. * config/h8300/h8300.md (*cmpstz): Remove duplicate '+'. * config/arc/arc.md (mulsi_600, mulsidi_600, umulsidi_600) (mul64): Move '%' to beginning of constraint. * config/arm/arm.md (*xordi3_insn): Likewise. * config/nds32/nds32.md (add<mode>3, mulsi3, andsi3, iorsi3) (xorsi3): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211031 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/genoutput.c')
-rw-r--r--gcc/genoutput.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/genoutput.c b/gcc/genoutput.c
index 26fb1acfde7..b3ce120f33a 100644
--- a/gcc/genoutput.c
+++ b/gcc/genoutput.c
@@ -781,6 +781,11 @@ validate_insn_alternatives (struct data *d)
for (p = d->operand[start].constraint; (c = *p); p += len)
{
+ if ((c == '%' || c == '=' || c == '+')
+ && p != d->operand[start].constraint)
+ error_with_line (d->lineno,
+ "character '%c' can only be used at the"
+ " beginning of a constraint string", c);
#ifdef USE_MD_CONSTRAINTS
if (ISSPACE (c) || strchr (indep_constraints, c))
len = 1;