diff options
| author | Wolfgang Pieb <Wolfgang.Pieb@sony.com> | 2018-06-20 22:56:37 +0000 |
|---|---|---|
| committer | Wolfgang Pieb <Wolfgang.Pieb@sony.com> | 2018-06-20 22:56:37 +0000 |
| commit | 61d8c8d9b3777842536261d4c386f4e1c2d00656 (patch) | |
| tree | 07752665b93c88cd70a75407fcb370e3bf4b7f4c /llvm/tools/llvm-dwarfdump/Statistics.cpp | |
| parent | e16a7d3faf5f0e9145cd3ed5294457590b47b781 (diff) | |
| download | bcm5719-llvm-61d8c8d9b3777842536261d4c386f4e1c2d00656.tar.gz bcm5719-llvm-61d8c8d9b3777842536261d4c386f4e1c2d00656.zip | |
[DWARF] Improved error reporting for range lists.
Errors found processing the DW_AT_ranges attribute are propagated by lower level
routines and reported by their callers.
Reviewer: JDevlieghere
Differential Revision: https://reviews.llvm.org/D48344
llvm-svn: 335188
Diffstat (limited to 'llvm/tools/llvm-dwarfdump/Statistics.cpp')
| -rw-r--r-- | llvm/tools/llvm-dwarfdump/Statistics.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/llvm/tools/llvm-dwarfdump/Statistics.cpp b/llvm/tools/llvm-dwarfdump/Statistics.cpp index 5a274e1935d..5af853d4ef2 100644 --- a/llvm/tools/llvm-dwarfdump/Statistics.cpp +++ b/llvm/tools/llvm-dwarfdump/Statistics.cpp @@ -34,8 +34,14 @@ struct GlobalStats { /// Extract the low pc from a Die. static uint64_t getLowPC(DWARFDie Die) { - if (Die.getAddressRanges().size()) - return Die.getAddressRanges()[0].LowPC; + auto RangesOrError = Die.getAddressRanges(); + DWARFAddressRangesVector Ranges; + if (RangesOrError) + Ranges = RangesOrError.get(); + else + llvm::consumeError(RangesOrError.takeError()); + if (Ranges.size()) + return Ranges[0].LowPC; return dwarf::toAddress(Die.find(dwarf::DW_AT_low_pc), 0); } @@ -137,7 +143,13 @@ static void collectStatsRecursive(DWARFDie Die, std::string Prefix, } // PC Ranges. - auto Ranges = Die.getAddressRanges(); + auto RangesOrError = Die.getAddressRanges(); + if (!RangesOrError) { + llvm::consumeError(RangesOrError.takeError()); + return; + } + + auto Ranges = RangesOrError.get(); uint64_t BytesInThisScope = 0; for (auto Range : Ranges) BytesInThisScope += Range.HighPC - Range.LowPC; |

