annotate gcc/testsuite/g++.dg/abi/pr60336-10.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 struct dummy1 { };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 struct dummy : dummy0, dummy1 { };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 test (struct dummy a, int m, ...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 va_list va_arglist;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 int i;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 int count = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 if (m == 0)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 va_start (va_arglist, m);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 if (i == 1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 if (i == 2)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 if (i == 3)
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 == 4)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 i = va_arg (va_arglist, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 if (i == 5)
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 == 6)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 count++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 va_end (va_arglist);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 if (count != 7)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 struct dummy a0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 main ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 test (a0, 0, 1, 2, 3, 4, 5, 6);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 }