forked from OSchip/llvm-project
Make cleanup-stack.c test stronger, and work in release-asserts mode.
llvm-svn: 71484
This commit is contained in:
parent
f83c9faa2f
commit
e92449e4cc
|
@ -1,15 +1,25 @@
|
||||||
// RUN: clang-cc -emit-llvm %s -o %t &&
|
// RUN: clang-cc -triple i386-unknown-unknown -O3 -emit-llvm %s -o %t &&
|
||||||
// RUN: grep "store i32 0, i32\* %cleanup" %t | count 2
|
// RUN: grep "ret i32 9" %t
|
||||||
void f(int n) {
|
|
||||||
int a[n];
|
struct s0 {
|
||||||
|
int *var;
|
||||||
|
int addend;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void f0(struct s0 *p) {
|
||||||
|
*p->var += p->addend;
|
||||||
|
}
|
||||||
|
|
||||||
|
int f1(void) {
|
||||||
|
int var = 0;
|
||||||
|
|
||||||
{
|
{
|
||||||
int b[n];
|
struct s0 x __attribute__((cleanup(f0))) = { &var, 2 };
|
||||||
|
struct s0 y __attribute__((cleanup(f0))) = { &var, 3 };
|
||||||
if (n)
|
{
|
||||||
return;
|
struct s0 y __attribute__((cleanup(f0))) = { &var, 4 };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n)
|
return var;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue