summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorJustin Bogner <mail@justinbogner.com>2015-01-09 01:46:40 +0000
committerJustin Bogner <mail@justinbogner.com>2015-01-09 01:46:40 +0000
commit203f91e311f860a8d621ad2dfb1da22b6bc03fb9 (patch)
tree8f20f555806dfefe6b835869732624e259496a6e /clang/test
parent4f217684c78f398c956bbe889b9c6165df1a3a77 (diff)
downloadbcm5719-llvm-203f91e311f860a8d621ad2dfb1da22b6bc03fb9.tar.gz
bcm5719-llvm-203f91e311f860a8d621ad2dfb1da22b6bc03fb9.zip
InstrProf: Don't emit counter increments in dead code
We were previously emitting counter increments even if we didn't have an insertion point, which would result in a CallInst with no parent. This leads to a crash, as in pr22166, if we try to do GlobalDCE. llvm-svn: 225495
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Profile/c-unreachable-after-switch.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/test/Profile/c-unreachable-after-switch.c b/clang/test/Profile/c-unreachable-after-switch.c
new file mode 100644
index 00000000000..07704375105
--- /dev/null
+++ b/clang/test/Profile/c-unreachable-after-switch.c
@@ -0,0 +1,15 @@
+// RUN: %clang_cc1 -O3 -triple x86_64-apple-macosx10.10 -main-file-name c-unreachable-after-switch.c %s -o - -emit-llvm -fprofile-instr-generate | FileCheck %s
+
+// CHECK: @[[C:__llvm_profile_counters_foo]] = hidden global [3 x i64] zeroinitializer
+
+// CHECK-LABEL: @foo()
+// CHECK: store {{.*}} @[[C]], i64 0, i64 0
+void foo() {
+ // CHECK: store {{.*}} @[[C]], i64 0, i64 2
+ switch (0) {
+ default:
+ return;
+ }
+ // We shouldn't emit the unreachable counter. This used to crash in GlobalDCE.
+ // CHECK-NOT: store {{.*}} @[[SWC]], i64 0, i64 1}
+}
OpenPOWER on IntegriCloud