1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fno-ssa-phiopt -fno-tree-fre -fdump-tree-vrp1" } */
       3  
       4  struct foo1 {
       5    int i:1;
       6  };
       7  struct foo2 {
       8    unsigned i:1;
       9  };
      10  
      11  int test1 (struct foo1 *x)
      12  {
      13    int i = x->i;
      14    if (i == 0)
      15      return 1;
      16    else if (i == -1)
      17      return 1;
      18    return 0;
      19  }
      20  
      21  int test2 (struct foo2 *x)
      22  {
      23    if (x->i == 0)
      24      return 1;
      25    else if (x->i == -1) /* This test is already optimized by ccp1 or phiopt1.  */
      26      return 1;
      27    return 0;
      28  }
      29  
      30  int test3 (struct foo1 *x)
      31  {
      32    if (x->i == 0)
      33      return 1;
      34    else if (x->i == 1) /* This test is already optimized by ccp1 or phiopt1.  */
      35      return 1;
      36    return 0;
      37  }
      38  
      39  int test4 (struct foo2 *x)
      40  {
      41    unsigned int i = x->i;
      42    if (i == 0)
      43      return 1;
      44    else if (i == 1)
      45      return 1;
      46    return 0;
      47  }
      48  
      49  /* { dg-final { scan-tree-dump-times "if" 2 "vrp1" } } */