llvm-project/llvm/lib/DebugInfo/PDB
Zachary Turner 03a24052f3 [NativePDB] Improved support for nested type reconstruction.
In a previous patch, we pre-processed the TPI stream in order to build
the reverse mapping from nested type -> parent type so that we could
accurately reconstruct a DeclContext hierarchy.

However, there were some issues. An LF_NESTTYPE record is really just a
typedef, so although it happens to be used to indicate the name of the
nested type and referring to the global record which defines the type,
it is also used for every other kind of nested typedef. When we rebuild
the DeclContext hierarchy, we want it to be as accurate as possible,
which means that if we have something like:

  struct A {
    struct B {};
    using C = B;
  };

We don't want to create two CXXRecordDecls in the AST each with the
exact same definition. We just want to create one for B and then
define C as an alias to B. Previously, however, it would not be able
to distinguish between the two cases and it would treat A::B and
A::C as being two classes each with separate definitions. We address
the first half of improving the pre-processing logic so that only
actual definitions are treated this way.

Later, in a followup patch, we can handle the case of nested
typedefs since we're already going to be enumerating the field list
anyway and this patch introduces the general framework for
distinguishing between the two cases.

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

llvm-svn: 346786
2018-11-13 20:07:32 +00:00
..
DIA [PDB] Fix -Wunused-private-field in DIA 2018-10-23 17:20:16 +00:00
Native [NativePDB] Improved support for nested type reconstruction. 2018-11-13 20:07:32 +00:00
CMakeLists.txt Revert "Revert "[PDB] Extend IPDBSession's interface to retrieve frame data"" 2018-10-23 08:14:53 +00:00
GenericError.cpp [LLD] Fix Microsoft precompiled headers cross-compile on Linux 2018-11-08 14:42:37 +00:00
IPDBSourceFile.cpp
LLVMBuild.txt
PDB.cpp [DebugInfo] Common behavior for error types 2018-08-31 17:41:58 +00:00
PDBContext.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
PDBExtras.cpp [PDB] Add support for more kinds of PDB Sym Tags. 2018-10-01 22:39:19 +00:00
PDBInterfaceAnchors.cpp Revert "Revert "[PDB] Extend IPDBSession's interface to retrieve frame data"" 2018-10-23 08:14:53 +00:00
PDBSymDumper.cpp
PDBSymbol.cpp [PDB] Better support for enumerating pointer types. 2018-09-18 16:35:05 +00:00
PDBSymbolAnnotation.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolBlock.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolCompiland.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolCompilandDetails.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolCompilandEnv.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolCustom.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolData.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolExe.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolFunc.cpp [PDB] Remove all clone() methods. 2018-09-12 22:57:03 +00:00
PDBSymbolFuncDebugEnd.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolFuncDebugStart.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolLabel.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolPublicSymbol.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolThunk.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeArray.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeBaseClass.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeBuiltin.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeCustom.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeDimension.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeEnum.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeFriend.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeFunctionArg.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeFunctionSig.cpp [PDB] Remove all clone() methods. 2018-09-12 22:57:03 +00:00
PDBSymbolTypeManaged.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypePointer.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeTypedef.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeUDT.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeVTable.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolTypeVTableShape.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolUnknown.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
PDBSymbolUsingNamespace.cpp [PDB] Refactor the PDB symbol classes to fix a reuse bug. 2018-09-05 23:30:38 +00:00
UDTLayout.cpp [CodeView, PDB] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-06-30 23:06:03 +00:00