16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// Ensure that implicit methods aren't instrumented.
26bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
36bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -x c++ %s -triple %itanium_abi_triple -main-file-name cxx-implicit.cpp -o - -emit-llvm -fprofile-instr-generate | FileCheck %s
46bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
56bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// An implicit constructor is generated for Base. We should not emit counters
66bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// for it.
76bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NOT: @__llvm_profile_counters__ZN4BaseC2Ev =
86bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
96bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct Base {
106bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  virtual void foo();
116bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines};
126bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
136bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct Derived : public Base {
146bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  Derived();
156bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines};
166bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
176bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen HinesDerived::Derived() {}
18