https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87363

            Bug ID: 87363
           Summary: Duplicate and bogus -Wstringop-overflow warning
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bernd.edlinger at hotmail dot de
  Target Milestone: ---

as pointed out here: https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00975.html

the following test program emits a duplicate warning, which is bogus, as
u.z is used, and not u.x:

$ cat gcc/testsuite/gcc.c-torture/execute/pr87053.c 
/* PR middle-end/87053 */

const union
{ struct {
    char x[4];
    char y[4];
  };
  struct {
    char z[8];
  };
} u = {{"1234", "567"}};

int main ()
{
  if (__builtin_strlen (u.z) != 7)
    __builtin_abort ();
}

$ gcc gcc/testsuite/gcc.c-torture/execute/pr87053.c
gcc/testsuite/gcc.c-torture/execute/pr87053.c: In function ‘main’:
gcc/testsuite/gcc.c-torture/execute/pr87053.c:15:26: warning: ‘strlen’ argument
missing terminating nul [-Wstringop-overflow=]
15 |   if (__builtin_strlen (u.z) != 7)
   |                         ~^~
gcc/testsuite/gcc.c-torture/execute/pr87053.c:11:3: note: referenced argument
declared here
11 | } u = {{"1234", "567"}};
   |   ^
gcc/testsuite/gcc.c-torture/execute/pr87053.c:15:26: warning: ‘strlen’ argument
missing terminating nul [-Wstringop-overflow=]
15 |   if (__builtin_strlen (u.z) != 7)
   |                         ~^~
gcc/testsuite/gcc.c-torture/execute/pr87053.c:11:3: note: referenced argument
declared here
11 | } u = {{"1234", "567"}};
   |   ^

Reply via email to