* g++.dg/ext/selectany1.C: New file. Test for linkonce sections.
[official-gcc.git] / gcc / testsuite / g++.dg / ext / packed4.C
blob1ac9048d4e09e475a35d5eafb9ef3dadbdda3556
1 // { dg-do run }
3 // Copyright (C) 2003 Free Software Foundation, Inc.
4 // Contributed by Nathan Sidwell 15 Jul 2003 <nathan@codesourcery.com>
6 // Packed fields are unsuitable for direct reference binding.
8 struct Unpacked { int i; };
10 int ConstRef (int const &p, int const *ptr, int v)
12   if (p != v)
13     return 1;
14   if (&p == ptr)
15     return 2;
16   return 0;
19 int ConstRef (Unpacked const &p, Unpacked const *ptr, int v)
21   if (p.i != v)
22     return 1;
23   if (&p == ptr)
24     return 2;
25   return 0;
28 int Val (int p, int v)
30   if (p != v)
31     return 1;
32   return 0;
34 int Val (Unpacked p, int v)
36   if (p.i != v)
37     return 1;
38   return 0;
41 struct  __attribute__ ((packed)) Packed
43   char c;
44   int i;
45   Unpacked u;
46   char t;
49 int Foo (Packed &p, int i, int ui)
51   int r;
52   
53   if ((r = Val (p.i, i)))
54     return r;
55   if ((r = Val (p.u.i, ui)))
56     return r + 2;
57   if ((r = Val (p.u, ui)))
58     return r + 4;
59   
60   if ((r = ConstRef (p.i, &p.i, i)))
61     return r + 6;
63   return 0;
66 int main ()
68   Packed p;
70   p.c = 0x12;
71   p.i = 0x3456789a;
72   p.u.i = 0xbcdef00f;
73   p.t = 0xed;
75   return Foo (p, 0x3456789a, 0xbcdef00f);