blob: d9ee26bc27fc2e78a6faac0d3e4635e61985617a (
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
35
36
37
38
39
40
41
42
43
|
#include <stdio.h>
typedef struct { int x; int y;} S;
extern int foo(S*);
int hi = 0, lo = 0;
int main()
{
S a;
int r;
a.x = (int) 0x00010000;
a.y = 1;
r = foo (&a);
if (r == 2 && lo==0 && hi==1)
{
exit (0);
}
abort ();
}
typedef unsigned short u16;
__attribute__ ((noinline)) int foo (S* ptr)
{
int a = ptr->x;
int c = 0;
u16 b = (u16) a;
if (b != 0)
{
lo = 1;
c += ptr->y;
}
b = a >> 16;
if (b != 0)
{
hi = 1;
c+= ptr->y;
}
c += ptr->y;
return c;
}
|