diff options
author | Zachary Turner <zturner@google.com> | 2017-08-28 18:49:04 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2017-08-28 18:49:04 +0000 |
commit | a7b041748d97ac0671e1d59233be0f9a7653ecd8 (patch) | |
tree | e50a75ae75c4be9f0d0a0db62d8034ad4ab93f97 /llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp | |
parent | c35e4de38872a56e09b7f652e28d0103fa5eeef8 (diff) | |
download | llvm-a7b041748d97ac0671e1d59233be0f9a7653ecd8.zip llvm-a7b041748d97ac0671e1d59233be0f9a7653ecd8.tar.gz llvm-a7b041748d97ac0671e1d59233be0f9a7653ecd8.tar.bz2 |
[CodeView] Don't output S_UDT symbols for forward decls.
S_UDT symbols are the debugger's "index" for all the structs,
typedefs, classes, and enums in a program. If any of those
structs/classes don't have a complete declaration, or if there
is a typedef to something that doesn't have a complete definition,
then emitting the S_UDT is unhelpful because it doesn't give
the debugger enough information to do anything useful. On the
other hand, it results in a huge size blow-up in the resulting
PDB, which is exacerbated by an order of magnitude when linking
with /DEBUG:FASTLINK.
With this patch, we drop S_UDT records for types that refer either
directly or indirectly (e.g. through a typedef, pointer, etc) to
a class/struct/union/enum without a complete definition. This
brings us about 50% of the way towards parity with /DEBUG:FASTLINK
PDBs generated from cl-compiled object files.
Differential Revision: https://reviews.llvm.org/D37162
llvm-svn: 311904
Diffstat (limited to 'llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp')
0 files changed, 0 insertions, 0 deletions