diff options
| author | Reid Kleckner <rnk@google.com> | 2016-06-24 16:24:24 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2016-06-24 16:24:24 +0000 |
| commit | 9f7f3e1e64067c6802882e691a7a3c8a5926a737 (patch) | |
| tree | 4c3d67d10f7f213f79aa0fcd42dd39abd67b868e /llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h | |
| parent | e794678404abc41ce3b22625da39c1379c1d7a1d (diff) | |
| download | bcm5719-llvm-9f7f3e1e64067c6802882e691a7a3c8a5926a737.tar.gz bcm5719-llvm-9f7f3e1e64067c6802882e691a7a3c8a5926a737.zip | |
[codeview] Emit base class information from DW_TAG_inheritance nodes
There are two remaining issues here:
1. No vbptr information
2. Need to mention indirect virtual bases
Getting indirect virtual bases is just a matter of adding an "indirect"
flag, emitting them in the frontend, and ignoring them when appropriate
for DWARF.
All virtual bases use the same artificial vbptr field, so I think the
vbptr offset will be best represented by an implicit __vbptr$ClassName
member similar to our existing __vptr$ member.
llvm-svn: 273688
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h index 7db4e041096..53493725c13 100644 --- a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h @@ -157,6 +157,8 @@ class LLVM_LIBRARY_VISIBILITY CodeViewDebug : public DebugHandlerBase { /// Number of type lowering frames active on the stack. unsigned TypeEmissionLevel = 0; + codeview::TypeIndex VBPType; + const DISubprogram *CurrentSubprogram = nullptr; // The UDTs we have seen while processing types; each entry is a pair of type @@ -230,6 +232,8 @@ class LLVM_LIBRARY_VISIBILITY CodeViewDebug : public DebugHandlerBase { codeview::TypeIndex getScopeIndex(const DIScope *Scope); + codeview::TypeIndex getVBPTypeIndex(); + void addToUDTs(const DIType *Ty, codeview::TypeIndex TI); codeview::TypeIndex lowerType(const DIType *Ty, const DIType *ClassTy); |

