annotate gcc/testsuite/gcc.dg/anon-struct-12.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do run } */
kono
parents:
diff changeset
2 /* { dg-options "-fplan9-extensions" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 /* When using -fplan9-extensions, we support automatic conversion of
kono
parents:
diff changeset
5 pointer types, and we support referring to a typedef name
kono
parents:
diff changeset
6 directly. */
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 extern void exit (int);
kono
parents:
diff changeset
9 extern void abort (void);
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 struct A { char a; };
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 struct B {
kono
parents:
diff changeset
14 char b;
kono
parents:
diff changeset
15 struct A;
kono
parents:
diff changeset
16 char c;
kono
parents:
diff changeset
17 };
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 void
kono
parents:
diff changeset
20 f1 (struct A *p)
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 p->a = 1;
kono
parents:
diff changeset
23 }
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 void
kono
parents:
diff changeset
26 test1 (void)
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 struct B b;
kono
parents:
diff changeset
29 struct A *p;
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 b.b = 2;
kono
parents:
diff changeset
32 b.c = 3;
kono
parents:
diff changeset
33 f1 (&b);
kono
parents:
diff changeset
34 if (b.a != 1)
kono
parents:
diff changeset
35 abort ();
kono
parents:
diff changeset
36 if (b.b != 2 || b.c != 3)
kono
parents:
diff changeset
37 abort ();
kono
parents:
diff changeset
38 p = &b;
kono
parents:
diff changeset
39 if (p->a != 1)
kono
parents:
diff changeset
40 abort ();
kono
parents:
diff changeset
41 }
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 typedef struct { char d; } D;
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 struct E {
kono
parents:
diff changeset
46 char b;
kono
parents:
diff changeset
47 struct F { char f; };
kono
parents:
diff changeset
48 char c;
kono
parents:
diff changeset
49 union {
kono
parents:
diff changeset
50 D;
kono
parents:
diff changeset
51 };
kono
parents:
diff changeset
52 char e;
kono
parents:
diff changeset
53 };
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 void
kono
parents:
diff changeset
56 f2 (struct F *p)
kono
parents:
diff changeset
57 {
kono
parents:
diff changeset
58 p->f = 6;
kono
parents:
diff changeset
59 }
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 void
kono
parents:
diff changeset
62 f3 (D *p)
kono
parents:
diff changeset
63 {
kono
parents:
diff changeset
64 p->d = 4;
kono
parents:
diff changeset
65 }
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 void
kono
parents:
diff changeset
68 f4 (D d)
kono
parents:
diff changeset
69 {
kono
parents:
diff changeset
70 }
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 void
kono
parents:
diff changeset
73 test2 (void)
kono
parents:
diff changeset
74 {
kono
parents:
diff changeset
75 struct E e;
kono
parents:
diff changeset
76 struct F *pf;
kono
parents:
diff changeset
77 D *pd;
kono
parents:
diff changeset
78 D d;
kono
parents:
diff changeset
79
kono
parents:
diff changeset
80 e.b = 2;
kono
parents:
diff changeset
81 e.c = 3;
kono
parents:
diff changeset
82 e.e = 5;
kono
parents:
diff changeset
83 f2 (&e);
kono
parents:
diff changeset
84 f3 (&e);
kono
parents:
diff changeset
85 if (e.d != 4)
kono
parents:
diff changeset
86 abort ();
kono
parents:
diff changeset
87 if (e.f != 6)
kono
parents:
diff changeset
88 abort ();
kono
parents:
diff changeset
89 if (e.b != 2 || e.c != 3 || e.e != 5)
kono
parents:
diff changeset
90 abort ();
kono
parents:
diff changeset
91 pf = &e;
kono
parents:
diff changeset
92 if (pf->f != 6)
kono
parents:
diff changeset
93 abort ();
kono
parents:
diff changeset
94 pd = &e;
kono
parents:
diff changeset
95 if (pd->d != 4)
kono
parents:
diff changeset
96 abort ();
kono
parents:
diff changeset
97 d = e.D;
kono
parents:
diff changeset
98 f3 (&e.D);
kono
parents:
diff changeset
99 f4 (e.D);
kono
parents:
diff changeset
100 }
kono
parents:
diff changeset
101
kono
parents:
diff changeset
102 int
kono
parents:
diff changeset
103 main ()
kono
parents:
diff changeset
104 {
kono
parents:
diff changeset
105 test1 ();
kono
parents:
diff changeset
106 test2 ();
kono
parents:
diff changeset
107 exit (0);
kono
parents:
diff changeset
108 }