some more testcases I had lying around here
[cparser] / parsetest / should_warn / missing_return.c
1 int no_return_1(double *p) {
2         double d = *p;
3         ++d;
4 }
5
6 int no_return_2(int a) {
7         if (a)
8                 ++a;
9         else
10                 return 1;
11 }
12
13 int has_return_1(int a) {
14         if (a)
15                 return a;
16         else
17                 return 0;
18 }
19
20 int has_return_2(int a) {
21         if (a)
22                 ++a;
23         else
24                 --a;
25         return a;
26         ++a;
27 }
28
29 int has_return_3(int a) {
30         do {
31                 return a;
32         } while(a);
33 }
34
35 int no_return_3(int a) {
36         switch (a) {
37         case 1: return a;
38         case 2: return a+1;
39         }
40 }
41
42 int has_return_4(int a) {
43         switch (a) {
44         case 1: return a;
45         case 2: return a+1;
46         default: return 0;
47         }
48 }
49
50 int no_return_4(int a) {
51         goto end;
52         return a;
53 end:
54         ++a;
55 }
56
57 int no_return_5(int a) {
58         if (a)
59                 goto end;
60         else {
61                 ++a;
62                 goto end;
63         }
64         return a;
65 end:
66         ++a;
67 }
68
69 int main() {
70         return 0;
71 }