(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
builtin-memcpy-2.c
       1  /* PR tree-optimization/88800 - Spurious -Werror=array-bounds for non-taken
       2     branch
       3     Verify that out-of-bounds memcpy calls are not folded even when
       4     warnings are disabled.
       5     { dg-do compile }
       6     { dg-options "-O2 -w -fdump-tree-optimized" } */
       7  
       8  extern void* memcpy (void*, const void*, __SIZE_TYPE__);
       9  
      10  char a1[1], a2[2], a4[4], a8[8], a16[16], a32[32];
      11  
      12  void f1 (const void *p)
      13  {
      14    memcpy (a1, p, sizeof a1 * 2);
      15  }
      16  
      17  void f2 (const void *p)
      18  {
      19    memcpy (a2, p, sizeof a2 * 2);
      20  }
      21  
      22  void f4 (const void *p)
      23  {
      24    memcpy (a4, p, sizeof a4 * 2);
      25  }
      26  
      27  void f8 (const void *p)
      28  {
      29    memcpy (a8, p, sizeof a8 * 2);
      30  }
      31  
      32  void f16 (const void *p)
      33  {
      34    memcpy (a16, p, sizeof a16 * 2);
      35  }
      36  
      37  void f32 (const void *p)
      38  {
      39    memcpy (a32, p, sizeof a32 * 2);
      40  }
      41  
      42  /* { dg-final { scan-tree-dump-times "memcpy" 6 "optimized" } } */