builtins.c (fold_builtin_strlen): Remove TODO comment.
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Fri, 14 Sep 2018 20:36:19 +0000 (20:36 +0000)
committerBernd Edlinger <edlinger@gcc.gnu.org>
Fri, 14 Sep 2018 20:36:19 +0000 (20:36 +0000)
2018-09-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * builtins.c (fold_builtin_strlen): Remove TODO comment.

testsuite:
2018-09-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gcc.dg/warn-strlen-no-nul.c: Add some missing test cases.

From-SVN: r264334

gcc/ChangeLog
gcc/builtins.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/warn-strlen-no-nul.c

index b33b938cc8f80263b87d8915ef3f5123e519c17d..76619e9fc5041946d4c29545e4550bd050ea14bd 100644 (file)
@@ -1,3 +1,7 @@
+2018-09-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+       * builtins.c (fold_builtin_strlen): Remove TODO comment.
+
 2018-09-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
        revert:
index b2b7ca30b17d39162d9cb3796037e13ddd483bbd..3f39d10977d7ea1d4262ea684b05c93bba7a980b 100644 (file)
@@ -8462,7 +8462,7 @@ fold_builtin_strlen (location_t loc, tree type, tree arg)
        return fold_convert_loc (loc, type, len);
 
       if (!nonstr)
-       c_strlen (arg, 1, &nonstr); /* TODO: add test coverage here.  */
+       c_strlen (arg, 1, &nonstr);
 
       if (nonstr)
        {
index 36867ba0e500cd5663b7ef2f16e0f572cef86ca1..43ce2d964faf2b99b5b9ffea1ef92acd06fa3458 100644 (file)
@@ -1,3 +1,7 @@
+2018-09-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+       * gcc.dg/warn-strlen-no-nul.c: Add some missing test cases.
+
 2018-09-14  Martin Sebor  <msebor@redhat.com>
 
        * gcc.dg/warn-stpcpy-no-nul.c: New test.
index d2bc5257d535be871bdd3dd681d39ab7034ea8c6..997dfc3540f2e30289f43cd0e48bead4cbc1ca1c 100644 (file)
@@ -9,6 +9,7 @@ const char a[5] = "12345";   /* { dg-message "declared here" } */
 
 int v0 = 0;
 int v1 = 1;
+volatile int v2;
 
 void sink (int, ...);
 
@@ -117,10 +118,8 @@ T (v0 ? b[i0] : &b[i3][i0] + i1);    /* { dg-warning "nul" }  */
 T (v0 ? b[i0] : &b[i3][i0] + i1);    /* { dg-warning "nul" }  */
 T (v0 ? b[i1] : &b[i3][i1] + v0);    /* { dg-warning "nul" }  */
 
-/* It's possible to detect the missing nul in the following two
-   expressions but GCC doesn't do it yet.  */
-T (v0 ? &b[3][1] + v0 : b[2]);    /* { dg-warning "nul" "bug" }  */
-T (v0 ? &b[3][v0] : &b[3][v1]);   /* { dg-warning "nul" "bug" }  */
+T (v0 ? &b[3][1] + v0 : b[2]);    /* { dg-warning "nul" }  */
+T (v0 ? &b[3][v0] : &b[3][v1]);   /* { dg-warning "nul" }  */
 
 
 struct A { char a[5], b[5]; };
@@ -299,3 +298,7 @@ T (v0 ? &ba[3].a[1].a[1] :  ba[0].a[0].a);      /* { dg-warning "nul" }  */
 
 T (v0 ? ba[0].a[0].a : ba[0].a[1].b);
 T (v0 ? ba[0].a[1].b : ba[0].a[0].a);
+
+T (v2 ? b[1] : &b[3][1] + v2);    /* { dg-warning "nul" }  */
+T (v2 ? &b[3][1] + v2 : b[2]);    /* { dg-warning "nul" }  */
+T (v2 ? &b[3][v2] : &b[2][v2]);   /* { dg-warning "nul" }  */