]> granicus.if.org Git - clang/commitdiff
The flag "-coverage-function-names-in-data" is actually backwards -- we do
authorNick Lewycky <nicholas@mxc.ca>
Wed, 20 Mar 2013 02:14:38 +0000 (02:14 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Wed, 20 Mar 2013 02:14:38 +0000 (02:14 +0000)
emit function names in .gcda files by default, and the flag turns that off!
Rename the flag to make it match what it actually does. This keeps the default
format compatible with gcc 4.2.

Also add a test for this flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177475 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/CC1Options.td
include/clang/Frontend/CodeGenOptions.def
lib/CodeGen/BackendUtil.cpp
lib/Frontend/CompilerInvocation.cpp
test/CodeGen/code-coverage.c

index 444789348cb77899af7559c9fd316036f169598c..c2ac1cfe512a9258ba95dfb86cffb74914020e8a 100644 (file)
@@ -151,7 +151,7 @@ def coverage_file : Separate<["-"], "coverage-file">,
 def coverage_file_EQ : Joined<["-"], "coverage-file=">, Alias<coverage_file>;
 def coverage_cfg_checksum : Flag<["-"], "coverage-cfg-checksum">,
   HelpText<"Emit CFG checksum for functions in .gcno files.">;
-def coverage_function_names_in_data : Flag<["-"], "coverage-function-names-in-data">,
+def coverage_no_function_names_in_data : Flag<["-"], "coverage-no-function-names-in-data">,
   HelpText<"Emit function names in .gcda files.">;
 def coverage_version_EQ : Joined<["-"], "coverage-version=">,
   HelpText<"Four-byte version string for gcov files.">;
index 54785cffc1df37b827517f9d2da8b857de8badbf..92df6bb8719b11de68702483ee350e99a22547f4 100644 (file)
@@ -31,7 +31,7 @@ CODEGENOPT(Name, Bits, Default)
 CODEGENOPT(AsmVerbose        , 1, 0) ///< -dA, -fverbose-asm.
 CODEGENOPT(ObjCAutoRefCountExceptions , 1, 0) ///< Whether ARC should be EH-safe.
 CODEGENOPT(CoverageExtraChecksum, 1, 0) ///< Whether we need a second checksum for functions in GCNO files.
-CODEGENOPT(CoverageFunctionNamesInData, 1, 0) ///< Whether we should include function names in GCDA files.
+CODEGENOPT(CoverageNoFunctionNamesInData, 1, 0) ///< Do not include function names in GCDA files.
 CODEGENOPT(CUDAIsDevice      , 1, 0) ///< Set when compiling for CUDA device.
 CODEGENOPT(CXAAtExit         , 1, 1) ///< Use __cxa_atexit for calling destructors.
 CODEGENOPT(CXXCtorDtorAliases, 1, 0) ///< Emit complete ctors/dtors as linker
index 23d8b97ae137a06ca5378846c9e0dd9e736baa41..952d1fb15d6161b736c5447616fd137e5dac6d2a 100644 (file)
@@ -312,9 +312,8 @@ void EmitAssemblyHelper::CreatePasses(TargetMachine *TM) {
     memcpy(Options.Version, CodeGenOpts.CoverageVersion, 4);
     Options.UseCfgChecksum = CodeGenOpts.CoverageExtraChecksum;
     Options.NoRedZone = CodeGenOpts.DisableRedZone;
-    // FIXME: the clang flag name is backwards.
     Options.FunctionNamesInData =
-        !CodeGenOpts.CoverageFunctionNamesInData;
+        !CodeGenOpts.CoverageNoFunctionNamesInData;
     MPM->add(createGCOVProfilerPass(Options));
     if (CodeGenOpts.getDebugInfo() == CodeGenOptions::NoDebugInfo)
       MPM->add(createStripSymbolsPass(true));
index 9f1228a4034e7505932adde0e7f3acd66e5f1122..301a082cbd6d0829beb8642cf4d42467a1b3e61b 100644 (file)
@@ -386,8 +386,8 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
   if (Opts.EmitGcovArcs || Opts.EmitGcovNotes) {
   Opts.CoverageFile = Args.getLastArgValue(OPT_coverage_file);
     Opts.CoverageExtraChecksum = Args.hasArg(OPT_coverage_cfg_checksum);
-    Opts.CoverageFunctionNamesInData =
-        Args.hasArg(OPT_coverage_function_names_in_data);
+    Opts.CoverageNoFunctionNamesInData =
+        Args.hasArg(OPT_coverage_no_function_names_in_data);
     if (Args.hasArg(OPT_coverage_version_EQ)) {
       StringRef CoverageVersion = Args.getLastArgValue(OPT_coverage_version_EQ);
       if (CoverageVersion.size() != 4) {
index 2c5aa6b22714d7e700ff1ba2dbe5b80c1ad77eef..1b87d649dd9706988e2d27e827c091ac1ff7c4a6 100644 (file)
@@ -1,4 +1,5 @@
 // RUN: %clang_cc1 -emit-llvm -disable-red-zone -femit-coverage-data %s -o - | FileCheck %s
+// RUN: %clang_cc1 -emit-llvm -disable-red-zone -femit-coverage-data -coverage-no-function-names-in-data %s -o - | FileCheck %s --check-prefix WITHOUTNAMES
 
 // <rdar://problem/12843084>
 
@@ -15,7 +16,14 @@ int test1(int a) {
 // Check that the noredzone flag is set on the generated functions.
 
 // CHECK: void @__llvm_gcov_indirect_counter_increment(i32* %{{.*}}, i64** %{{.*}}) unnamed_addr [[NRZ:#[0-9]+]]
+
+// Inside llvm_gcov_writeout, check that -coverage-no-function-names-in-data
+// passes null as the function name.
 // CHECK: void @__llvm_gcov_writeout() unnamed_addr [[NRZ]]
+// CHECK: call void @llvm_gcda_emit_function({{.*}}, i8* getelementptr {{.*}}, {{.*}})
+// WITHOUTNAMES: void @__llvm_gcov_writeout() unnamed_addr
+// WITHOUTNAMES: call void @llvm_gcda_emit_function({{.*}}, i8* null, {{.*}})
+
 // CHECK: void @__llvm_gcov_flush() unnamed_addr [[NRZ]]
 // CHECK: void @__llvm_gcov_init() unnamed_addr [[NRZ]]