<p dir="ltr"><br>
On Mar 16, 2015 4:57 PM, "Justin Bogner" <<a href="mailto:mail@justinbogner.com">mail@justinbogner.com</a>> wrote:<br>
><br>
> Author: bogner<br>
> Date: Mon Mar 16 18:52:21 2015<br>
> New Revision: 232439<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=232439&view=rev">http://llvm.org/viewvc/llvm-project?rev=232439&view=rev</a><br>
> Log:<br>
> GCOV: Expose the -coverage-exit-block-before-body flag in clang -cc1<br>
><br>
> This exposes the optional exit block placement logic from r232438 as a<br>
> clang -cc1 option. There is a test on the llvm side, but there isn't<br>
> really a way to inspect the gcov options from clang to test it here as<br>
> well.</p>
<p dir="ltr">I'm missing something probably - what's the benefit of that over just using -mllvm to pass this flag to llvm directly? (If I'm remembering how this stuff works)</p>
<p dir="ltr">><br>
> Modified:<br>
>     cfe/trunk/include/clang/Driver/CC1Options.td<br>
>     cfe/trunk/include/clang/Frontend/CodeGenOptions.def<br>
>     cfe/trunk/lib/CodeGen/BackendUtil.cpp<br>
>     cfe/trunk/lib/Frontend/CompilerInvocation.cpp<br>
><br>
> Modified: cfe/trunk/include/clang/Driver/CC1Options.td<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=232439&r1=232438&r2=232439&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=232439&r1=232438&r2=232439&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/include/clang/Driver/CC1Options.td (original)<br>
> +++ cfe/trunk/include/clang/Driver/CC1Options.td Mon Mar 16 18:52:21 2015<br>
> @@ -182,6 +182,8 @@ def coverage_cfg_checksum : Flag<["-"],<br>
>    HelpText<"Emit CFG checksum for functions in .gcno files.">;<br>
>  def coverage_no_function_names_in_data : Flag<["-"], "coverage-no-function-names-in-data">,<br>
>    HelpText<"Emit function names in .gcda files.">;<br>
> +def coverage_exit_block_before_body : Flag<["-"], "coverage-exit-block-before-data">,<br>
> +  HelpText<"Emit the exit block before the body blocks in .gcno files.">;<br>
>  def coverage_version_EQ : Joined<["-"], "coverage-version=">,<br>
>    HelpText<"Four-byte version string for gcov files.">;<br>
>  def test_coverage : Flag<["-"], "test-coverage">,<br>
><br>
> Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.def<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=232439&r1=232438&r2=232439&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=232439&r1=232438&r2=232439&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/include/clang/Frontend/CodeGenOptions.def (original)<br>
> +++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def Mon Mar 16 18:52:21 2015<br>
> @@ -35,6 +35,7 @@ CODEGENOPT(AsmVerbose        , 1, 0) ///<br>
>  CODEGENOPT(ObjCAutoRefCountExceptions , 1, 0) ///< Whether ARC should be EH-safe.<br>
>  CODEGENOPT(CoverageExtraChecksum, 1, 0) ///< Whether we need a second checksum for functions in GCNO files.<br>
>  CODEGENOPT(CoverageNoFunctionNamesInData, 1, 0) ///< Do not include function names in GCDA files.<br>
> +CODEGENOPT(CoverageExitBlockBeforeBody, 1, 0) ///< Whether to emit the exit block before the body blocks in GCNO files.<br>
>  CODEGENOPT(CUDAIsDevice      , 1, 0) ///< Set when compiling for CUDA device.<br>
>  CODEGENOPT(CXAAtExit         , 1, 1) ///< Use __cxa_atexit for calling destructors.<br>
>  CODEGENOPT(CXXCtorDtorAliases, 1, 0) ///< Emit complete ctors/dtors as linker<br>
><br>
> Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=232439&r1=232438&r2=232439&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=232439&r1=232438&r2=232439&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)<br>
> +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Mon Mar 16 18:52:21 2015<br>
> @@ -380,6 +380,7 @@ void EmitAssemblyHelper::CreatePasses()<br>
>      Options.NoRedZone = CodeGenOpts.DisableRedZone;<br>
>      Options.FunctionNamesInData =<br>
>          !CodeGenOpts.CoverageNoFunctionNamesInData;<br>
> +    Options.ExitBlockBeforeBody = CodeGenOpts.CoverageExitBlockBeforeBody;<br>
>      MPM->add(createGCOVProfilerPass(Options));<br>
>      if (CodeGenOpts.getDebugInfo() == CodeGenOptions::NoDebugInfo)<br>
>        MPM->add(createStripSymbolsPass(true));<br>
><br>
> Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=232439&r1=232438&r2=232439&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=232439&r1=232438&r2=232439&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)<br>
> +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Mon Mar 16 18:52:21 2015<br>
> @@ -494,6 +494,8 @@ static bool ParseCodeGenArgs(CodeGenOpti<br>
>      Opts.CoverageExtraChecksum = Args.hasArg(OPT_coverage_cfg_checksum);<br>
>      Opts.CoverageNoFunctionNamesInData =<br>
>          Args.hasArg(OPT_coverage_no_function_names_in_data);<br>
> +    Opts.CoverageExitBlockBeforeBody =<br>
> +        Args.hasArg(OPT_coverage_exit_block_before_body);<br>
>      if (Args.hasArg(OPT_coverage_version_EQ)) {<br>
>        StringRef CoverageVersion = Args.getLastArgValue(OPT_coverage_version_EQ);<br>
>        if (CoverageVersion.size() != 4) {<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</p>