1 // Test with the flag -fno-sanitize-memory-use-after-dtor, to ensure that
2 // instrumentation is not erroneously inserted
3 // RUN: %clang_cc1 -fsanitize=memory -fno-sanitize-memory-use-after-dtor -triple=x86_64-pc-linux -emit-llvm -o - %s | FileCheck %s
4 
5 struct Simple {
6   int x;
~SimpleSimple7   ~Simple() {}
8 };
9 Simple s;
10 // CHECK-LABEL: define {{.*}}SimpleD1Ev
11 // CHECK-NOT: call void @__sanitizer_dtor_callback
12 
13 struct Inlined {
14   int x;
~InlinedInlined15   inline ~Inlined() {}
16 };
17 Inlined i;
18 // CHECK-LABEL: define {{.*}}InlinedD1Ev
19 // CHECK-NOT: call void @__sanitizer_dtor_callback
20 
21 // CHECK-LABEL: define {{.*}}SimpleD2Ev
22 // CHECK-NOT: call void @__sanitizer_dtor_callback
23 
24 // CHECK-LABEL: define {{.*}}InlinedD2Ev
25 // CHECK-NOT: call void @__sanitizer_dtor_callback
26