(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
memchr-2.c
       1  /* PR tree-optimization/96670 - ICE on memchr with an empty initializer
       2     { dg-do compile }
       3     { dg-options "-O -Wall -fdump-tree-optimized" } */
       4  
       5  struct {
       6    int i, j;
       7  } const s = { };
       8  
       9  void memchr_success_unused (void)
      10  {
      11    int n = (char *)&s.j - (char *)&s;
      12    char *p = (char *)&s;
      13    __builtin_memchr (p, '\0', n);
      14  }
      15  
      16  void memchr_success_used (void)
      17  {
      18    int n = (char *)&s.j - (char *)&s;
      19    char *p = (char *)&s;
      20    if (&s != __builtin_memchr (p, '\0', n))
      21      __builtin_abort ();
      22  }
      23  
      24  void memchr_fail_unused (void)
      25  {
      26    int n = (char *)&s.j - (char *)&s;
      27    char *p = (char *)&s;
      28    __builtin_memchr (p, '\5', n);
      29  }
      30  
      31  void memchr_fail_used (void)
      32  {
      33    int n = (char *)&s.j - (char *)&s;
      34    char *p = (char *)&s;
      35    if (__builtin_memchr (p, '\5', n))
      36      __builtin_abort ();
      37  }
      38  
      39  /* { dg-prune-output "\\\[-Wunused-value" }
      40     { dg-final { scan-tree-dump-not "abort" "optimized" } }
      41     { dg-final { scan-tree-dump-not "memcmp \\(" "optimized" } } */