Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/cleanup-3.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* { dg-do run } */ | |
2 /* { dg-options "" } */ | |
3 /* Verify that the cleanup handler receives the proper contents | |
4 of the variable. */ | |
5 | |
6 extern void exit(int); | |
7 extern void abort(void); | |
8 | |
9 static int expected; | |
10 | |
11 static void | |
12 handler(int *p) | |
13 { | |
14 if (*p != expected) | |
15 abort (); | |
16 } | |
17 | |
18 static void __attribute__((noinline)) | |
19 bar(void) | |
20 { | |
21 } | |
22 | |
23 static void doit(int x, int y) | |
24 { | |
25 int r __attribute__((cleanup (handler))); | |
26 if (x < y) | |
27 { | |
28 r = 0; | |
29 return; | |
30 } | |
31 | |
32 bar(); | |
33 r = x + y; | |
34 } | |
35 | |
36 int main() | |
37 { | |
38 expected = 0; | |
39 doit (1, 2); | |
40 | |
41 expected = 3; | |
42 doit (2, 1); | |
43 | |
44 return 0; | |
45 } |