This revision was automatically updated to reflect the committed changes. Closed by commit rGf11056943e56: [clang] serialize SUBMODULE_TOPHEADER relative to BaseDirectory (authored by rmaz).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D124938/new/ https://reviews.llvm.org/D124938 Files: clang/lib/Serialization/ASTReader.cpp clang/lib/Serialization/ASTWriter.cpp clang/test/Modules/relative-submodule-topheader.m Index: clang/test/Modules/relative-submodule-topheader.m =================================================================== --- /dev/null +++ clang/test/Modules/relative-submodule-topheader.m @@ -0,0 +1,10 @@ +// RUN: cd %S +// RUN: %clang_cc1 -fmodules -fno-implicit-modules -x objective-c++ -fmodule-name=std -emit-module Inputs/submodules/module.map -o %t/mod.pcm +// RUN: llvm-bcanalyzer --dump --disable-histogram %t/mod.pcm | FileCheck %s + +// CHECK: <SUBMODULE_HEADER abbrevid=6/> blob data = 'vector.h' +// CHECK: <SUBMODULE_TOPHEADER abbrevid=7/> blob data = 'vector.h' +// CHECK: <SUBMODULE_HEADER abbrevid=6/> blob data = 'type_traits.h' +// CHECK: <SUBMODULE_TOPHEADER abbrevid=7/> blob data = 'type_traits.h' +// CHECK: <SUBMODULE_HEADER abbrevid=6/> blob data = 'hash_map.h' +// CHECK: <SUBMODULE_TOPHEADER abbrevid=7/> blob data = 'hash_map.h' Index: clang/lib/Serialization/ASTWriter.cpp =================================================================== --- clang/lib/Serialization/ASTWriter.cpp +++ clang/lib/Serialization/ASTWriter.cpp @@ -2857,8 +2857,11 @@ { auto TopHeaders = Mod->getTopHeaders(PP->getFileManager()); RecordData::value_type Record[] = {SUBMODULE_TOPHEADER}; - for (auto *H : TopHeaders) - Stream.EmitRecordWithBlob(TopHeaderAbbrev, Record, H->getName()); + for (auto *H : TopHeaders) { + SmallString<128> HeaderName(H->getName()); + PreparePathForOutput(HeaderName); + Stream.EmitRecordWithBlob(TopHeaderAbbrev, Record, HeaderName); + } } // Emit the imports. Index: clang/lib/Serialization/ASTReader.cpp =================================================================== --- clang/lib/Serialization/ASTReader.cpp +++ clang/lib/Serialization/ASTReader.cpp @@ -5637,9 +5637,12 @@ // them here. break; - case SUBMODULE_TOPHEADER: - CurrentModule->addTopHeaderFilename(Blob); + case SUBMODULE_TOPHEADER: { + std::string HeaderName(Blob); + ResolveImportedPath(F, HeaderName); + CurrentModule->addTopHeaderFilename(HeaderName); break; + } case SUBMODULE_UMBRELLA_DIR: { // See comments in SUBMODULE_UMBRELLA_HEADER
Index: clang/test/Modules/relative-submodule-topheader.m =================================================================== --- /dev/null +++ clang/test/Modules/relative-submodule-topheader.m @@ -0,0 +1,10 @@ +// RUN: cd %S +// RUN: %clang_cc1 -fmodules -fno-implicit-modules -x objective-c++ -fmodule-name=std -emit-module Inputs/submodules/module.map -o %t/mod.pcm +// RUN: llvm-bcanalyzer --dump --disable-histogram %t/mod.pcm | FileCheck %s + +// CHECK: <SUBMODULE_HEADER abbrevid=6/> blob data = 'vector.h' +// CHECK: <SUBMODULE_TOPHEADER abbrevid=7/> blob data = 'vector.h' +// CHECK: <SUBMODULE_HEADER abbrevid=6/> blob data = 'type_traits.h' +// CHECK: <SUBMODULE_TOPHEADER abbrevid=7/> blob data = 'type_traits.h' +// CHECK: <SUBMODULE_HEADER abbrevid=6/> blob data = 'hash_map.h' +// CHECK: <SUBMODULE_TOPHEADER abbrevid=7/> blob data = 'hash_map.h' Index: clang/lib/Serialization/ASTWriter.cpp =================================================================== --- clang/lib/Serialization/ASTWriter.cpp +++ clang/lib/Serialization/ASTWriter.cpp @@ -2857,8 +2857,11 @@ { auto TopHeaders = Mod->getTopHeaders(PP->getFileManager()); RecordData::value_type Record[] = {SUBMODULE_TOPHEADER}; - for (auto *H : TopHeaders) - Stream.EmitRecordWithBlob(TopHeaderAbbrev, Record, H->getName()); + for (auto *H : TopHeaders) { + SmallString<128> HeaderName(H->getName()); + PreparePathForOutput(HeaderName); + Stream.EmitRecordWithBlob(TopHeaderAbbrev, Record, HeaderName); + } } // Emit the imports. Index: clang/lib/Serialization/ASTReader.cpp =================================================================== --- clang/lib/Serialization/ASTReader.cpp +++ clang/lib/Serialization/ASTReader.cpp @@ -5637,9 +5637,12 @@ // them here. break; - case SUBMODULE_TOPHEADER: - CurrentModule->addTopHeaderFilename(Blob); + case SUBMODULE_TOPHEADER: { + std::string HeaderName(Blob); + ResolveImportedPath(F, HeaderName); + CurrentModule->addTopHeaderFilename(HeaderName); break; + } case SUBMODULE_UMBRELLA_DIR: { // See comments in SUBMODULE_UMBRELLA_HEADER
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits