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
1214using namespace clang ;
1315
1416InMemoryModuleCache::State
1517InMemoryModuleCache::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 {
2429llvm::MemoryBuffer &
2530InMemoryModuleCache::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
3240llvm::MemoryBuffer &
3341InMemoryModuleCache::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
4354llvm::MemoryBuffer *
4455InMemoryModuleCache::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
5973bool 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
7390void 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 ;
0 commit comments