// 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
