diff options
author | Justin Bogner <mail@justinbogner.com> | 2014-04-25 07:20:05 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2014-04-25 07:20:05 +0000 |
commit | 3212b18bbf8458cc9eabbb8938ffcef68af7473c (patch) | |
tree | a6a34cfd94abda04f87803cc83aaf126c18a3573 /clang/test/Profile/cxx-implicit.cpp | |
parent | 6b88e3a5454219ee265e5624015a113266cce463 (diff) | |
download | bcm5719-llvm-3212b18bbf8458cc9eabbb8938ffcef68af7473c.tar.gz bcm5719-llvm-3212b18bbf8458cc9eabbb8938ffcef68af7473c.zip |
CodeGen: Avoid instrumenting implicit Decls more effectively
We don't assign counters for implicit Decls, but we were emitting code
to increment the (non-existent) counters and adding empty counter
lists in the output. This fixes the checks in assignRegionCounters and
emitInstrumentationData to do the right thing, and adds an assert for
the pathological case of emitting zero counters.
llvm-svn: 207203
Diffstat (limited to 'clang/test/Profile/cxx-implicit.cpp')
-rw-r--r-- | clang/test/Profile/cxx-implicit.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/Profile/cxx-implicit.cpp b/clang/test/Profile/cxx-implicit.cpp new file mode 100644 index 00000000000..79840ad9385 --- /dev/null +++ b/clang/test/Profile/cxx-implicit.cpp @@ -0,0 +1,17 @@ +// Ensure that implicit methods aren't instrumented. + +// RUN: %clang_cc1 -x c++ %s -triple %itanium_abi_triple -main-file-name cxx-implicit.cpp -o - -emit-llvm -fprofile-instr-generate | FileCheck %s + +// An implicit constructor is generated for Base. We should not emit counters +// for it. +// CHECK-NOT: @__llvm_profile_counters__ZN4BaseC2Ev = + +struct Base { + virtual void foo(); +}; + +struct Derived : public Base { + Derived(); +}; + +Derived::Derived() {} |