llvm-project/llvm
Pavel Labath 9025f9559d [dwarf] Unify unknown dwarf enum formatting code
Summary:
We have had at least three pieces of code (in DWARFAbbreviationDeclaration,
DWARFAcceleratorTable and DWARFDie) that have hand-rolled support for
dumping unknown dwarf enum values. While not terrible, they are a bit
distracting and enable small differences to creep in (Unknown_ffff vs.
Unknown_0xffff). I ended up needing to add a fourth place
(DWARFVerifier), so it seems it would be a good time to centralize.

This patch creates an alternative to the XXXString dumping functions in
the BinaryFormat library, which formats an unknown value as
DW_TYPE_unknown_1234, instead of just an empty string. It is based on
the formatv function, as that allows us to avoid materializing the
string for unknown values (and because this way I don't have to invent a
name for the new functions :P).

In this patch I add formatters for dwarf attributes, forms, tags, and
index attributes as these are the ones in use currently, but adding
other enums is straight-forward.

Reviewers: dblaikie, JDevlieghere, aprantl

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D44570

llvm-svn: 328090
2018-03-21 11:46:37 +00:00
..
bindings [bindings/go] Add a missing `,` in the test code to fix a go compile 2018-03-17 15:12:52 +00:00
cmake Accept any filepath in llvm_check_source_file_list 2018-03-19 21:35:30 +00:00
docs [TableGen] Pass result of std::unique to vector::erase instead of calculating a size and calling resize. 2018-03-20 20:24:10 +00:00
examples [ORC] Re-apply r327566 with a fix for test-global-ctors.ll. 2018-03-15 00:30:14 +00:00
include [dwarf] Unify unknown dwarf enum formatting code 2018-03-21 11:46:37 +00:00
lib [dwarf] Unify unknown dwarf enum formatting code 2018-03-21 11:46:37 +00:00
projects
resources
runtimes
test [SelectionDAG] Support multiple dangling debug info for one value 2018-03-21 09:44:34 +00:00
tools [llvm-readobj] - Teach llvm-readobj to dump .note.gnu.property sections. 2018-03-21 08:34:55 +00:00
unittests [dwarf] Unify unknown dwarf enum formatting code 2018-03-21 11:46:37 +00:00
utils [TableGen] Remove a defaulted function argument that is never called with another value. NFC 2018-03-21 05:13:04 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Move DataTypes.h from Support to llvm-c to fix layering. 2018-03-21 00:48:05 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.