1 /* See http://gcc.gnu.org/ml/gcc/2009-06/msg00072.html. */
2
3 extern void abort (void);
4
5 struct s
6 {
7 unsigned long long a:2;
8 unsigned long long b:40;
9 unsigned long long c:22;
10 };
11
12 __attribute__ ((noinline)) void
g(unsigned long long a,unsigned long long b)13 g (unsigned long long a, unsigned long long b)
14 {
15 asm ("");
16 if (a != b)
17 abort ();
18 }
19
20 __attribute__ ((noinline)) void
f(struct s s,unsigned long long b)21 f (struct s s, unsigned long long b)
22 {
23 asm ("");
24 g (((unsigned long long) (s.b-8)) + 8, b);
25 }
26
27 int
main()28 main ()
29 {
30 struct s s = {1, 10, 3};
31 struct s t = {1, 2, 3};
32 f (s, 10);
33 f (t, 0x10000000002);
34 return 0;
35 }
36