aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/recog.c2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr84742-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr84742-2.c10
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'" } */
+}