/* { dg-do compile } */ | |
/* { dg-options "-O3 -fdump-tree-optimized" } */ | |
/* PR tree-optimization/105832 */ | |
void foo(void); | |
static struct { | |
short a; | |
signed char b; | |
} c; | |
static signed char d; | |
int main() { | |
signed char g = c.b > 4U ? c.b : c.b << 2; | |
for (int h = 0; h < 5; h++) { | |
d = (g >= 2 || 1 >> g) ? g : g << 1; | |
if (d && 1 == g) | |
foo(); | |
c.a = 0; | |
} | |
} | |
/* The call of foo should have been removed. */ | |
/* { dg-final { scan-tree-dump-not "foo " "optimized" } } */ |