annotate gcc/testsuite/gcc.dg/analyzer/setjmp-2.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 /* { dg-additional-options "-fdiagnostics-show-line-numbers -fdiagnostics-path-format=inline-events -fdiagnostics-show-caret" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 /* { dg-enable-nn-line-numbers "" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 #include "test-setjmp.h"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 #include <stddef.h>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 #include "analyzer-decls.h"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 extern void foo (int);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 void test_1 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 SETJMP (NULL);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 void test_2 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 jmp_buf env;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 int i;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 foo (0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 i = SETJMP(env);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 foo (1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 if (i != 0)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 foo (2);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 __analyzer_dump_path (); /* { dg-message "path" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 else
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 longjmp (env, 1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 foo (3);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 /* { dg-begin-multiline-output "" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 NN | __analyzer_dump_path ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 | ^~~~~~~~~~~~~~~~~~~~~~~
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 'test_2': event 1
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 | NN | i = SETJMP(env);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43 | | ^~~~~~
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 | | |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 | | (1) 'setjmp' called here
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 'test_2': events 2-4
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 | NN | if (i != 0)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50 | | ^
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 | | |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 | | (2) following 'false' branch (when 'i == 0')...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53 |......
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 | NN | longjmp (env, 1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 | | ~~~~~~~~~~~~~~~~
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 | | |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 | | (3) ...to here
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 | | (4) rewinding within 'test_2' from 'longjmp'...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 'test_2': event 5
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61 |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 | NN | i = SETJMP(env);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63 | | ^~~~~~
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 | | |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65 | | (5) ...to 'setjmp' (saved at (1))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66 |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67 'test_2': events 6-8
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
68 |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
69 | NN | if (i != 0)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
70 | | ^
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
71 | | |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
72 | | (6) following 'true' branch (when 'i != 0')...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
73 | NN | {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
74 | NN | foo (2);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
75 | | ~~~~~~~
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
76 | | |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
77 | | (7) ...to here
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
78 | NN | __analyzer_dump_path ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
79 | | ~~~~~~~~~~~~~~~~~~~~~~~
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
80 | | |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
81 | | (8) here
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
82 |
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
83 { dg-end-multiline-output "" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
84
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
85 void test_3 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
86 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
87 longjmp (NULL, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
88 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
89
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
90 void test_4 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
91 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
92 longjmp (NULL, 1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
93 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
94
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
95 void test_5 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
96 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
97 jmp_buf env;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
98 longjmp (env, 1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
99 }