From 7b30370e5bcf569fcdc15204d4c592163fd78cb3 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Tue, 14 Jan 2020 13:37:04 -0800 Subject: Move the sysroot attribute from DIModule to DICompileUnit [this re-applies c0176916a4824812d25a5a22c4ff7c95857b0cd6 with the correct commit message and phabricator link] This addresses point 1 of PR44213. https://bugs.llvm.org/show_bug.cgi?id=44213 The DW_AT_LLVM_sysroot attribute is used for Clang module debug info, to allow LLDB to import a Clang module from source. Currently it is part of each DW_TAG_module, however, it is the same for all modules in a compile unit. It is more efficient and less ambiguous to store it once in the DW_TAG_compile_unit. This should have no effect on DWARF consumers other than LLDB. Differential Revision: https://reviews.llvm.org/D71732 --- llvm/lib/Bitcode/Reader/MetadataLoader.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'llvm/lib/Bitcode/Reader/MetadataLoader.cpp') diff --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp index d16c3b0ff59d..3cff468dca89 100644 --- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp +++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp @@ -1418,15 +1418,14 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( } case bitc::METADATA_MODULE: { - if (Record.size() != 6) + if (Record.size() < 5 || Record.size() > 6) return error("Invalid record"); IsDistinct = Record[0]; MetadataList.assignValue( - GET_OR_DISTINCT(DIModule, - (Context, getMDOrNull(Record[1]), - getMDString(Record[2]), getMDString(Record[3]), - getMDString(Record[4]), getMDString(Record[5]))), + GET_OR_DISTINCT( + DIModule, (Context, getMDOrNull(Record[1]), getMDString(Record[2]), + getMDString(Record[3]), getMDString(Record[4]))), NextMetadataNo); NextMetadataNo++; break; @@ -1457,7 +1456,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( break; } case bitc::METADATA_COMPILE_UNIT: { - if (Record.size() < 14 || Record.size() > 19) + if (Record.size() < 14 || Record.size() > 21) return error("Invalid record"); // Ignore Record[0], which indicates whether this compile unit is @@ -1473,7 +1472,9 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( Record.size() <= 16 ? true : Record[16], Record.size() <= 17 ? false : Record[17], Record.size() <= 18 ? 0 : Record[18], - Record.size() <= 19 ? 0 : Record[19]); + false, // FIXME: https://reviews.llvm.org/rGc51b45e32ef7f35c11891f60871aa9c2c04cd991 + // Record.size() <= 19 ? 0 : Record[19], + Record.size() <= 20 ? nullptr : getMDString(Record[20])); MetadataList.assignValue(CU, NextMetadataNo); NextMetadataNo++; -- cgit v1.2.3