Fork of llvm with experimental commits and workarounds for RPCS3
Go to file
Zachary Turner fa65a3c140 [CodeView] Finish decoupling TypeDatabase from TypeDumper.
Previously the type dumper itself was passed around to a lot of different
places and manipulated in ways that were more appropriate on the type
database. For example, the entire TypeDumper was passed into the symbol
dumper, when all the symbol dumper wanted to do was lookup the name of a
TypeIndex so it could print it. That's what the TypeDatabase is for --
mapping type indices to names.

Another example is how if the user runs llvm-pdbdump with the option to
dump symbols but not types, we still have to visit all types so that we
can print minimal information about the type of a symbol, but just without
dumping full symbol records. The way we did this before is by hacking it
up so that we run everything through the type dumper with a null printer,
so that the output goes to /dev/null. But really, we don't need to dump
anything, all we want to do is build the type database. Since
TypeDatabaseVisitor now exists independently of TypeDumper, we can do
this. We just build a custom visitor callback pipeline that includes a
database visitor but not a dumper.

All the hackery around printers etc goes away. After this patch, we could
probably even delete the entire CVTypeDumper class since really all it is
at this point is a thin wrapper that hides the details of how to build a
useful visitation pipeline. It's not a priority though, so CVTypeDumper
remains for now.

After this patch we will be able to easily plug in a different style of
type dumper by only implementing the proper visitation methods to dump
one-line output and then sticking it on the pipeline.

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

llvm-svn: 291724
2017-01-11 23:24:22 +00:00
bindings Fix go bindings after r289702 (hopefully, don't really know how to build 2016-12-15 06:54:29 +00:00
cmake Add -Wl,-color-diagnostics if a linker supports the option. 2017-01-11 22:55:35 +00:00
docs LangRef: Note that calls also support fast math flags 2017-01-10 18:06:38 +00:00
examples BrainF example: fixing segfault caused by outdated code with missing MCJIT dependency 2016-12-15 19:29:42 +00:00
include [CodeView] Finish decoupling TypeDatabase from TypeDumper. 2017-01-11 23:24:22 +00:00
lib [CodeView] Finish decoupling TypeDatabase from TypeDumper. 2017-01-11 23:24:22 +00:00
projects
resources
runtimes [CMake] Handle common options for runtimes build 2017-01-10 19:47:05 +00:00
test AMDGPU: Fix shrinking of addc/subb. 2017-01-11 22:58:12 +00:00
tools [CodeView] Finish decoupling TypeDatabase from TypeDumper. 2017-01-11 23:24:22 +00:00
unittests Use EXPECT_EQ instead of ASSERT_EQ in a unit test. 2017-01-11 22:02:51 +00:00
utils build_llvm_package.bat: Add note about what SWIG version to use 2017-01-11 16:42:31 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Build KillTheDoctor with mingw-w64 2016-12-22 19:11:42 +00:00
CODE_OWNERS.TXT
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
README.txt
RELEASE_TESTERS.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.