summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/pr47157.c
blob: 0947a5f9a3eda2fe9536b1f816ac9dce70f25048 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* PR rtl-optimization/47157 */

struct S { unsigned a; unsigned b; } c = { 1, 0 };
unsigned long int e;
void bar (int);
int baz (void);

static int
foo (int x, short y)
{
  return ((x ^ y) & ((x ^ (x ^ y) & ~__INT_MAX__) - y ^ y)) < 0 ? x : x - y;
}

void
test (void)
{
  bar (foo (baz () != (c.a | c.b), -1L));
  for (e = 0; e; e = 1)
    ;
}