diff --git a/gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c
b/gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c
index 70f6a432b97..fde2fa0e189 100644
--- a/gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c
+++ b/gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c
@@ -147,14 +147,14 @@ T (v0 ? b[3] : "", bsz);
the strnlen calls are safe because the reads are bounded by
the length of the constant arguments. Most of the calls are
not diagnosed anymore as a result of the fix for PR 103215. */
-T (v0 ? "" : b[0], bsz + 1); /* { dg-warning "bound 6 exceeds source size
5" } */
+T (v0 ? "" : b[0], bsz + 1); /* { dg-warning "bound 6 exceeds source size 5"
"pr86937" { xfail *-*-* } } */
So if I read the comment, I think the dg-warning can just be removed.
T (v0 ? "" : b[1], bsz + 1);
T (v0 ? "" : b[2], bsz + 1);
-T (v0 ? "" : b[3], bsz + 1);
-T (v0 ? b[0] : "", bsz + 1); /* { dg-warning "bound 6 exceeds source size
5" } */
Remove this warning rather than changing xfailing.
+T (v0 ? "" : b[3], bsz + 1); /* { dg-warning "unterminated" } */
This new warning is correct as b[3] is "54321" in a array size of 5.
+T (v0 ? b[0] : "", bsz + 1); /* { dg-warning "bound 6 exceeds source size 5"
"pr86937" { xfail *-*-* } } */
T (v0 ? b[1] : "", bsz + 1);
T (v0 ? b[2] : "", bsz + 1);
-T (v0 ? b[3] : "", bsz + 1);
+T (v0 ? b[3] : "", bsz + 1); /* { dg-warning "unterminated" } */
Likewise.
T (v0 ? "" : b[i0], bsz);
T (v0 ? "" : b[i1], bsz);
@@ -168,11 +168,11 @@ T (v0 ? b[i3] : "", bsz);
T (v0 ? "" : b[i0], bsz + 1);
T (v0 ? "" : b[i1], bsz + 1);
T (v0 ? "" : b[i2], bsz + 1);
-T (v0 ? "" : b[i3], bsz + 1);
+T (v0 ? "" : b[i3], bsz + 1); /* { dg-warning "unterminated" } */
Likewise.
T (v0 ? b[i0] : "", bsz + 1);
T (v0 ? b[i1] : "", bsz + 1);
T (v0 ? b[i2] : "", bsz + 1);
-T (v0 ? b[i3] : "", bsz + 1);
+T (v0 ? b[i3] : "", bsz + 1); /* { dg-warning "unterminated" } */
Likewise.
T (v0 ? "1234" : b[3], bsz);
T (v0 ? "1234" : b[i3], bsz);
@@ -184,17 +184,18 @@ T (v0 ? b[0] : b[2], bsz);
T (v0 ? b[2] : b[3], bsz);
T (v0 ? b[3] : b[2], bsz);
-T (v0 ? "1234" : b[3], bsz + 1);
-T (v0 ? "1234" : b[i3], bsz + 1);
-T (v0 ? b[3] : "1234", bsz + 1);
-T (v0 ? b[i3] : "1234", bsz + 1);
+/* New warnings being thrown after PR86937. */
+T (v0 ? "1234" : b[3], bsz + 1); /* { dg-warning "unterminated" } */
+T (v0 ? "1234" : b[i3], bsz + 1); /* { dg-warning "unterminated" } */
+T (v0 ? b[3] : "1234", bsz + 1); /* { dg-warning "unterminated" } */
+T (v0 ? b[i3] : "1234", bsz + 1); /* { dg-warning "unterminated" } */
These are all valid warnings.
/* That the following are not diagnosed is a bug/limitation resulting from
the fix for PR 103215. */
T (v0 ? a : b[3], bsz + 1); /* { dg-warning "bound 6 exceeds source size 5"
"pr103215" { xfail *-*-* } } */
T (v0 ? b[0] : b[2], bsz + 1); /* { dg-warning "bound 6 exceeds source size 5"
"pr103215" { xfail *-*-* } } */
-T (v0 ? b[2] : b[3], bsz + 1); /* { dg-warning "bound 6 exceeds source size 5"
"pr103215" { xfail *-*-* } } */
-T (v0 ? b[3] : b[2], bsz + 1); /* { dg-warning "bound 6 exceeds source size 5"
"pr103215" { xfail *-*-* } } */
+T (v0 ? b[2] : b[3], bsz + 1); /* { dg-warning "unterminated" } */
+T (v0 ? b[3] : b[2], bsz + 1); /* { dg-warning "unterminated" } */
Yes the same new valid warning b[3] is unterminated.
So ok with the removal of the newly xfailed dg-warning since those
warnings won't show up ever since the values are all calculated at
compile time.
Thanks,
Andrea
struct A { char a[5], b[5]; };
--
2.43.0