1  /* PR tree-optimization/79649 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O3 -fdump-tree-optimized" } */
       4  /* { dg-final { scan-tree-dump-not "__builtin_memset" "optimized" } } */
       5  /* { dg-final { scan-tree-dump-not "__builtin_memcpy" "optimized" } } */
       6  /* { dg-final { scan-tree-dump-not "__builtin_memmove" "optimized" } } */
       7  
       8  typedef __SIZE_TYPE__ size_t;
       9  
      10  void
      11  f1 (unsigned char __seg_gs *s, size_t n)
      12  {
      13    for (size_t i = 0; i < n; ++i)
      14      s[i] = 0;
      15  }
      16  
      17  void
      18  f2 (unsigned char __seg_gs *__restrict d, unsigned char __seg_gs *__restrict s, size_t n)
      19  {
      20    for (size_t i = 0; i < n; ++i)
      21      d[i] = s[i];
      22  }
      23  
      24  void
      25  f3 (unsigned char __seg_gs *__restrict d, unsigned char *__restrict s, size_t n)
      26  {
      27    for (size_t i = 0; i < n; ++i)
      28      d[i] = s[i];
      29  }
      30  
      31  void
      32  f4 (unsigned char *__restrict d, unsigned char __seg_gs *__restrict s, size_t n)
      33  {
      34    for (size_t i = 0; i < n; ++i)
      35      d[i] = s[i];
      36  }
      37  
      38  void
      39  f5 (unsigned char __seg_gs *__restrict d, unsigned char __seg_fs *__restrict s, size_t n)
      40  {
      41    for (size_t i = 0; i < n; ++i)
      42      d[i] = s[i];
      43  }
      44  
      45  struct A { int a; char b[1024]; };
      46  extern struct A __seg_gs a;
      47  
      48  void
      49  f6 (size_t n)
      50  {
      51    for (size_t i = 0; i < n; ++i)
      52      a.b[i] = 0;
      53  }