[PATCH] D124938: [clang] serialize SUBMODULE_TOPHEADER relative to BaseDirectory
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: blob data = 'vector.h' +// CHECK: blob data = 'vector.h' +// CHECK: blob data = 'type_traits.h' +// CHECK: blob data = 'type_traits.h' +// CHECK: blob data = 'hash_map.h' +// CHECK: 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: blob data = 'vector.h' +// CHECK: blob data = 'vector.h' +// CHECK: blob data = 'type_traits.h' +// CHECK: blob data = 'type_traits.h' +// CHECK: blob data = 'hash_map.h' +// CHECK: 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
[PATCH] D124938: [clang] serialize SUBMODULE_TOPHEADER relative to BaseDirectory
urnathan accepted this revision. urnathan added a comment. This revision is now accepted and ready to land. lgtm Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D124938/new/ https://reviews.llvm.org/D124938 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D124938: [clang] serialize SUBMODULE_TOPHEADER relative to BaseDirectory
rmaz created this revision. Herald added a project: All. rmaz requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. This diff changes the serialization of the `SUBMODULE_TOPHEADER` entry in module files to be serialized relative to the module's `BaseDirectory`. This matches the behavior of the `SUBMODULE_HEADER` entry and will allow for the module to be relocatable across machines. The path is restored relative to the module's `BaseDirectory` on deserialization. Repository: rG LLVM Github Monorepo 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: blob data = 'vector.h' +// CHECK: blob data = 'vector.h' +// CHECK: blob data = 'type_traits.h' +// CHECK: blob data = 'type_traits.h' +// CHECK: blob data = 'hash_map.h' +// CHECK: blob data = 'hash_map.h' Index: clang/lib/Serialization/ASTWriter.cpp === --- clang/lib/Serialization/ASTWriter.cpp +++ clang/lib/Serialization/ASTWriter.cpp @@ -2848,8 +2848,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: blob data = 'vector.h' +// CHECK: blob data = 'vector.h' +// CHECK: blob data = 'type_traits.h' +// CHECK: blob data = 'type_traits.h' +// CHECK: blob data = 'hash_map.h' +// CHECK: blob data = 'hash_map.h' Index: clang/lib/Serialization/ASTWriter.cpp === --- clang/lib/Serialization/ASTWriter.cpp +++ clang/lib/Serialization/ASTWriter.cpp @@ -2848,8 +2848,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