re PR tree-optimization/84228 (Bogus -Wstringop-truncation warning with -g)
authorMarek Polacek <polacek@redhat.com>
Tue, 6 Feb 2018 13:25:54 +0000 (13:25 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Tue, 6 Feb 2018 13:25:54 +0000 (13:25 +0000)
PR tree-optimization/84228
* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.

* c-c++-common/Wstringop-truncation-3.c: New test.

From-SVN: r257411

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/Wstringop-truncation-3.c [new file with mode: 0644]
gcc/tree-ssa-strlen.c

index b52060946e0c105222ef0dca203393bf4a30d89f..c4d8c959ff53415cafafd775ad07c016cb1131bb 100644 (file)
@@ -1,3 +1,8 @@
+2018-02-06  Marek Polacek  <polacek@redhat.com>
+
+       PR tree-optimization/84228
+       * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
+
 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
 
        PR target/82641
index bdec47bb9612e7e4d2781f07f21d9558986578b7..e8b123dbb37486f5697c23054c584ae4509e80e1 100644 (file)
@@ -1,3 +1,8 @@
+2018-02-06  Marek Polacek  <polacek@redhat.com>
+
+       PR tree-optimization/84228
+       * c-c++-common/Wstringop-truncation-3.c: New test.
+
 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
 
        PR target/82641
diff --git a/gcc/testsuite/c-c++-common/Wstringop-truncation-3.c b/gcc/testsuite/c-c++-common/Wstringop-truncation-3.c
new file mode 100644 (file)
index 0000000..ba6b7de
--- /dev/null
@@ -0,0 +1,22 @@
+/* PR tree-optimization/84228 */
+/* { dg-do compile } */
+/* { dg-options "-Wstringop-truncation -O2 -g" } */
+
+char *strncpy (char *, const char *, __SIZE_TYPE__);
+struct S
+{
+  char arr[64];
+};
+
+int
+foo (struct S *p1, const char *a)
+{
+  int b = 5, c = 6, d = 7;
+  if (a)
+    goto err;
+  strncpy (p1->arr, a, sizeof p1->arr); /* { dg-bogus "specified bound" } */
+  b = 8; c = 9; d = 10;
+  p1->arr[3] = '\0';
+err:
+  return 0;
+}
index c3cf432a9214089a2f03abbb73aa5e3bf63b74df..f0f6535017b1758a516f60ce4d4b3f8ad68708c6 100644 (file)
@@ -1849,7 +1849,7 @@ maybe_diag_stxncpy_trunc (gimple_stmt_iterator gsi, tree src, tree cnt)
 
   /* Look for dst[i] = '\0'; after the stxncpy() call and if found
      avoid the truncation warning.  */
-  gsi_next (&gsi);
+  gsi_next_nondebug (&gsi);
   gimple *next_stmt = gsi_stmt (gsi);
 
   if (!gsi_end_p (gsi) && is_gimple_assign (next_stmt))