7
7
// ===----------------------------------------------------------------------===//
8
8
9
9
#include " clang/Serialization/InMemoryModuleCache.h"
10
+ #include " llvm/ADT/SmallString.h"
10
11
#include " llvm/Support/MemoryBuffer.h"
12
+ #include " llvm/Support/Path.h"
11
13
12
14
using namespace clang ;
13
15
14
16
InMemoryModuleCache::State
15
17
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);
17
22
if (I == PCMs.end ())
18
23
return Unknown;
19
24
if (I->second .IsFinal )
@@ -24,15 +29,21 @@ InMemoryModuleCache::getPCMState(llvm::StringRef Filename) const {
24
29
llvm::MemoryBuffer &
25
30
InMemoryModuleCache::addPCM (llvm::StringRef Filename,
26
31
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)});
28
36
assert (Insertion.second && " Already has a PCM" );
29
37
return *Insertion.first ->second .Buffer ;
30
38
}
31
39
32
40
llvm::MemoryBuffer &
33
41
InMemoryModuleCache::addBuiltPCM (llvm::StringRef Filename,
34
42
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];
36
47
assert (!PCM.IsFinal && " Trying to override finalized PCM?" );
37
48
assert (!PCM.Buffer && " Trying to override tentative PCM?" );
38
49
PCM.Buffer = std::move (Buffer);
@@ -42,7 +53,10 @@ InMemoryModuleCache::addBuiltPCM(llvm::StringRef Filename,
42
53
43
54
llvm::MemoryBuffer *
44
55
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);
46
60
if (I == PCMs.end ())
47
61
return nullptr ;
48
62
return I->second .Buffer .get ();
@@ -57,7 +71,10 @@ bool InMemoryModuleCache::shouldBuildPCM(llvm::StringRef Filename) const {
57
71
}
58
72
59
73
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);
61
78
assert (I != PCMs.end () && " PCM to remove is unknown..." );
62
79
63
80
auto &PCM = I->second ;
@@ -71,7 +88,10 @@ bool InMemoryModuleCache::tryToDropPCM(llvm::StringRef Filename) {
71
88
}
72
89
73
90
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);
75
95
assert (I != PCMs.end () && " PCM to finalize is unknown..." );
76
96
77
97
auto &PCM = I->second ;
0 commit comments