(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr103462-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O1 -fdump-tree-sccp-details" } */
       3  /* { dg-final { scan-tree-dump-times {final value replacement} 12 "sccp" } } */
       4  
       5  unsigned long long
       6  __attribute__((noipa))
       7  foo (unsigned long long tmp)
       8  {
       9    for (int bit = 0; bit < 64; bit += 3)
      10      tmp &= ~(1ULL << bit);
      11    return tmp;
      12  }
      13  
      14  unsigned long long
      15  __attribute__((noipa))
      16  foo1 (unsigned long long tmp)
      17  {
      18    for (int bit = 63; bit >= 0; bit -= 3)
      19      tmp &= ~(1ULL << bit);
      20    return tmp;
      21  }
      22  
      23  unsigned long long
      24  __attribute__((noipa))
      25  foo2 (unsigned long long tmp)
      26  {
      27    for (int bit = 0; bit < 64; bit += 3)
      28      tmp &= (1ULL << bit);
      29    return tmp;
      30  }
      31  
      32  unsigned long long
      33  __attribute__((noipa))
      34  foo3 (unsigned long long tmp)
      35  {
      36    for (int bit = 63; bit >= 0; bit -= 3)
      37      tmp &= (1ULL << bit);
      38    return tmp;
      39  }
      40  
      41  unsigned long long
      42  __attribute__((noipa))
      43  foo4 (unsigned long long tmp)
      44  {
      45    for (int bit = 0; bit < 64; bit += 3)
      46      tmp |= ~(1ULL << bit);
      47    return tmp;
      48  }
      49  
      50  unsigned long long
      51  __attribute__((noipa))
      52  foo5 (unsigned long long tmp)
      53  {
      54    for (int bit = 63; bit >= 0; bit -= 3)
      55      tmp |= ~(1ULL << bit);
      56    return tmp;
      57  }
      58  
      59  unsigned long long
      60  __attribute__((noipa))
      61  foo6 (unsigned long long tmp)
      62  {
      63    for (int bit = 0; bit < 64; bit += 3)
      64      tmp |= (1ULL << bit);
      65    return tmp;
      66  }
      67  
      68  unsigned long long
      69  __attribute__((noipa))
      70  foo7 (unsigned long long tmp)
      71  {
      72    for (int bit = 63; bit >= 0; bit -= 3)
      73      tmp |= (1ULL << bit);
      74    return tmp;
      75  }
      76  
      77  unsigned long long
      78  __attribute__((noipa))
      79  foo8 (unsigned long long tmp)
      80  {
      81    for (int bit = 0; bit < 64; bit += 3)
      82      tmp ^= ~(1ULL << bit);
      83    return tmp;
      84  }
      85  
      86  unsigned long long
      87  __attribute__((noipa))
      88  foo9 (unsigned long long tmp)
      89  {
      90    for (int bit = 63; bit >= 0; bit -= 3)
      91      tmp ^= ~(1ULL << bit);
      92    return tmp;
      93  }
      94  
      95  unsigned long long
      96  __attribute__((noipa))
      97  foo10 (unsigned long long tmp)
      98  {
      99    for (int bit = 0; bit < 64; bit += 3)
     100      tmp ^= (1ULL << bit);
     101    return tmp;
     102  }
     103  
     104  unsigned long long
     105  __attribute__((noipa))
     106  foo11 (unsigned long long tmp)
     107  {
     108    for (int bit = 63; bit >= 0; bit -= 3)
     109      tmp ^= (1ULL << bit);
     110    return tmp;
     111  }