blob: add9f17b42194f8915f8f15e42bdbd96cc819379 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* { dg-do run { target x86_64-*-* i?86-*-* } } */
/* { dg-require-effective-target lp64 } */
unsigned a[4] = {1,1,1,1};
unsigned tt1 = 0;
__attribute__((noipa))
static void bug(unsigned * p, unsigned *t, int n, int t2)
{
for(int i = 0; i < n; i++)
{
_Bool LookupFlags ;
unsigned v = t[i];
unsigned tt = tt1;
if (v == 0)
LookupFlags = 0;
else if (v == 1)
LookupFlags = 1;
if (LookupFlags) {
tt|=3u;
LookupFlags = 0;
}
asm("movq $-1, %q1":"+a"(LookupFlags));
*p = tt;
}
}
int main()
{
unsigned r = 42;
bug(&r,a, sizeof(a)/sizeof(a[0]), 1);
__builtin_printf("%u\n", r);
if (r != 3) __builtin_abort();
}
|