annotate gcc/testsuite/g++.dg/abi/pr60336-11.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 // { dg-options "-O2" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 #include <stdarg.h>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 struct dummy0
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 void bar (void);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 struct dummy1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 void foo (void);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 struct dummy : dummy0, dummy1 { };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 test (struct dummy a, int m, ...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 va_list va_arglist;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 int i;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 int count = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 if (m == 0)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 va_start (va_arglist, m);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 if (i == 1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 if (i == 2)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 if (i == 3)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 if (i == 4)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 if (i == 5)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 if (i == 6)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 va_end (va_arglist);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 if (count != 7)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 struct dummy a0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 main ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 test (a0, 0, 1, 2, 3, 4, 5, 6);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 }