/* { dg-do compile } */ | |
/* { dg-options "-O2 -fdump-tree-evrp" } */ | |
extern void vrp_keep (void); | |
extern void vrp_kill (void); | |
void | |
f2 (int s, int b) | |
{ | |
if (s > 4) | |
s = 4; | |
if (s < -16) | |
s = -16; | |
/* s in [-16, 4]. */ | |
b = (b & 1) + 1; | |
/* b in range [1, 2]. */ | |
b = s << b; | |
/* b in range [-64, 16]. */ | |
if (b == -2) | |
vrp_keep (); | |
if (b <= -65) | |
vrp_kill (); | |
if (b >= 17) | |
vrp_kill (); | |
} | |
/* { dg-final { scan-tree-dump-times "vrp_keep \\(" 1 "evrp"} } */ | |
/* { dg-final { scan-tree-dump-times "vrp_kill \\(" 0 "evrp"} } */ |