diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/recog.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr84742-1.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr84742-2.c | 10 |
5 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a467d7b..78b8fc4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-03-08 Jakub Jelinek <jakub@redhat.com> + + PR inline-asm/84742 + * recog.c (asm_operand_ok): Return 0 if multi-character constraint + has ',' character inside of it. + 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com> PR target/84748 diff --git a/gcc/recog.c b/gcc/recog.c index af6a6b0..0e26c93 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -1825,7 +1825,7 @@ asm_operand_ok (rtx op, const char *constraint, const char **constraints) len = CONSTRAINT_LEN (c, constraint); do constraint++; - while (--len && *constraint); + while (--len && *constraint && *constraint != ','); if (len) return 0; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8b6d0e5..32740bf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-03-08 Jakub Jelinek <jakub@redhat.com> + + PR inline-asm/84742 + * gcc.target/i386/pr84742-1.c: New test. + * gcc.target/i386/pr84742-2.c: New test. + 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com> PR target/84748 diff --git a/gcc/testsuite/gcc.target/i386/pr84742-1.c b/gcc/testsuite/gcc.target/i386/pr84742-1.c new file mode 100644 index 0000000..07b822f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr84742-1.c @@ -0,0 +1,10 @@ +/* PR inline-asm/84742 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +void +foo () +{ + char b = 1; + asm volatile ("" : "+T,Y" (b)); /* { dg-error "impossible constraint in 'asm'" } */ +} diff --git a/gcc/testsuite/gcc.target/i386/pr84742-2.c b/gcc/testsuite/gcc.target/i386/pr84742-2.c new file mode 100644 index 0000000..7ac9cea --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr84742-2.c @@ -0,0 +1,10 @@ +/* PR inline-asm/84742 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +void +foo () +{ + char b = 1; + asm volatile ("" : "+gT,m" (b)); /* { dg-error "impossible constraint in 'asm'" } */ +} |