(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
strlenopt-26.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -fdump-tree-strlen" } */
       3  
       4  #include "strlenopt.h"
       5  
       6  __attribute__((noinline, noclone)) size_t
       7  fn1 (char *p, const char *r)
       8  {
       9    size_t len1 = strlen (r);
      10    char *q = strchr (p, '\0');
      11    *q = '\0';
      12    return len1 - strlen (r); // This strlen should be optimized into len1.
      13  }
      14  
      15  int
      16  main (void)
      17  {
      18    char p[] = "foobar";
      19    const char *volatile q = "xyzzy";
      20    return fn1 (p, q);
      21  }
      22  
      23  /* { dg-final { scan-tree-dump-times "strlen \\(" 2 "strlen1" } } */
      24  /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen1" } } */