Skip to content

Commit 7e8e883

Browse files
author
Jan Svoboda
committed
Normalize paths to fix Windows bot
1 parent 7945795 commit 7e8e883

File tree

3 files changed

+42
-13
lines changed

3 files changed

+42
-13
lines changed

clang/lib/Serialization/ASTReader.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4350,10 +4350,15 @@ void ASTReader::ReadModuleOffsetMap(ModuleFile &F) const {
43504350
uint16_t Len = endian::readNext<uint16_t, llvm::endianness::little>(Data);
43514351
StringRef Name = StringRef((const char*)Data, Len);
43524352
Data += Len;
4353-
ModuleFile *OM = (Kind == MK_PrebuiltModule || Kind == MK_ExplicitModule ||
4354-
Kind == MK_ImplicitModule
4355-
? ModuleMgr.lookupByModuleName(Name)
4356-
: ModuleMgr.lookupByFileName(Name));
4353+
ModuleFile *OM;
4354+
if (Kind == MK_PrebuiltModule || Kind == MK_ExplicitModule ||
4355+
Kind == MK_ImplicitModule) {
4356+
OM = ModuleMgr.lookupByModuleName(Name);
4357+
} else {
4358+
SmallString<128> NormalizedName = Name;
4359+
llvm::sys::path::make_preferred(NormalizedName);
4360+
OM = ModuleMgr.lookupByFileName(NormalizedName);
4361+
}
43574362
if (!OM) {
43584363
std::string Msg = "refers to unknown module, cannot find ";
43594364
Msg.append(std::string(Name));

clang/lib/Serialization/InMemoryModuleCache.cpp

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,18 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "clang/Serialization/InMemoryModuleCache.h"
10+
#include "llvm/ADT/SmallString.h"
1011
#include "llvm/Support/MemoryBuffer.h"
12+
#include "llvm/Support/Path.h"
1113

1214
using namespace clang;
1315

1416
InMemoryModuleCache::State
1517
InMemoryModuleCache::getPCMState(llvm::StringRef Filename) const {
16-
auto I = PCMs.find(Filename);
18+
llvm::SmallString<128> NormalizedFilename = Filename;
19+
llvm::sys::path::make_preferred(NormalizedFilename);
20+
21+
auto I = PCMs.find(NormalizedFilename);
1722
if (I == PCMs.end())
1823
return Unknown;
1924
if (I->second.IsFinal)
@@ -24,15 +29,21 @@ InMemoryModuleCache::getPCMState(llvm::StringRef Filename) const {
2429
llvm::MemoryBuffer &
2530
InMemoryModuleCache::addPCM(llvm::StringRef Filename,
2631
std::unique_ptr<llvm::MemoryBuffer> Buffer) {
27-
auto Insertion = PCMs.insert(std::make_pair(Filename, std::move(Buffer)));
32+
llvm::SmallString<128> NormalizedFilename = Filename;
33+
llvm::sys::path::make_preferred(NormalizedFilename);
34+
35+
auto Insertion = PCMs.insert({NormalizedFilename, std::move(Buffer)});
2836
assert(Insertion.second && "Already has a PCM");
2937
return *Insertion.first->second.Buffer;
3038
}
3139

3240
llvm::MemoryBuffer &
3341
InMemoryModuleCache::addBuiltPCM(llvm::StringRef Filename,
3442
std::unique_ptr<llvm::MemoryBuffer> Buffer) {
35-
auto &PCM = PCMs[Filename];
43+
llvm::SmallString<128> NormalizedFilename = Filename;
44+
llvm::sys::path::make_preferred(NormalizedFilename);
45+
46+
auto &PCM = PCMs[NormalizedFilename];
3647
assert(!PCM.IsFinal && "Trying to override finalized PCM?");
3748
assert(!PCM.Buffer && "Trying to override tentative PCM?");
3849
PCM.Buffer = std::move(Buffer);
@@ -42,7 +53,10 @@ InMemoryModuleCache::addBuiltPCM(llvm::StringRef Filename,
4253

4354
llvm::MemoryBuffer *
4455
InMemoryModuleCache::lookupPCM(llvm::StringRef Filename) const {
45-
auto I = PCMs.find(Filename);
56+
llvm::SmallString<128> NormalizedFilename = Filename;
57+
llvm::sys::path::make_preferred(NormalizedFilename);
58+
59+
auto I = PCMs.find(NormalizedFilename);
4660
if (I == PCMs.end())
4761
return nullptr;
4862
return I->second.Buffer.get();
@@ -57,7 +71,10 @@ bool InMemoryModuleCache::shouldBuildPCM(llvm::StringRef Filename) const {
5771
}
5872

5973
bool InMemoryModuleCache::tryToDropPCM(llvm::StringRef Filename) {
60-
auto I = PCMs.find(Filename);
74+
llvm::SmallString<128> NormalizedFilename = Filename;
75+
llvm::sys::path::make_preferred(NormalizedFilename);
76+
77+
auto I = PCMs.find(NormalizedFilename);
6178
assert(I != PCMs.end() && "PCM to remove is unknown...");
6279

6380
auto &PCM = I->second;
@@ -71,7 +88,10 @@ bool InMemoryModuleCache::tryToDropPCM(llvm::StringRef Filename) {
7188
}
7289

7390
void InMemoryModuleCache::finalizePCM(llvm::StringRef Filename) {
74-
auto I = PCMs.find(Filename);
91+
llvm::SmallString<128> NormalizedFilename = Filename;
92+
llvm::sys::path::make_preferred(NormalizedFilename);
93+
94+
auto I = PCMs.find(NormalizedFilename);
7595
assert(I != PCMs.end() && "PCM to finalize is unknown...");
7696

7797
auto &PCM = I->second;

clang/lib/Serialization/ModuleManager.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ ModuleFile *ModuleManager::lookupByModuleName(StringRef Name) const {
6060
}
6161

6262
ModuleFile *ModuleManager::lookup(FileEntryRef File) const {
63-
return Modules.lookup(File.getName());
63+
llvm::SmallString<128> NormalizedFileName = File.getName();
64+
llvm::sys::path::make_preferred(NormalizedFileName);
65+
return Modules.lookup(NormalizedFileName);
6466
}
6567

6668
std::unique_ptr<llvm::MemoryBuffer>
@@ -108,7 +110,9 @@ ModuleManager::addModule(StringRef FileName, ModuleKind Type,
108110
Module = nullptr;
109111

110112
// Check whether we already loaded this module, before
111-
if (ModuleFile *ModuleEntry = Modules.lookup(FileName)) {
113+
llvm::SmallString<128> NormalizedFileName = FileName;
114+
llvm::sys::path::make_preferred(NormalizedFileName);
115+
if (ModuleFile *ModuleEntry = Modules.lookup(NormalizedFileName)) {
112116
// Check the stored signature.
113117
if (checkSignature(ModuleEntry->Signature, ExpectedSignature, ErrorStr))
114118
return OutOfDate;
@@ -203,7 +207,7 @@ ModuleManager::addModule(StringRef FileName, ModuleKind Type,
203207
return OutOfDate;
204208

205209
// We're keeping this module. Store it everywhere.
206-
Module = Modules[FileName] = NewModule.get();
210+
Module = Modules[NormalizedFileName] = NewModule.get();
207211

208212
updateModuleImports(*NewModule, ImportedBy, ImportLoc);
209213

0 commit comments

Comments
 (0)