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