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 }