1 // RUN: %clang_profgen -x c++  -std=c++11 -fuse-ld=gold -fcoverage-mapping -o %t %s
2 // RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
3 // RUN: llvm-profdata merge -o %t.profdata %t.profraw
4 // RUN: llvm-cov show %t -instr-profile %t.profdata -filename-equivalence 2>&1 | FileCheck %s
5 // 32 bit testing.
6 // RUN: %clang_profgen -x c++  -std=c++11 -fuse-ld=gold -fcoverage-mapping -m32 -o %t.32 %s
7 // RUN: env LLVM_PROFILE_FILE=%t.32.profraw %run %t.32
8 // RUN: llvm-profdata merge -o %t.32.profdata %t.32.profraw
9 // RUN: llvm-cov show %t.32 -instr-profile %t.32.profdata -filename-equivalence 2>&1 | FileCheck %s
10 
11 struct Base {
12   int B;
13   Base() : B(0) {}
14   Base(const Base &b2) {
15     B = b2.B + 5;
16   }
17   Base(Base &&b2) {
18     B = b2.B + 10;
19   }
20 };
21 
22 struct Derived : public Base {
23   Derived(const Derived &) = default; // CHECK:  2| [[@LINE]]|  Derived(const Derived &) = default;
24   Derived(Derived &&) = default;      // CHECK:  1| [[@LINE]]|  Derived(Derived &&) = default;
25   Derived() = default;                // CHECK:  1| [[@LINE]]|  Derived() = default
26 };
27 
28 Derived dd;
29 int main() {
30   Derived dd2(dd);
31   Derived dd3(dd2);
32   Derived dd4(static_cast<Derived &&>(dd3));
33 
34   if (dd.B != 0 || dd2.B != 5 || dd3.B != 10 || dd4.B != 20)
35     return 1;                         // CHECK: 0| [[@LINE]]|     return 1;
36   return 0;
37 }
38