@@ -116,39 +116,43 @@ class PrebuiltModuleListener : public ASTReaderListener {
116116 if (PrebuiltModuleFiles.insert ({ModuleName.str (), Filename.str ()}).second )
117117 NewModuleFiles.push_back (Filename.str ());
118118
119- if (PrebuiltModulesASTMap.try_emplace (Filename).second )
120- PrebuiltModulesASTMap[Filename].setInStableDir (!StableDirs.empty ());
119+ auto PrebuiltMapEntry = PrebuiltModulesASTMap.try_emplace (Filename);
120+ PrebuiltModuleASTAttrs &PrebuiltModule = PrebuiltMapEntry.first ->second ;
121+ if (PrebuiltMapEntry.second )
122+ PrebuiltModule.setInStableDir (!StableDirs.empty ());
121123
122124 if (auto It = PrebuiltModulesASTMap.find (CurrentFile);
123125 It != PrebuiltModulesASTMap.end () && CurrentFile != Filename)
124- PrebuiltModulesASTMap[Filename] .addDependent (It->getKey ());
126+ PrebuiltModule .addDependent (It->getKey ());
125127 }
126128
127129 // / For each input file discovered, check whether it's external path is in a
128130 // / stable directory. Traversal is stopped if the current module is not
129131 // / considered stable.
130- bool visitInputFile (StringRef FilenameAsRequested, StringRef ExternalFilename ,
132+ bool visitInputFile (StringRef FilenameAsRequested, StringRef Filename ,
131133 bool isSystem, bool isOverridden,
132134 bool isExplicitModule) override {
133135 if (StableDirs.empty ())
134136 return false ;
135- if (!PrebuiltModulesASTMap.contains (CurrentFile) ||
136- !PrebuiltModulesASTMap[CurrentFile].isInStableDir ())
137+ auto PrebuiltEntryIt = PrebuiltModulesASTMap.find (CurrentFile);
138+ if ((PrebuiltEntryIt == PrebuiltModulesASTMap.end ()) ||
139+ (!PrebuiltEntryIt->second .isInStableDir ()))
137140 return false ;
138141
139- PrebuiltModulesASTMap[CurrentFile] .setInStableDir (
140- isPathInStableDir (StableDirs, ExternalFilename ));
141- return PrebuiltModulesASTMap[CurrentFile] .isInStableDir ();
142+ PrebuiltEntryIt-> second .setInStableDir (
143+ isPathInStableDir (StableDirs, Filename ));
144+ return PrebuiltEntryIt-> second .isInStableDir ();
142145 }
143146
144147 // / Update which module that is being actively traversed.
145148 void visitModuleFile (StringRef Filename,
146149 serialization::ModuleKind Kind) override {
147150 // If the CurrentFile is not
148151 // considered stable, update any of it's transitive dependents.
149- if (PrebuiltModulesASTMap.contains (CurrentFile) &&
150- !PrebuiltModulesASTMap[CurrentFile].isInStableDir ())
151- PrebuiltModulesASTMap[CurrentFile].updateDependentsNotInStableDirs (
152+ auto PrebuiltEntryIt = PrebuiltModulesASTMap.find (CurrentFile);
153+ if ((PrebuiltEntryIt != PrebuiltModulesASTMap.end ()) &&
154+ !PrebuiltEntryIt->second .isInStableDir ())
155+ PrebuiltEntryIt->second .updateDependentsNotInStableDirs (
152156 PrebuiltModulesASTMap);
153157 CurrentFile = Filename;
154158 }
@@ -159,12 +163,14 @@ class PrebuiltModuleListener : public ASTReaderListener {
159163 StringRef ModuleFilename,
160164 StringRef SpecificModuleCachePath,
161165 bool Complain) override {
162- if (PrebuiltModulesASTMap.try_emplace (CurrentFile).second )
163- PrebuiltModulesASTMap[CurrentFile].setInStableDir (!StableDirs.empty ());
164166
165- if (PrebuiltModulesASTMap[CurrentFile].isInStableDir ())
166- PrebuiltModulesASTMap[CurrentFile].setInStableDir (
167- areOptionsInStableDir (StableDirs, HSOpts));
167+ auto PrebuiltMapEntry = PrebuiltModulesASTMap.try_emplace (CurrentFile);
168+ PrebuiltModuleASTAttrs &PrebuiltModule = PrebuiltMapEntry.first ->second ;
169+ if (PrebuiltMapEntry.second )
170+ PrebuiltModule.setInStableDir (!StableDirs.empty ());
171+
172+ if (PrebuiltModule.isInStableDir ())
173+ PrebuiltModule.setInStableDir (areOptionsInStableDir (StableDirs, HSOpts));
168174
169175 return false ;
170176 }
@@ -173,10 +179,12 @@ class PrebuiltModuleListener : public ASTReaderListener {
173179 bool ReadHeaderSearchPaths (const HeaderSearchOptions &HSOpts,
174180 bool Complain) override {
175181
176- if (PrebuiltModulesASTMap.try_emplace (CurrentFile).second )
177- PrebuiltModulesASTMap[CurrentFile].setInStableDir (!StableDirs.empty ());
182+ auto PrebuiltMapEntry = PrebuiltModulesASTMap.try_emplace (CurrentFile);
183+ PrebuiltModuleASTAttrs &PrebuiltModule = PrebuiltMapEntry.first ->second ;
184+ if (PrebuiltMapEntry.second )
185+ PrebuiltModule.setInStableDir (!StableDirs.empty ());
178186
179- PrebuiltModulesASTMap[CurrentFile] .setVFS (
187+ PrebuiltModule .setVFS (
180188 llvm::StringSet<>(llvm::from_range, HSOpts.VFSOverlayFiles ));
181189
182190 return checkHeaderSearchPaths (
0 commit comments