xref: /llvm-project/compiler-rt/test/profile/Linux/coverage_dtor.cpp (revision f23fae29eb38b9e9d0c6195fa82a882167bd8abe)
180d4b898SXinliang David Li // RUN: %clang_profgen -x c++ -fno-exceptions  -std=c++11 -fuse-ld=gold -fcoverage-mapping -o %t %s
2abf6d973SXinliang David Li // RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
3abf6d973SXinliang David Li // RUN: llvm-profdata merge -o %t.profdata %t.profraw
4*f23fae29SFangrui Song // RUN: llvm-cov show %t -instr-profile %t.profdata 2>&1 | FileCheck %s
5abf6d973SXinliang David Li 
6a3be895bSXinliang David Li int g = 100;
7abf6d973SXinliang David Li struct Base {
8abf6d973SXinliang David Li   int B;
BaseBase9abf6d973SXinliang David Li   Base(int B_) : B(B_) {}
~BaseBase10a3be895bSXinliang David Li   ~Base() { g -= B; }
11abf6d973SXinliang David Li };
12abf6d973SXinliang David Li 
13abf6d973SXinliang David Li struct Derived : public Base {
DerivedDerived14a3be895bSXinliang David Li   Derived(int K) : Base(K) {}
155e3c5e80SVedant Kumar   ~Derived() = default; // CHECK:  [[@LINE]]| 2|  ~Derived() = default;
16abf6d973SXinliang David Li };
17abf6d973SXinliang David Li 
main()18abf6d973SXinliang David Li int main() {
19a3be895bSXinliang David Li   {
20abf6d973SXinliang David Li     Derived dd(10);
21a3be895bSXinliang David Li     Derived dd2(90);
22a3be895bSXinliang David Li   }
23a3be895bSXinliang David Li   if (g != 0)
245e3c5e80SVedant Kumar     return 1;          // CHECK:  [[@LINE]]|  0|   return 1;
25abf6d973SXinliang David Li   return 0;
26abf6d973SXinliang David Li }
27