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 int
       6  __attribute__((noipa))
       7  foo (unsigned int tmp)
       8  {
       9    for (int bit = 0; bit < 32; bit += 3)
      10      tmp &= ~(1U << bit);
      11    return tmp;
      12  }
      13  
      14  unsigned int
      15  __attribute__((noipa))
      16  foo1 (unsigned int tmp)
      17  {
      18    for (int bit = 31; bit >= 0; bit -= 3)
      19      tmp &= ~(1U << bit);
      20    return tmp;
      21  }
      22  
      23  unsigned int
      24  __attribute__((noipa))
      25  foo2 (unsigned int tmp)
      26  {
      27    for (int bit = 0; bit < 32; bit += 3)
      28      tmp &= (1U << bit);
      29    return tmp;
      30  }
      31  
      32  unsigned int
      33  __attribute__((noipa))
      34  foo3 (unsigned int tmp)
      35  {
      36    for (int bit = 31; bit >= 0; bit -= 3)
      37      tmp &= (1U << bit);
      38    return tmp;
      39  }
      40  
      41  unsigned int
      42  __attribute__((noipa))
      43  foo4 (unsigned int tmp)
      44  {
      45    for (int bit = 0; bit < 32; bit += 3)
      46      tmp |= ~(1U << bit);
      47    return tmp;
      48  }
      49  
      50  unsigned int
      51  __attribute__((noipa))
      52  foo5 (unsigned int tmp)
      53  {
      54    for (int bit = 31; bit >= 0; bit -= 3)
      55      tmp |= ~(1U << bit);
      56    return tmp;
      57  }
      58  
      59  unsigned int
      60  __attribute__((noipa))
      61  foo6 (unsigned int tmp)
      62  {
      63    for (int bit = 0; bit < 32; bit += 3)
      64      tmp |= (1U << bit);
      65    return tmp;
      66  }
      67  
      68  unsigned int
      69  __attribute__((noipa))
      70  foo7 (unsigned int tmp)
      71  {
      72    for (int bit = 31; bit >= 0; bit -= 3)
      73      tmp |= (1U << bit);
      74    return tmp;
      75  }
      76  
      77  unsigned int
      78  __attribute__((noipa))
      79  foo8 (unsigned int tmp)
      80  {
      81    for (int bit = 0; bit < 32; bit += 3)
      82      tmp ^= ~(1U << bit);
      83    return tmp;
      84  }
      85  
      86  unsigned int
      87  __attribute__((noipa))
      88  foo9 (unsigned int tmp)
      89  {
      90    for (int bit = 31; bit >= 0; bit -= 3)
      91      tmp ^= ~(1U << bit);
      92    return tmp;
      93  }
      94  
      95  unsigned int
      96  __attribute__((noipa))
      97  foo10 (unsigned int tmp)
      98  {
      99    for (int bit = 0; bit < 32; bit += 3)
     100      tmp ^= (1U << bit);
     101    return tmp;
     102  }
     103  
     104  unsigned int
     105  __attribute__((noipa))
     106  foo11 (unsigned int tmp)
     107  {
     108    for (int bit = 31; bit >= 0; bit -= 3)
     109      tmp ^= (1U << bit);
     110    return tmp;
     111  }