[lld] r289104 - COFF: Use a string saver in Memory.h in Driver.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 8 13:27:09 PST 2016
Author: ruiu
Date: Thu Dec 8 15:27:09 2016
New Revision: 289104
URL: http://llvm.org/viewvc/llvm-project?rev=289104&view=rev
Log:
COFF: Use a string saver in Memory.h in Driver.
Modified:
lld/trunk/COFF/Driver.cpp
lld/trunk/COFF/Driver.h
lld/trunk/COFF/DriverUtils.cpp
lld/trunk/COFF/ModuleDef.cpp
Modified: lld/trunk/COFF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=289104&r1=289103&r2=289104&view=diff
==============================================================================
--- lld/trunk/COFF/Driver.cpp (original)
+++ lld/trunk/COFF/Driver.cpp Thu Dec 8 15:27:09 2016
@@ -150,11 +150,11 @@ StringRef LinkerDriver::doFindFile(Strin
SmallString<128> Path = Dir;
sys::path::append(Path, Filename);
if (sys::fs::exists(Path.str()))
- return Alloc.save(Path.str());
+ return Saver.save(Path.str());
if (!HasExt) {
Path.append(".obj");
if (sys::fs::exists(Path.str()))
- return Alloc.save(Path.str());
+ return Saver.save(Path.str());
}
}
return Filename;
@@ -175,7 +175,7 @@ StringRef LinkerDriver::doFindLib(String
// Add ".lib" to Filename if that has no file extension.
bool HasExt = (Filename.find('.') != StringRef::npos);
if (!HasExt)
- Filename = Alloc.save(Filename + ".lib");
+ Filename = Saver.save(Filename + ".lib");
return doFindFile(Filename);
}
@@ -199,7 +199,7 @@ void LinkerDriver::addLibSearchPaths() {
Optional<std::string> EnvOpt = Process::GetEnv("LIB");
if (!EnvOpt.hasValue())
return;
- StringRef Env = Alloc.save(*EnvOpt);
+ StringRef Env = Saver.save(*EnvOpt);
while (!Env.empty()) {
StringRef Path;
std::tie(Path, Env) = Env.split(';');
@@ -217,7 +217,7 @@ Undefined *LinkerDriver::addUndefined(St
StringRef LinkerDriver::mangle(StringRef Sym) {
assert(Config->Machine != IMAGE_FILE_MACHINE_UNKNOWN);
if (Config->Machine == I386)
- return Alloc.save("_" + Sym);
+ return Saver.save("_" + Sym);
return Sym;
}
@@ -633,9 +633,9 @@ void LinkerDriver::link(ArrayRef<const c
Export E = parseExport(Arg->getValue());
if (Config->Machine == I386) {
if (!isDecorated(E.Name))
- E.Name = Alloc.save("_" + E.Name);
+ E.Name = Saver.save("_" + E.Name);
if (!E.ExtName.empty() && !isDecorated(E.ExtName))
- E.ExtName = Alloc.save("_" + E.ExtName);
+ E.ExtName = Saver.save("_" + E.ExtName);
}
Config->Exports.push_back(E);
}
@@ -644,7 +644,7 @@ void LinkerDriver::link(ArrayRef<const c
if (auto *Arg = Args.getLastArg(OPT_deffile)) {
MemoryBufferRef MB = openFile(Arg->getValue());
// parseModuleDefs mutates Config object.
- parseModuleDefs(MB, &Alloc);
+ parseModuleDefs(MB);
}
// Handle /delayload
Modified: lld/trunk/COFF/Driver.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.h?rev=289104&r1=289103&r2=289104&view=diff
==============================================================================
--- lld/trunk/COFF/Driver.h (original)
+++ lld/trunk/COFF/Driver.h Thu Dec 8 15:27:09 2016
@@ -19,7 +19,6 @@
#include "llvm/Object/COFF.h"
#include "llvm/Option/Arg.h"
#include "llvm/Option/ArgList.h"
-#include "llvm/Support/StringSaver.h"
#include <memory>
#include <set>
#include <vector>
@@ -43,7 +42,6 @@ void doICF(const std::vector<Chunk *> &C
class ArgParser {
public:
- ArgParser() : Alloc(AllocAux) {}
// Parses command line options.
llvm::opt::InputArgList parse(llvm::ArrayRef<const char *> Args);
@@ -57,14 +55,10 @@ private:
std::vector<const char *> tokenize(StringRef S);
std::vector<const char *> replaceResponseFiles(std::vector<const char *>);
-
- llvm::BumpPtrAllocator AllocAux;
- llvm::StringSaver Alloc;
};
class LinkerDriver {
public:
- LinkerDriver() : Alloc(AllocAux) {}
void link(llvm::ArrayRef<const char *> Args);
// Used by the resolver to parse .drectve section contents.
@@ -73,8 +67,6 @@ public:
std::unique_ptr<CpioFile> Cpio; // for /linkrepro
private:
- llvm::BumpPtrAllocator AllocAux;
- llvm::StringSaver Alloc;
ArgParser Parser;
SymbolTable Symtab;
@@ -112,7 +104,7 @@ private:
std::vector<std::unique_ptr<MemoryBuffer>> OwningMBs;
};
-void parseModuleDefs(MemoryBufferRef MB, llvm::StringSaver *Alloc);
+void parseModuleDefs(MemoryBufferRef MB);
void writeImportLibrary();
// Functions below this line are defined in DriverUtils.cpp.
Modified: lld/trunk/COFF/DriverUtils.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/DriverUtils.cpp?rev=289104&r1=289103&r2=289104&view=diff
==============================================================================
--- lld/trunk/COFF/DriverUtils.cpp (original)
+++ lld/trunk/COFF/DriverUtils.cpp Thu Dec 8 15:27:09 2016
@@ -17,6 +17,7 @@
#include "Driver.h"
#include "Error.h"
#include "Symbols.h"
+#include "lld/Support/Memory.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Object/COFF.h"
@@ -678,7 +679,6 @@ opt::InputArgList ArgParser::parseLINK(A
std::vector<const char *> ArgParser::tokenize(StringRef S) {
SmallVector<const char *, 16> Tokens;
- StringSaver Saver(AllocAux);
cl::TokenizeWindowsCommandLine(S, Saver, Tokens);
return std::vector<const char *>(Tokens.begin(), Tokens.end());
}
@@ -688,7 +688,6 @@ std::vector<const char *> ArgParser::tok
std::vector<const char *>
ArgParser::replaceResponseFiles(std::vector<const char *> Argv) {
SmallVector<const char *, 256> Tokens(Argv.data(), Argv.data() + Argv.size());
- StringSaver Saver(AllocAux);
ExpandResponseFiles(Saver, TokenizeWindowsCommandLine, Tokens);
return std::vector<const char *>(Tokens.begin(), Tokens.end());
}
Modified: lld/trunk/COFF/ModuleDef.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/ModuleDef.cpp?rev=289104&r1=289103&r2=289104&view=diff
==============================================================================
--- lld/trunk/COFF/ModuleDef.cpp (original)
+++ lld/trunk/COFF/ModuleDef.cpp Thu Dec 8 15:27:09 2016
@@ -18,6 +18,7 @@
#include "Config.h"
#include "Error.h"
+#include "lld/Support/Memory.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Support/StringSaver.h"
@@ -113,7 +114,7 @@ private:
class Parser {
public:
- explicit Parser(StringRef S, StringSaver *A) : Lex(S), Alloc(A) {}
+ explicit Parser(StringRef S) : Lex(S) {}
void parse() {
do {
@@ -197,9 +198,9 @@ private:
if (Config->Machine == I386) {
if (!isDecorated(E.Name))
- E.Name = Alloc->save("_" + E.Name);
+ E.Name = Saver.save("_" + E.Name);
if (!E.ExtName.empty() && !isDecorated(E.ExtName))
- E.ExtName = Alloc->save("_" + E.ExtName);
+ E.ExtName = Saver.save("_" + E.ExtName);
}
for (;;) {
@@ -283,9 +284,7 @@ private:
} // anonymous namespace
-void parseModuleDefs(MemoryBufferRef MB, StringSaver *Alloc) {
- Parser(MB.getBuffer(), Alloc).parse();
-}
+void parseModuleDefs(MemoryBufferRef MB) { Parser(MB.getBuffer()).parse(); }
} // namespace coff
} // namespace lld
More information about the llvm-commits
mailing list