[llvm] r258406 - [GCOV] Avoid emitting profile arcs for module and skeleton CUs

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 25 14:35:13 PST 2016


On Mon, Jan 25, 2016 at 2:22 PM, Vedant Kumar <vsk at apple.com> wrote:
> Hans, I'd be more comfortable with you merging this in.

No problem, merged in r258731.

> I'm not sure how to specify release_38 as the target branch to utils/release/merge.sh.
>
> thanks
> vedant
>
> p.s: My officemates aren't sure how to do this either. Could you add a note about this to HowToReleaseLLVM.rst?

The target branch isn't specified by an argument, but rather it
expects the branch to be checked out into a directory called llvm.src
(or cfe.src, etc.), and will merge into that.

For example, to merge your patch I did:
$ svn co http://llvm.org/svn/llvm-project/llvm/branches/release_38 llvm.src
$ llvm.src/utils/release/merge.sh --proj llvm --rev 258406
[... the scripts merges locally into llvm.src and says to commit with
'svn commit -F /tmp/merge.Im2WHe' ]
[ run the lit tests ]]
$ cd llvm.src
$ svn commit -F /tmp/merge.Im2WHe

I will try to get this documented at some point.

Thanks,
Hans


>> On Jan 25, 2016, at 1:15 PM, Hans Wennborg <hans at chromium.org> wrote:
>>
>> On Mon, Jan 25, 2016 at 12:01 PM, David Blaikie <dblaikie at gmail.com> wrote:
>>> This is more in Adrian's territory (he reviewed it & it's the modules debug
>>> info stuff which he's worked on that this is a fix for), but yes - the
>>> change seems reasonable enough & the bug seems problematic/annoying enough
>>> that it'd be worth taking for 3.8
>>
>> Thanks!
>>
>> Vedant, please go ahead and merge this with utils/release/merge.sh (or
>> let me know if you'd prefer me to do it).
>>
>> Cheers,
>> Hans
>>
>>
>>> On Mon, Jan 25, 2016 at 11:55 AM, Hans Wennborg via llvm-commits
>>> <llvm-commits at lists.llvm.org> wrote:
>>>>
>>>> I'm not sure who's the code owner here, and I'm not qualified to
>>>> review it myself because I don't know what arc and note files are :-)
>>>>
>>>> Just for a second opinion; David, does this look reasonable to you?
>>>>
>>>> On Mon, Jan 25, 2016 at 10:14 AM, Vedant Kumar <vsk at apple.com> wrote:
>>>>> Hi,
>>>>>
>>>>> I'd like to propose taking this commit for the 3.8 branch.
>>>>>
>>>>> It stops the compiler from writing out gcov-style arc and note files for
>>>>> module CU's.
>>>>>
>>>>> thanks
>>>>> vedant
>>>>>
>>>>>> On Jan 21, 2016, at 9:04 AM, Vedant Kumar via llvm-commits
>>>>>> <llvm-commits at lists.llvm.org> wrote:
>>>>>>
>>>>>> Author: vedantk
>>>>>> Date: Thu Jan 21 11:04:42 2016
>>>>>> New Revision: 258406
>>>>>>
>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=258406&view=rev
>>>>>> Log:
>>>>>> [GCOV] Avoid emitting profile arcs for module and skeleton CUs
>>>>>>
>>>>>> Do not emit profile arc files and note files for module and skeleton
>>>>>> CU's.
>>>>>>
>>>>>> Our users report seeing unexpected *.gcda and *.gcno files in their
>>>>>> projects when using gcov-style profiling with modules or frameworks.
>>>>>> The unwanted files come from these modules. This is not very helpful
>>>>>> for end-users. Further, we've seen reports of instrumented programs
>>>>>> crashing while writing these files out (due to I/O failures).
>>>>>
>>>>> ^ We've also seen crashes because the gcda is not meant to be
>>>>> backwards-compatible. This results in "cannot merge previous GCDA" errors.
>>>>>
>>>>>>
>>>>>> rdar://problem/22838296
>>>>>>
>>>>>> Reviewed-by: aprantl
>>>>>>
>>>>>> Differential Revision: http://reviews.llvm.org/D15997
>>>>>>
>>>>>> Added:
>>>>>>   llvm/trunk/test/Transforms/GCOVProfiling/modules.ll
>>>>>> Modified:
>>>>>>   llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp
>>>>>>
>>>>>> Modified: llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp
>>>>>> URL:
>>>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp?rev=258406&r1=258405&r2=258406&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> --- llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp
>>>>>> (original)
>>>>>> +++ llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp Thu Jan
>>>>>> 21 11:04:42 2016
>>>>>> @@ -494,6 +494,11 @@ void GCOVProfiler::emitProfileNotes() {
>>>>>>    // LTO, we'll generate the same .gcno files.
>>>>>>
>>>>>>    auto *CU = cast<DICompileUnit>(CU_Nodes->getOperand(i));
>>>>>> +
>>>>>> +    // Skip module skeleton (and module) CUs.
>>>>>> +    if (CU->getDWOId())
>>>>>> +      continue;
>>>>>> +
>>>>>>    std::error_code EC;
>>>>>>    raw_fd_ostream out(mangleName(CU, "gcno"), EC, sys::fs::F_None);
>>>>>>    std::string EdgeDestinations;
>>>>>> @@ -853,6 +858,11 @@ Function *GCOVProfiler::insertCounterWri
>>>>>>  if (CU_Nodes) {
>>>>>>    for (unsigned i = 0, e = CU_Nodes->getNumOperands(); i != e; ++i) {
>>>>>>      auto *CU = cast<DICompileUnit>(CU_Nodes->getOperand(i));
>>>>>> +
>>>>>> +      // Skip module skeleton (and module) CUs.
>>>>>> +      if (CU->getDWOId())
>>>>>> +        continue;
>>>>>> +
>>>>>>      std::string FilenameGcda = mangleName(CU, "gcda");
>>>>>>      uint32_t CfgChecksum = FileChecksums.empty() ? 0 :
>>>>>> FileChecksums[i];
>>>>>>      Builder.CreateCall(StartFile,
>>>>>>
>>>>>> Added: llvm/trunk/test/Transforms/GCOVProfiling/modules.ll
>>>>>> URL:
>>>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GCOVProfiling/modules.ll?rev=258406&view=auto
>>>>>>
>>>>>> ==============================================================================
>>>>>> --- llvm/trunk/test/Transforms/GCOVProfiling/modules.ll (added)
>>>>>> +++ llvm/trunk/test/Transforms/GCOVProfiling/modules.ll Thu Jan 21
>>>>>> 11:04:42 2016
>>>>>> @@ -0,0 +1,12 @@
>>>>>> +; RUN: opt -insert-gcov-profiling -o - < %s | llvm-dis | FileCheck
>>>>>> -check-prefix=EMIT-ARCS %s
>>>>>> +
>>>>>> +; EMIT-ARCS-NOT: call void @llvm_gcda_start_file
>>>>>> +
>>>>>> +!llvm.dbg.cu = !{!0}
>>>>>> +!llvm.module.flags = !{!3, !4}
>>>>>> +
>>>>>> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1,
>>>>>> producer: "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename:
>>>>>> "my.dwo", emissionKind: 1, enums: !2, retainedTypes: !2, subprograms: !2,
>>>>>> globals: !2, imports: !2, dwoId: 43981)
>>>>>> +!1 = !DIFile(filename: "<stdin>", directory: "/")
>>>>>> +!2 = !{}
>>>>>> +!3 = !{i32 2, !"Dwarf Version", i32 4}
>>>>>> +!4 = !{i32 2, !"Debug Info Version", i32 3}
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> llvm-commits mailing list
>>>>>> llvm-commits at lists.llvm.org
>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>>>
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>>
>


More information about the llvm-commits mailing list