(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
strlenopt-60.c
       1  /* PR tree-optimization/89500 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -fdump-tree-optimized" } */
       4  /* { dg-final { scan-tree-dump-times "return 10;" 2 "optimized" } } */
       5  /* { dg-final { scan-tree-dump-times "return 5;" 1 "optimized" } } */
       6  /* { dg-final { scan-tree-dump-times "return 0;" 2 "optimized" } } */
       7  /* { dg-final { scan-tree-dump-times "strnlen " 1 "optimized" } } */
       8  
       9  #include "strlenopt.h"
      10  
      11  void foo (char *);
      12  
      13  size_t
      14  f1 (void)
      15  {
      16    char a[10] = "0123456789";
      17    return strnlen (a, 10);
      18  }
      19  
      20  size_t
      21  f2 (void)
      22  {
      23    char a[10] = "0123456789";
      24    return strnlen (a, 5);
      25  }
      26  
      27  size_t
      28  f3 (void)
      29  {
      30    char a[10] = "0123456789";
      31    return strnlen (a, 0);
      32  }
      33  
      34  size_t
      35  f4 (void)
      36  {
      37    char a[20];
      38    foo (a);
      39    memcpy (a, "0123456789", 10);
      40    return strnlen (a, 10);
      41  }
      42  
      43  size_t
      44  f5 (void)
      45  {
      46    char a[20];
      47    foo (a);
      48    memcpy (a, "0123456789", 10);
      49    return strnlen (a, 14);
      50  }
      51  
      52  size_t
      53  f6 (void)
      54  {
      55    char a[20];
      56    foo (a);
      57    return strnlen (a, 0);
      58  }