(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
Wstringop-overflow-86.c
       1  /* PR middle-end/101751 - attribute access none with void pointer expects
       2     nonzero size
       3     { dg-do compile }
       4     { dg-options "-Wall" } */
       5  
       6  __attribute__ ((access (none, 1))) void
       7  fvp_m1 (const void*);
       8  
       9  void nowarn_m1 (void)
      10  {
      11    /* Verify these don't trigger a warning for calls to a function
      12       declared with attribute access none.  */
      13    fvp_m1 ((void*)-1);         // { dg-bogus "-Wstringop-" }
      14    fvp_m1 ((void*)1);          // { dg-bogus "-Wstringop-" }
      15  }
      16  
      17  
      18  __attribute__ ((access (none, 1))) void
      19  fvp_none (void*);
      20  
      21  void nowarn_c_cp1 (void)
      22  {
      23    char c;
      24    fvp_none (&c);
      25    fvp_none (&c + 1);          // { dg-bogus "-Wstringop-" }
      26  }
      27  
      28  void nowarn_f_fp1 (void)
      29  {
      30    fvp_none ((char*)&nowarn_f_fp1);
      31    fvp_none ((char*)&nowarn_f_fp1 + 1);
      32  }
      33  
      34  void nowarn_sp1_sp_4 (void)
      35  {
      36    fvp_none ("" + 1);          // { dg-bogus "-Wstringop-" }
      37    fvp_none ("123" + 4);       // { dg-bogus "-Wstringop-" }
      38  }
      39  
      40  
      41  __attribute__ ((access (none, 1))) void
      42  wfvp_none (void*);            // { dg-message "in a call to function 'wfvp_none' declared with attribute 'access \\\(none, 1\\\)'" }
      43  
      44  void warn_cm1_p1 (void)
      45  {
      46    char c;
      47    /* With optimization both of the following are diagnosed by -Warray-bounds.
      48       The second also without optimization by -Wstringop-overread.  They
      49       should both be diagnosed by the same warning even without optimization. */
      50    wfvp_none (&c - 1);         // { dg-warning "" "pr??????" { xfail *-*-* } }
      51    wfvp_none (&c + 2);         // { dg-warning "" }
      52  }
      53  
      54  void warn_fp2 (void)
      55  {
      56    void *p = (char*)&warn_fp2 + sizeof warn_fp2;
      57    fvp_none (p);               // { dg-warning "" "pr??????" { xfail *-*-* } }
      58  }
      59  
      60  void warn_sp2 (void)
      61  {
      62    wfvp_none ("" + 2);         // { dg-warning "" }
      63  }