kDefs.h: Added risc-v to the K_ARCH_XXX defines.
[kstuff-mirror.git] / kProfiler2 / tstlongjmp.c
blobd6e2b4954c202d795948a8f391aad7e11e146d00
2 #include <setjmp.h>
3 #include <time.h>
5 /* just try trick the compiler into not optimizing stuff by
6 making it "uncertain" which path to take. */
7 int always_true(void)
9 time_t t = time(NULL);
10 if (t == time(NULL))
11 return 1;
12 if (t != time(NULL))
13 return 1;
14 if (t == time(NULL))
15 return 1;
16 if (t != time(NULL))
17 return 1;
18 return 0;
21 jmp_buf g_JmpBuf;
23 int onelevel(void)
25 if (always_true())
26 longjmp(g_JmpBuf, 1);
27 return 0;
31 int twolevels_inner(void)
33 if (always_true())
34 longjmp(g_JmpBuf, 1);
35 return 0;
38 int twolevels_outer(void)
40 int rc;
41 always_true();
42 rc = twolevels_inner();
43 always_true();
44 return rc;
48 int main()
50 int rc = 1;
52 /* first */
53 if (!setjmp(g_JmpBuf))
54 rc = onelevel();
56 /* second */
57 if (!setjmp(g_JmpBuf))
58 rc = twolevels_outer();
60 return rc != 1;