r189320 - PR14569: Omit debug info for thunks

Dmitry Vyukov dvyukov at google.com
Tue Aug 27 01:45:39 PDT 2013


On Tue, Aug 27, 2013 at 12:19 PM, Alexey Samsonov <samsonov at google.com> wrote:
>
> On Tue, Aug 27, 2013 at 9:21 AM, David Blaikie <dblaikie at gmail.com> wrote:
>>
>> Author: dblaikie
>> Date: Tue Aug 27 00:21:11 2013
>> New Revision: 189320
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=189320&view=rev
>> Log:
>> PR14569: Omit debug info for thunks
>>
>> This was added in r166676 based on PR13942 on the basis that tools may
>> need debug information for any executable code/function for some fairly
>> broad/non-specific purposes. It seems to me (as noted in PR14569) that
>> the major/only purpose is in backtraces, which should generally not
>> apply to thunks as they won't appear in the stack themselves.
>
>
> Are you sure that thunks may not appear in backtraces? I think I saw them in
> stack traces,
> more specifically - in stack traces produced by ThreadSanitizer.
> It's possible that I'm wrong, though...

Debug info for thunks is necessary for sampling-based profilers and
gdb (if you step or stop in thunk).


>> By
>> removing them we fix PR14569 and reduce the size of Clang's debug info.
>>
>> Strangely enough this doesn't seem to have a substantial impact on
>> Clang's self-hosted debug info (at least looking at DWO file size) size
>> at all. Not sure if I failed to test this correctly but I only observed
>> a 0.004% change in DWO file size over Clang+LLVM.
>>
>> With thanks to Dinesh Dwivedi for work on this PR.
>>
>> Modified:
>>     cfe/trunk/lib/CodeGen/CGVTables.cpp
>>     cfe/trunk/test/CodeGenCXX/debug-info-thunk.cpp
>>
>> Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=189320&r1=189319&r2=189320&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CGVTables.cpp Tue Aug 27 00:21:11 2013
>> @@ -292,6 +292,7 @@ void CodeGenFunction::GenerateVarArgsThu
>>  void CodeGenFunction::GenerateThunk(llvm::Function *Fn,
>>                                      const CGFunctionInfo &FnInfo,
>>                                      GlobalDecl GD, const ThunkInfo
>> &Thunk) {
>> +  DebugInfo = NULL; // debug info for thunks is not required or desired
>>    const CXXMethodDecl *MD = cast<CXXMethodDecl>(GD.getDecl());
>>    const FunctionProtoType *FPT =
>> MD->getType()->getAs<FunctionProtoType>();
>>    QualType ThisType = MD->getThisType(getContext());
>>
>> Modified: cfe/trunk/test/CodeGenCXX/debug-info-thunk.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-thunk.cpp?rev=189320&r1=189319&r2=189320&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/CodeGenCXX/debug-info-thunk.cpp (original)
>> +++ cfe/trunk/test/CodeGenCXX/debug-info-thunk.cpp Tue Aug 27 00:21:11
>> 2013
>> @@ -14,4 +14,4 @@ struct C : A, B {
>>
>>  void C::f() { }
>>
>> -// CHECK: [ DW_TAG_subprogram ] [line 15] [def] [_ZThn{{4|8}}_N1C1fEv]
>> +// CHECK-NOT: [ DW_TAG_subprogram ] [line 15] [def]
>> [_ZThn{{4|8}}_N1C1fEv]
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
>
>
> --
> Alexey Samsonov, MSK



More information about the cfe-commits mailing list