diff options
| author | Rui Ueyama <ruiu@google.com> | 2018-09-11 14:37:27 +0000 |
|---|---|---|
| committer | Rui Ueyama <ruiu@google.com> | 2018-09-11 14:37:27 +0000 |
| commit | 98e4a5ca110e2e24ceb5d67873f935f8c82166bb (patch) | |
| tree | 3da70a52e4229799e065d16741775dc2120dd6c8 | |
| parent | 96762b37e1e59ac5e1706979d59bd80b21b75665 (diff) | |
| download | bcm5719-llvm-98e4a5ca110e2e24ceb5d67873f935f8c82166bb.tar.gz bcm5719-llvm-98e4a5ca110e2e24ceb5d67873f935f8c82166bb.zip | |
Simplify.
Instead of Map<StringRef, bool>, we can simply use Set<StringRef>.
llvm-svn: 341948
| -rw-r--r-- | lld/ELF/LTO.cpp | 36 | ||||
| -rw-r--r-- | lld/ELF/LTO.h | 2 |
2 files changed, 15 insertions, 23 deletions
diff --git a/lld/ELF/LTO.cpp b/lld/ELF/LTO.cpp index cb5bb64985f..e640106d460 100644 --- a/lld/ELF/LTO.cpp +++ b/lld/ELF/LTO.cpp @@ -109,18 +109,14 @@ static lto::Config createConfig() { } BitcodeCompiler::BitcodeCompiler() { + // Initialize IndexFile. + if (!Config->ThinLTOIndexOnlyArg.empty()) + IndexFile = openFile(Config->ThinLTOIndexOnlyArg); + // Initialize LTOObj. lto::ThinBackend Backend; - if (Config->ThinLTOIndexOnly) { - StringRef Path = Config->ThinLTOIndexOnlyArg; - if (!Path.empty()) - IndexFile = openFile(Path); - - auto OnIndexWrite = [&](const std::string &Identifier) { - ObjectToIndexFileState[Identifier] = true; - }; - + auto OnIndexWrite = [&](StringRef S) { ThinIndices.erase(S); }; Backend = lto::createWriteIndexesThinBackend( Config->ThinLTOPrefixReplace.first, Config->ThinLTOPrefixReplace.second, Config->ThinLTOEmitImportsFiles, IndexFile.get(), OnIndexWrite); @@ -133,10 +129,10 @@ BitcodeCompiler::BitcodeCompiler() { // Initialize UsedStartStop. for (Symbol *Sym : Symtab->getSymbols()) { - StringRef Name = Sym->getName(); + StringRef S = Sym->getName(); for (StringRef Prefix : {"__start_", "__stop_"}) - if (Name.startswith(Prefix)) - UsedStartStop.insert(Name.substr(Prefix.size())); + if (S.startswith(Prefix)) + UsedStartStop.insert(S.substr(Prefix.size())); } } @@ -152,7 +148,7 @@ void BitcodeCompiler::add(BitcodeFile &F) { bool IsExec = !Config->Shared && !Config->Relocatable; if (Config->ThinLTOIndexOnly) - ObjectToIndexFileState.insert({Obj.getName(), false}); + ThinIndices.insert(Obj.getName()); ArrayRef<Symbol *> Syms = F.getSymbols(); ArrayRef<lto::InputFile::Symbol> ObjSyms = Obj.symbols(); @@ -241,15 +237,11 @@ std::vector<InputFile *> BitcodeCompiler::compile() { Cache)); // Emit empty index files for non-indexed files - if (Config->ThinLTOIndexOnly) { - for (auto &Identifier : ObjectToIndexFileState) - if (!Identifier.getValue()) { - std::string Path = getThinLTOOutputFile(Identifier.getKey()); - openFile(Path + ".thinlto.bc"); - - if (Config->ThinLTOEmitImportsFiles) - openFile(Path + ".imports"); - } + for (StringRef S : ThinIndices) { + std::string Path = getThinLTOOutputFile(S); + openFile(Path + ".thinlto.bc"); + if (Config->ThinLTOEmitImportsFiles) + openFile(Path + ".imports"); } // If LazyObjFile has not been added to link, emit empty index files. diff --git a/lld/ELF/LTO.h b/lld/ELF/LTO.h index 8803078eb1d..a190da3e599 100644 --- a/lld/ELF/LTO.h +++ b/lld/ELF/LTO.h @@ -55,7 +55,7 @@ private: std::vector<std::unique_ptr<MemoryBuffer>> Files; llvm::DenseSet<StringRef> UsedStartStop; std::unique_ptr<llvm::raw_fd_ostream> IndexFile; - llvm::StringMap<bool> ObjectToIndexFileState; + llvm::DenseSet<StringRef> ThinIndices; }; } // namespace elf } // namespace lld |

