Use getLastArgValue instead of getString
Summary: I found that getString defined in the LLD's Driver.cpp is exactly the same as Arg::getLastArgValue defined in llvm/Option/ArgLIst.h. This patch removes that local function and use the function that the Arg class provides. Reviewers: ruiu Subscribers: emaste, llvm-commits Differential Revision: https://reviews.llvm.org/D34196 llvm-svn: 305374
This commit is contained in:
parent
26d98348dc
commit
1f1378dcbc
|
@ -273,13 +273,6 @@ static void checkOptions(opt::InputArgList &Args) {
|
|||
}
|
||||
}
|
||||
|
||||
static StringRef getString(opt::InputArgList &Args, unsigned Key,
|
||||
StringRef Default = "") {
|
||||
if (auto *Arg = Args.getLastArg(Key))
|
||||
return Arg->getValue();
|
||||
return Default;
|
||||
}
|
||||
|
||||
static int getInteger(opt::InputArgList &Args, unsigned Key, int Default) {
|
||||
int V = Default;
|
||||
if (auto *Arg = Args.getLastArg(Key)) {
|
||||
|
@ -461,7 +454,7 @@ static UnresolvedPolicy getUnresolvedSymbolPolicy(opt::InputArgList &Args) {
|
|||
}
|
||||
|
||||
static Target2Policy getTarget2(opt::InputArgList &Args) {
|
||||
StringRef S = getString(Args, OPT_target2, "got-rel");
|
||||
StringRef S = Args.getLastArgValue(OPT_target2, "got-rel");
|
||||
if (S == "rel")
|
||||
return Target2Policy::Rel;
|
||||
if (S == "abs")
|
||||
|
@ -544,7 +537,7 @@ static StringMap<uint64_t> getSectionStartMap(opt::InputArgList &Args) {
|
|||
}
|
||||
|
||||
static SortSectionPolicy getSortSection(opt::InputArgList &Args) {
|
||||
StringRef S = getString(Args, OPT_sort_section);
|
||||
StringRef S = Args.getLastArgValue(OPT_sort_section);
|
||||
if (S == "alignment")
|
||||
return SortSectionPolicy::Alignment;
|
||||
if (S == "name")
|
||||
|
@ -555,7 +548,7 @@ static SortSectionPolicy getSortSection(opt::InputArgList &Args) {
|
|||
}
|
||||
|
||||
static std::pair<bool, bool> getHashStyle(opt::InputArgList &Args) {
|
||||
StringRef S = getString(Args, OPT_hash_style, "sysv");
|
||||
StringRef S = Args.getLastArgValue(OPT_hash_style, "sysv");
|
||||
if (S == "sysv")
|
||||
return {true, false};
|
||||
if (S == "gnu")
|
||||
|
@ -606,7 +599,7 @@ static std::vector<StringRef> getLines(MemoryBufferRef MB) {
|
|||
}
|
||||
|
||||
static bool getCompressDebugSections(opt::InputArgList &Args) {
|
||||
StringRef S = getString(Args, OPT_compress_debug_sections, "none");
|
||||
StringRef S = Args.getLastArgValue(OPT_compress_debug_sections, "none");
|
||||
if (S == "none")
|
||||
return false;
|
||||
if (S != "zlib")
|
||||
|
@ -632,30 +625,30 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) {
|
|||
Config->EhFrameHdr = Args.hasArg(OPT_eh_frame_hdr);
|
||||
Config->EmitRelocs = Args.hasArg(OPT_emit_relocs);
|
||||
Config->EnableNewDtags = !Args.hasArg(OPT_disable_new_dtags);
|
||||
Config->Entry = getString(Args, OPT_entry);
|
||||
Config->Entry = Args.getLastArgValue(OPT_entry);
|
||||
Config->ExportDynamic =
|
||||
getArg(Args, OPT_export_dynamic, OPT_no_export_dynamic, false);
|
||||
Config->FatalWarnings =
|
||||
getArg(Args, OPT_fatal_warnings, OPT_no_fatal_warnings, false);
|
||||
Config->Fini = getString(Args, OPT_fini, "_fini");
|
||||
Config->Fini = Args.getLastArgValue(OPT_fini, "_fini");
|
||||
Config->GcSections = getArg(Args, OPT_gc_sections, OPT_no_gc_sections, false);
|
||||
Config->GdbIndex = Args.hasArg(OPT_gdb_index);
|
||||
Config->ICF = Args.hasArg(OPT_icf);
|
||||
Config->Init = getString(Args, OPT_init, "_init");
|
||||
Config->LTOAAPipeline = getString(Args, OPT_lto_aa_pipeline);
|
||||
Config->LTONewPmPasses = getString(Args, OPT_lto_newpm_passes);
|
||||
Config->Init = Args.getLastArgValue(OPT_init, "_init");
|
||||
Config->LTOAAPipeline = Args.getLastArgValue(OPT_lto_aa_pipeline);
|
||||
Config->LTONewPmPasses = Args.getLastArgValue(OPT_lto_newpm_passes);
|
||||
Config->LTOO = getInteger(Args, OPT_lto_O, 2);
|
||||
Config->LTOPartitions = getInteger(Args, OPT_lto_partitions, 1);
|
||||
Config->MapFile = getString(Args, OPT_Map);
|
||||
Config->MapFile = Args.getLastArgValue(OPT_Map);
|
||||
Config->NoGnuUnique = Args.hasArg(OPT_no_gnu_unique);
|
||||
Config->NoUndefinedVersion = Args.hasArg(OPT_no_undefined_version);
|
||||
Config->Nostdlib = Args.hasArg(OPT_nostdlib);
|
||||
Config->OFormatBinary = isOutputFormatBinary(Args);
|
||||
Config->Omagic = Args.hasArg(OPT_omagic);
|
||||
Config->OptRemarksFilename = getString(Args, OPT_opt_remarks_filename);
|
||||
Config->OptRemarksFilename = Args.getLastArgValue(OPT_opt_remarks_filename);
|
||||
Config->OptRemarksWithHotness = Args.hasArg(OPT_opt_remarks_with_hotness);
|
||||
Config->Optimize = getInteger(Args, OPT_O, 1);
|
||||
Config->OutputFile = getString(Args, OPT_o);
|
||||
Config->OutputFile = Args.getLastArgValue(OPT_o);
|
||||
Config->Pie = getArg(Args, OPT_pie, OPT_nopie, false);
|
||||
Config->PrintGcSections = Args.hasArg(OPT_print_gc_sections);
|
||||
Config->Rpath = getRpath(Args);
|
||||
|
@ -665,16 +658,16 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) {
|
|||
Config->SectionStartMap = getSectionStartMap(Args);
|
||||
Config->Shared = Args.hasArg(OPT_shared);
|
||||
Config->SingleRoRx = Args.hasArg(OPT_no_rosegment);
|
||||
Config->SoName = getString(Args, OPT_soname);
|
||||
Config->SoName = Args.getLastArgValue(OPT_soname);
|
||||
Config->SortSection = getSortSection(Args);
|
||||
Config->Strip = getStrip(Args);
|
||||
Config->Sysroot = getString(Args, OPT_sysroot);
|
||||
Config->Sysroot = Args.getLastArgValue(OPT_sysroot);
|
||||
Config->Target1Rel = getArg(Args, OPT_target1_rel, OPT_target1_abs, false);
|
||||
Config->Target2 = getTarget2(Args);
|
||||
Config->ThinLTOCacheDir = getString(Args, OPT_thinlto_cache_dir);
|
||||
Config->ThinLTOCachePolicy =
|
||||
check(parseCachePruningPolicy(getString(Args, OPT_thinlto_cache_policy)),
|
||||
"--thinlto-cache-policy: invalid cache policy");
|
||||
Config->ThinLTOCacheDir = Args.getLastArgValue(OPT_thinlto_cache_dir);
|
||||
Config->ThinLTOCachePolicy = check(
|
||||
parseCachePruningPolicy(Args.getLastArgValue(OPT_thinlto_cache_policy)),
|
||||
"--thinlto-cache-policy: invalid cache policy");
|
||||
Config->ThinLTOJobs = getInteger(Args, OPT_thinlto_jobs, -1u);
|
||||
Config->Threads = getArg(Args, OPT_threads, OPT_no_threads, true);
|
||||
Config->Trace = Args.hasArg(OPT_trace);
|
||||
|
@ -696,7 +689,8 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) {
|
|||
Config->ZWxneeded = hasZOption(Args, "wxneeded");
|
||||
|
||||
if (Config->LTOO > 3)
|
||||
error("invalid optimization level for LTO: " + getString(Args, OPT_lto_O));
|
||||
error("invalid optimization level for LTO: " +
|
||||
Args.getLastArgValue(OPT_lto_O));
|
||||
if (Config->LTOPartitions == 0)
|
||||
error("--lto-partitions: number of threads must be > 0");
|
||||
if (Config->ThinLTOJobs == 0)
|
||||
|
|
Loading…
Reference in New Issue