[llvm] r206641 - [DWARF parser] Respect address ranges specified in compile unit DIE.
Eric Christopher
echristo at gmail.com
Fri Apr 18 13:39:02 PDT 2014
Woot.
This is great Alexey, thanks.
-eric
On Fri, Apr 18, 2014 at 1:30 PM, Alexey Samsonov <samsonov at google.com> wrote:
> Author: samsonov
> Date: Fri Apr 18 15:30:27 2014
> New Revision: 206641
>
> URL: http://llvm.org/viewvc/llvm-project?rev=206641&view=rev
> Log:
> [DWARF parser] Respect address ranges specified in compile unit DIE.
>
> When address ranges for compile unit are specified in compile unit DIE
> itself, there is no need to collect ranges from children subprogram DIEs.
>
> This change speeds up llvm-symbolizer on Clang-produced binaries with
> full debug info. For instance, symbolizing a first address in a 1Gb binary
> is now 2x faster (1s vs. 2s).
>
> Modified:
> llvm/trunk/lib/DebugInfo/DWARFUnit.cpp
>
> Modified: llvm/trunk/lib/DebugInfo/DWARFUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFUnit.cpp?rev=206641&r1=206640&r2=206641&view=diff
> ==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARFUnit.cpp (original)
> +++ llvm/trunk/lib/DebugInfo/DWARFUnit.cpp Fri Apr 18 15:30:27 2014
> @@ -299,6 +299,13 @@ void DWARFUnit::clearDIEs(bool KeepCUDie
> }
>
> void DWARFUnit::collectAddressRanges(DWARFAddressRangesVector &CURanges) {
> + // First, check if CU DIE describes address ranges for the unit.
> + const auto &CUDIERanges = getCompileUnitDIE()->getAddressRanges(this);
> + if (!CUDIERanges.empty()) {
> + CURanges.insert(CURanges.end(), CUDIERanges.begin(), CUDIERanges.end());
> + return;
> + }
> +
> // This function is usually called if there in no .debug_aranges section
> // in order to produce a compile unit level set of address ranges that
> // is accurate. If the DIEs weren't parsed, then we don't want all dies for
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list