OSDN Git Service

2012-04-13 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / cleanup-3.c
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 }