annotate gcc/testsuite/gcc.dg/pr67043.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 /* { dg-do compile } */
kono
parents:
diff changeset
2 /* { dg-options "-O3 -fcompare-debug -w" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 extern void rt_mutex_owner (void);
kono
parents:
diff changeset
5 extern void rt_mutex_deadlock_account_lock (int);
kono
parents:
diff changeset
6 extern void signal_pending (void);
kono
parents:
diff changeset
7 __typeof__ (int *) a;
kono
parents:
diff changeset
8 int b;
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 int
kono
parents:
diff changeset
11 try_to_take_rt_mutex (int p1) {
kono
parents:
diff changeset
12 rt_mutex_owner ();
kono
parents:
diff changeset
13 if (b)
kono
parents:
diff changeset
14 return 0;
kono
parents:
diff changeset
15 rt_mutex_deadlock_account_lock (p1);
kono
parents:
diff changeset
16 return 1;
kono
parents:
diff changeset
17 }
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 void
kono
parents:
diff changeset
20 __rt_mutex_slowlock (int p1) {
kono
parents:
diff changeset
21 int c;
kono
parents:
diff changeset
22 for (;;) {
kono
parents:
diff changeset
23 c = ({
kono
parents:
diff changeset
24 asm ("" : "=r"(a));
kono
parents:
diff changeset
25 a;
kono
parents:
diff changeset
26 });
kono
parents:
diff changeset
27 if (try_to_take_rt_mutex (c))
kono
parents:
diff changeset
28 break;
kono
parents:
diff changeset
29 if (__builtin_expect (p1 == 0, 0))
kono
parents:
diff changeset
30 signal_pending ();
kono
parents:
diff changeset
31 }
kono
parents:
diff changeset
32 }