// RUN: %clang_cc1 -emit-llvm %s -std=c++11 -o - -fno-rtti \
// RUN:     -fprofile-instrument=clang -fcoverage-mapping -disable-llvm-passes \
// RUN:     -triple=x86_64-windows-msvc | FileCheck %s --check-prefix=MSVC
// RUN: %clang_cc1 -emit-llvm %s -std=c++11 -o - -fno-rtti \
// RUN:     -fprofile-instrument=clang -fcoverage-mapping -disable-llvm-passes \
// RUN:     -triple=x86_64-linux-gnu | FileCheck %s --check-prefix=LINUX

// Check that clang doesn't emit counters or __profn_ variables for deleting
// destructor variants in both C++ ABIs.

struct ABC {
  virtual ~ABC() = default;
  virtual void pure() = 0;
};
struct DerivedABC : ABC {
  ~DerivedABC() override = default;
  void pure() override {}
};
DerivedABC *useABCVTable() { return new DerivedABC(); }

// MSVC-NOT: @"__profn_??_G{{.*}}" =
// MSVC: @"__profn_??1DerivedABC@@{{.*}}" =
// MSVC-NOT: @"__profn_??_G{{.*}}" =
// MSVC: @"__profn_??1ABC@@{{.*}}" =
// MSVC-NOT: @"__profn_??_G{{.*}}" =

// MSVC-LABEL: define linkonce_odr dso_local i8* @"??_GDerivedABC@@UEAAPEAXI@Z"(%struct.DerivedABC* %this, {{.*}})
// MSVC-NOT:   call void @llvm.instrprof.increment({{.*}})
// MSVC:   call void @"??1DerivedABC@@UEAA@XZ"({{.*}})
// MSVC:   ret void

// MSVC-LABEL: define linkonce_odr dso_local i8* @"??_GABC@@UEAAPEAXI@Z"(%struct.ABC* %this, {{.*}})
// MSVC-NOT:   call void @llvm.instrprof.increment({{.*}})
// MSVC:   call void @llvm.trap()
// MSVC-NEXT:   unreachable

// MSVC-LABEL: define linkonce_odr dso_local void @"??1DerivedABC@@UEAA@XZ"({{.*}})
// MSVC:   call void @llvm.instrprof.increment({{.*}})
// MSVC:   call void @"??1ABC@@UEAA@XZ"({{.*}})
// MSVC:   ret void

// MSVC-LABEL: define linkonce_odr dso_local void @"??1ABC@@UEAA@XZ"({{.*}})
// MSVC:   call void @llvm.instrprof.increment({{.*}})
// MSVC:   ret void


// D2 is the base, D1 and D0 are deleting and complete dtors.

// LINUX-NOT: @__profn_{{.*D[01]Ev}} =
// LINUX: @__profn__ZN10DerivedABCD2Ev =
// LINUX-NOT: @__profn_{{.*D[01]Ev}} =
// LINUX: @__profn__ZN3ABCD2Ev =
// LINUX-NOT: @__profn_{{.*D[01]Ev}} =

// LINUX-LABEL: define linkonce_odr void @_ZN10DerivedABCD1Ev(%struct.DerivedABC* %this)
// LINUX-NOT:   call void @llvm.instrprof.increment({{.*}})
// LINUX:   call void @_ZN10DerivedABCD2Ev({{.*}})
// LINUX:   ret void

// LINUX-LABEL: define linkonce_odr void @_ZN10DerivedABCD0Ev(%struct.DerivedABC* %this)
// LINUX-NOT:   call void @llvm.instrprof.increment({{.*}})
// LINUX:   call void @_ZN10DerivedABCD1Ev({{.*}})
// LINUX:   call void @_ZdlPv({{.*}})
// LINUX:   ret void

// LINUX-LABEL: define linkonce_odr void @_ZN3ABCD1Ev(%struct.ABC* %this)
// LINUX-NOT:   call void @llvm.instrprof.increment({{.*}})
// LINUX:   call void @llvm.trap()
// LINUX-NEXT:   unreachable

// LINUX-LABEL: define linkonce_odr void @_ZN3ABCD0Ev(%struct.ABC* %this)
// LINUX-NOT:   call void @llvm.instrprof.increment({{.*}})
// LINUX:   call void @llvm.trap()
// LINUX-NEXT:   unreachable

// LINUX-LABEL: define linkonce_odr void @_ZN10DerivedABCD2Ev(%struct.DerivedABC* %this)
// LINUX:   call void @llvm.instrprof.increment({{.*}})
// LINUX:   call void @_ZN3ABCD2Ev({{.*}})
// LINUX:   ret void

// LINUX-LABEL: define linkonce_odr void @_ZN3ABCD2Ev(%struct.ABC* %this)
// LINUX:   call void @llvm.instrprof.increment({{.*}})
// LINUX:   ret void
