blob: 3bf5cccfee4d4237cf6b5e8ba3ec0240d6aa0b6a [file] [edit]
// RUN: %clang_cc1 -emit-llvm -o - -triple x86_64-unknown-linux %s | FileCheck %s
// Tests for issue #207785.
void f1(double *x);
void f2(double *x);
void f3(double *x);
// CHECK-LABEL: define {{.*}} void @g1()
void g1() {
// CHECK: call void @f3
// CHECK-NOT: call void @f2
// CHECK-NOT: call void @f1
__attribute__((cleanup(f1)))
__attribute__((cleanup(f2)))
__attribute__((cleanup(f3)))
double x;
}
// CHECK-LABEL: define {{.*}} void @g2()
void g2() {
// CHECK: call void @f1
__attribute__((cleanup(f1)))
__attribute__((cleanup(f1)))
double x;
}
// CHECK-LABEL: define {{.*}} void @g3()
void g3() {
// CHECK: call void @f1
// CHECK-NOT: call void @f2
__attribute__((cleanup(f2)))
__attribute__((cleanup(f1)))
double x;
}
// CHECK-LABEL: define {{.*}} void @g4()
void g4() {
// CHECK: call void @f1
// CHECK-NOT: call void @f2
[[gnu::cleanup(f2)]]
[[gnu::cleanup(f1)]]
double x;
}
// CHECK-LABEL: define {{.*}} void @g5()
void g5() {
// CHECK: call void @f1
// CHECK-NOT: call void @f2
[[gnu::cleanup(f2)]]
__attribute__((cleanup(f1)))
double x;
}