annotate gcc/testsuite/gcc.dg/guality/pr67192.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR debug/67192 */
kono
parents:
diff changeset
2 /* { dg-do run } */
kono
parents:
diff changeset
3 /* { dg-options "-g -Wmisleading-indentation" } */
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 volatile int cnt = 0;
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 __attribute__((noinline, noclone)) static int
kono
parents:
diff changeset
8 last (void)
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 return ++cnt % 5 == 0;
kono
parents:
diff changeset
11 }
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 __attribute__((noinline, noclone)) static void
kono
parents:
diff changeset
14 do_it (void)
kono
parents:
diff changeset
15 {
kono
parents:
diff changeset
16 asm volatile ("" : : "r" (&cnt) : "memory");
kono
parents:
diff changeset
17 }
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 __attribute__((noinline, noclone)) static void
kono
parents:
diff changeset
20 f1 (void)
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 for (;; do_it())
kono
parents:
diff changeset
23 {
kono
parents:
diff changeset
24 if (last ())
kono
parents:
diff changeset
25 break;
kono
parents:
diff changeset
26 }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
27 do_it (); /* { dg-final { gdb-test . "cnt" "5" } } */
111
kono
parents:
diff changeset
28 }
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 __attribute__((noinline, noclone)) static void
kono
parents:
diff changeset
31 f2 (void)
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 while (1)
kono
parents:
diff changeset
34 {
kono
parents:
diff changeset
35 if (last ())
kono
parents:
diff changeset
36 break;
kono
parents:
diff changeset
37 do_it ();
kono
parents:
diff changeset
38 }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
39 do_it (); /* { dg-final { gdb-test . "cnt" "10" } } */
111
kono
parents:
diff changeset
40 }
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 __attribute__((noinline, noclone)) static void
kono
parents:
diff changeset
43 f3 (void)
kono
parents:
diff changeset
44 {
kono
parents:
diff changeset
45 for (;; do_it())
kono
parents:
diff changeset
46 if (last ())
kono
parents:
diff changeset
47 break;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
48 do_it (); /* { dg-final { gdb-test . "cnt" "15" } } */
111
kono
parents:
diff changeset
49 }
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 __attribute__((noinline, noclone)) static void
kono
parents:
diff changeset
52 f4 (void)
kono
parents:
diff changeset
53 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
54 while (1) /* { dg-final { gdb-test . "cnt" "15" } } */
111
kono
parents:
diff changeset
55 if (last ())
kono
parents:
diff changeset
56 break;
kono
parents:
diff changeset
57 else
kono
parents:
diff changeset
58 do_it ();
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
59 do_it (); /* { dg-final { gdb-test . "cnt" "20" } } */
111
kono
parents:
diff changeset
60 }
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 void (*volatile fnp1) (void) = f1;
kono
parents:
diff changeset
63 void (*volatile fnp2) (void) = f2;
kono
parents:
diff changeset
64 void (*volatile fnp3) (void) = f3;
kono
parents:
diff changeset
65 void (*volatile fnp4) (void) = f4;
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 int
kono
parents:
diff changeset
68 main ()
kono
parents:
diff changeset
69 {
kono
parents:
diff changeset
70 asm volatile ("" : : "r" (&fnp1) : "memory");
kono
parents:
diff changeset
71 asm volatile ("" : : "r" (&fnp2) : "memory");
kono
parents:
diff changeset
72 asm volatile ("" : : "r" (&fnp3) : "memory");
kono
parents:
diff changeset
73 asm volatile ("" : : "r" (&fnp4) : "memory");
kono
parents:
diff changeset
74 fnp1 ();
kono
parents:
diff changeset
75 fnp2 ();
kono
parents:
diff changeset
76 fnp3 ();
kono
parents:
diff changeset
77 fnp4 ();
kono
parents:
diff changeset
78 return 0;
kono
parents:
diff changeset
79 }