blob: 7329bdc6799ad237a73012301aed5fb0fafd6312 [file] [log] [blame]
Masatake YAMATO96821072014-05-14 13:16:29 +09001#include <unistd.h>
2#include <sys/types.h>
3
4/* Use "volatile" to avoid compiler optimization. */
5
Dmitry V. Levinc588b202014-06-13 15:07:24 +00006int f3(int i)
Masatake YAMATO96821072014-05-14 13:16:29 +09007{
Dmitry V. Levine4113972014-06-05 14:37:04 +00008 static pid_t (* volatile g)(void) = getpid;
Masatake YAMATO96821072014-05-14 13:16:29 +09009 return g() + i;
10}
11
Dmitry V. Levinc588b202014-06-13 15:07:24 +000012int f2(volatile int i)
13{
14 static int (* volatile g)(int) = f3;
15 return g(i) - i;
16}
17
18int f1(volatile int i)
19{
20 static int (* volatile g)(int) = f2;
21 return g(i) + i;
22}
23
Masatake YAMATO96821072014-05-14 13:16:29 +090024int f0(volatile int i)
25{
26 static int (* volatile g)(int) = f1;
27 return g(i) - i;
28}
29
30int main(int argc, char** argv)
31{
32 static int (* volatile g)(int) = f0;
33 g(argc);
34 return 0;
35}