1  /* { dg-do compile } */
       2  /* { dg-options "-O1 -fdump-tree-sccp-details" } */
       3  /* { dg-final { scan-tree-dump-times {final value replacement} 8 "sccp" } } */
       4  
       5  unsigned int
       6  __attribute__((noipa))
       7  foo (unsigned int tmp, unsigned int bit2)
       8  {
       9    for (int bit = 0; bit < 64; bit++)
      10      tmp &= bit2;
      11    return tmp;
      12  }
      13  
      14  unsigned int
      15  __attribute__((noipa))
      16  foo1 (unsigned int tmp, unsigned int bit2)
      17  {
      18    for (int bit = 63; bit >= 0; bit -=3)
      19      tmp &= bit2;
      20    return tmp;
      21  }
      22  
      23  unsigned int
      24  __attribute__((noipa))
      25  foo2 (unsigned int tmp, unsigned int bit2)
      26  {
      27    for (int bit = 0; bit < 64; bit++)
      28      tmp |= bit2;
      29    return tmp;
      30  }
      31  
      32  unsigned int
      33  __attribute__((noipa))
      34  foo3 (unsigned int tmp, unsigned int bit2)
      35  {
      36    for (int bit = 63; bit >= 0; bit -=3)
      37      tmp |= bit2;
      38    return tmp;
      39  }
      40  
      41  unsigned int
      42  __attribute__((noipa))
      43  foo4 (unsigned int tmp, unsigned int bit2)
      44  {
      45    for (int bit = 0; bit < 64; bit++)
      46      tmp ^= bit2;
      47    return tmp;
      48  }
      49  
      50  unsigned int
      51  __attribute__((noipa))
      52  foo5 (unsigned int tmp, unsigned int bit2)
      53  {
      54    for (int bit = 0; bit < 63; bit++)
      55      tmp ^= bit2;
      56    return tmp;
      57  }
      58  
      59  unsigned int
      60  __attribute__((noipa))
      61  f (unsigned int tmp, int bit, unsigned int bit2)
      62  {
      63    unsigned int res = tmp;
      64    for (int i = 0; i < bit; i++)
      65      res &= bit2;
      66    return res;
      67  }
      68  
      69  unsigned int
      70  __attribute__((noipa))
      71  f1 (unsigned int tmp, int bit, unsigned int bit2)
      72  {
      73    unsigned int res = tmp;
      74    for (int i = 0; i < bit; i++)
      75      res |= bit2;
      76    return res;
      77  }
      78  
      79  unsigned int
      80  __attribute__((noipa))
      81  f2 (unsigned int tmp, int bit, unsigned int bit2)
      82  {
      83    unsigned int res = tmp;
      84    for (int i = 0; i < bit; i++)
      85      res ^= bit2;
      86    return res;
      87  }
      88