1853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola// RUN: %clang_cc1 -emit-llvm -disable-red-zone -femit-coverage-data %s -o - | FileCheck %s
283c546afef39d6b7be69f3f399804ebf037c4022Nick Lewycky// RUN: %clang_cc1 -emit-llvm -disable-red-zone -femit-coverage-data -coverage-no-function-names-in-data %s -o - | FileCheck %s --check-prefix WITHOUTNAMES
3853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola
4853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola// <rdar://problem/12843084>
5853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola
6853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindolaint test1(int a) {
7853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola  switch (a % 2) {
8853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola  case 0:
9853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola    ++a;
10853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola  case 1:
11853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola    a /= 2;
12853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola  }
13853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola  return a;
14853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola}
15853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola
16853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola// Check that the noredzone flag is set on the generated functions.
17853c37018bd4c6f1a2118568d5ac59525f2a3b51Rafael Espindola
183bba3efba0e57071d60b355ed62639f93e37711cBill Wendling// CHECK: void @__llvm_gcov_indirect_counter_increment(i32* %{{.*}}, i64** %{{.*}}) unnamed_addr [[NRZ:#[0-9]+]]
1983c546afef39d6b7be69f3f399804ebf037c4022Nick Lewycky
2083c546afef39d6b7be69f3f399804ebf037c4022Nick Lewycky// Inside llvm_gcov_writeout, check that -coverage-no-function-names-in-data
2183c546afef39d6b7be69f3f399804ebf037c4022Nick Lewycky// passes null as the function name.
223bba3efba0e57071d60b355ed62639f93e37711cBill Wendling// CHECK: void @__llvm_gcov_writeout() unnamed_addr [[NRZ]]
2383c546afef39d6b7be69f3f399804ebf037c4022Nick Lewycky// CHECK: call void @llvm_gcda_emit_function({{.*}}, i8* getelementptr {{.*}}, {{.*}})
2483c546afef39d6b7be69f3f399804ebf037c4022Nick Lewycky// WITHOUTNAMES: void @__llvm_gcov_writeout() unnamed_addr
2583c546afef39d6b7be69f3f399804ebf037c4022Nick Lewycky// WITHOUTNAMES: call void @llvm_gcda_emit_function({{.*}}, i8* null, {{.*}})
2683c546afef39d6b7be69f3f399804ebf037c4022Nick Lewycky
27e4d6112a4eaf341afacd95c9585efc28ec2eac5aBill Wendling// CHECK: void @__llvm_gcov_flush() unnamed_addr [[NRZ]]
283bba3efba0e57071d60b355ed62639f93e37711cBill Wendling// CHECK: void @__llvm_gcov_init() unnamed_addr [[NRZ]]
29f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling
303bba3efba0e57071d60b355ed62639f93e37711cBill Wendling// CHECK: attributes [[NRZ]] = { {{.*}}noredzone{{.*}} }
31