repo.or.cz
/
official-gcc.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
libstdc++: Remove note from the GCC 4.0.1 days
[official-gcc.git]
/
gcc
/
testsuite
/
gcc.dg
/
cleanup-3.c
blob
b5b01fd59051bc4951ed4b719b023aa1aef554bc
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
}