(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr94015.c
       1  /* PR tree-optimization/94015 */
       2  /* { dg-do run } */
       3  /* { dg-options "-O2" } */
       4  
       5  char buf[10] = "AAAAAAAAA";
       6  
       7  __attribute__((noipa)) char *
       8  alloc (void)
       9  {
      10    return buf;
      11  }
      12  
      13  __attribute__((noipa)) void
      14  f1 (void)
      15  {
      16    char *s = alloc ();
      17    *(char **)s = "1234567";
      18    s[7] = '\0';
      19  }
      20  
      21  __attribute__((noipa)) void
      22  f2 (void)
      23  {
      24    char *s = alloc ();
      25    *(char **)s = "123456";
      26    s[6] = '\0';
      27  }
      28  
      29  __attribute__((noipa)) void
      30  f3 (void)
      31  {
      32    char *s = alloc ();
      33    *(char **)s = "12345";
      34    s[5] = '\0';
      35  }
      36  
      37  __attribute__((noipa)) void
      38  f4 (void)
      39  {
      40    char *s = alloc ();
      41    *(char **)s = "1234";
      42    s[4] = '\0';
      43  }
      44  
      45  __attribute__((noipa)) void
      46  f5 (void)
      47  {
      48    char *s = alloc ();
      49    *(char **)s = "123";
      50    s[3] = '\0';
      51  }
      52  
      53  __attribute__((noipa)) void
      54  f6 (void)
      55  {
      56    char *s = alloc ();
      57    *(char **)s = "12";
      58    s[2] = '\0';
      59  }
      60  
      61  __attribute__((noipa)) void
      62  f7 (void)
      63  {
      64    char *s = alloc ();
      65    *(char **)s = "1";
      66    s[1] = '\0';
      67  }
      68  
      69  __attribute__((noipa)) void
      70  f8 (void)
      71  {
      72    char *s = alloc ();
      73    *(char **)s = "";
      74    s[0] = '\0';
      75  }
      76  
      77  int
      78  main ()
      79  {
      80    if (sizeof (char *) > 8)
      81      return 0;
      82    f1 ();
      83    if (buf[7] != 0)
      84      __builtin_abort ();
      85    f2 ();
      86    if (buf[6] != 0)
      87      __builtin_abort ();
      88    f3 ();
      89    if (buf[5] != 0)
      90      __builtin_abort ();
      91    f4 ();
      92    if (buf[4] != 0)
      93      __builtin_abort ();
      94    f5 ();
      95    if (buf[3] != 0)
      96      __builtin_abort ();
      97    f6 ();
      98    if (buf[2] != 0)
      99      __builtin_abort ();
     100    f7 ();
     101    if (buf[1] != 0)
     102      __builtin_abort ();
     103    f8 ();
     104    if (buf[0] != 0)
     105      __builtin_abort ();
     106    return 0;
     107  }