1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-tree-evrp" } */
       3  
       4  extern void vrp_keep (void);
       5  extern void vrp_kill (void);
       6  
       7  void
       8  f2 (int s, int b)
       9  {
      10    if (s > 4)
      11      s = 4;
      12    if (s < -16)
      13      s = -16;
      14    /* s in [-16, 4].   */
      15    b = (b & 1) + 1;
      16    /* b in range [1, 2].  */
      17    b = s << b;
      18    /* b in range [-64, 16].  */
      19    if (b == -2)
      20      vrp_keep ();
      21    if (b <= -65)
      22      vrp_kill ();
      23    if (b >= 17)
      24      vrp_kill ();
      25  }
      26  
      27  /* { dg-final { scan-tree-dump-times "vrp_keep \\(" 1 "evrp"} } */
      28  /* { dg-final { scan-tree-dump-times "vrp_kill \\(" 0 "evrp"} } */