1  /* PR tree-optimization/95527 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -fdump-tree-original" } */
       4  /* { dg-final { scan-tree-dump "a & 7\\) == 0" "original" } } */
       5  /* { dg-final { scan-tree-dump "b & 63\\) != 0" "original" } } */
       6  /* { dg-final { scan-tree-dump-times "return 0;" 2 "original" } } */
       7  /* { dg-final { scan-tree-dump-times "return 1;" 2 "original" } } */
       8  /* { dg-final { scan-tree-dump "g & 15\\) == 8" "original" } } */
       9  /* { dg-final { scan-tree-dump "h & 255\\) != 128" "original" } } */
      10  
      11  int
      12  f1 (int a)
      13  {
      14    return __builtin_ctz (a) >= 3;
      15  }
      16  
      17  int
      18  f2 (int b)
      19  {
      20    return __builtin_ctz (b) < 6;
      21  }
      22  
      23  int
      24  f3 (int c)
      25  {
      26    return __builtin_ctz (c) < 0;
      27  }
      28  
      29  int
      30  f4 (int d)
      31  {
      32    return __builtin_ctz (d) >= 0;
      33  }
      34  
      35  int
      36  f5 (int e)
      37  {
      38    return __builtin_ctz (e) >= __SIZEOF_INT__ * __CHAR_BIT__;
      39  }
      40  
      41  int
      42  f6 (int f)
      43  {
      44    return __builtin_ctz (f) < __SIZEOF_INT__ * __CHAR_BIT__;
      45  }
      46  
      47  int
      48  f7 (int g)
      49  {
      50    return __builtin_ctz (g) == 3;
      51  }
      52  
      53  int
      54  f8 (int h)
      55  {
      56    return __builtin_ctz (h) != 7;
      57  }