https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84831
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
diff -upbd of that for better readability.
--- gcc/stmt.c.jj 2018-01-03 10:19:55.150533956 +0100
+++ gcc/stmt.c 2018-03-12 13:25:03.790733765 +0100
@@ -247,7 +247,8 @@ parse_output_constraint (const char **co
}
/* Loop through the constraint string. */
- for (p = constraint + 1; *p; p += CONSTRAINT_LEN (*p, p))
+ for (p = constraint + 1; *p; )
+ {
switch (*p)
{
case '+':
@@ -304,6 +305,11 @@ parse_output_constraint (const char **co
break;
}
+ for (size_t len = CONSTRAINT_LEN (*p, p); len; len--, p++)
+ if (*p == '\0')
+ break;
+ }
+
return true;
}
Note, I was wrong about insufficient, your patch was sufficient, I was
initially also changing parse_input_constraint but it turned out to be
unnecessary.