Merging r232439:
------------------------------------------------------------------------ r232439 | mail | 2015-03-16 19:52:21 -0400 (Mon, 16 Mar 2015) | 7 lines GCOV: Expose the -coverage-exit-block-before-body flag in clang -cc1 This exposes the optional exit block placement logic from r232438 as a clang -cc1 option. There is a test on the llvm side, but there isn't really a way to inspect the gcov options from clang to test it here as well. ------------------------------------------------------------------------ llvm-svn: 236305
This commit is contained in:
@@ -182,6 +182,8 @@ def coverage_cfg_checksum : Flag<["-"], "coverage-cfg-checksum">,
|
||||
HelpText<"Emit CFG checksum for functions in .gcno files.">;
|
||||
def coverage_no_function_names_in_data : Flag<["-"], "coverage-no-function-names-in-data">,
|
||||
HelpText<"Emit function names in .gcda files.">;
|
||||
def coverage_exit_block_before_body : Flag<["-"], "coverage-exit-block-before-data">,
|
||||
HelpText<"Emit the exit block before the body blocks in .gcno files.">;
|
||||
def coverage_version_EQ : Joined<["-"], "coverage-version=">,
|
||||
HelpText<"Four-byte version string for gcov files.">;
|
||||
def test_coverage : Flag<["-"], "test-coverage">,
|
||||
|
||||
@@ -35,6 +35,7 @@ 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(CoverageNoFunctionNamesInData, 1, 0) ///< Do not include function names in GCDA files.
|
||||
CODEGENOPT(CoverageExitBlockBeforeBody, 1, 0) ///< Whether to emit the exit block before the body blocks in GCNO 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
|
||||
|
||||
@@ -375,6 +375,7 @@ void EmitAssemblyHelper::CreatePasses() {
|
||||
Options.NoRedZone = CodeGenOpts.DisableRedZone;
|
||||
Options.FunctionNamesInData =
|
||||
!CodeGenOpts.CoverageNoFunctionNamesInData;
|
||||
Options.ExitBlockBeforeBody = CodeGenOpts.CoverageExitBlockBeforeBody;
|
||||
MPM->add(createGCOVProfilerPass(Options));
|
||||
if (CodeGenOpts.getDebugInfo() == CodeGenOptions::NoDebugInfo)
|
||||
MPM->add(createStripSymbolsPass(true));
|
||||
|
||||
@@ -489,6 +489,8 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
||||
Opts.CoverageExtraChecksum = Args.hasArg(OPT_coverage_cfg_checksum);
|
||||
Opts.CoverageNoFunctionNamesInData =
|
||||
Args.hasArg(OPT_coverage_no_function_names_in_data);
|
||||
Opts.CoverageExitBlockBeforeBody =
|
||||
Args.hasArg(OPT_coverage_exit_block_before_body);
|
||||
if (Args.hasArg(OPT_coverage_version_EQ)) {
|
||||
StringRef CoverageVersion = Args.getLastArgValue(OPT_coverage_version_EQ);
|
||||
if (CoverageVersion.size() != 4) {
|
||||
|
||||
Reference in New Issue
Block a user