Index: ELF/Driver.cpp =================================================================== --- ELF/Driver.cpp +++ ELF/Driver.cpp @@ -869,7 +869,8 @@ void LinkerDriver::createFiles(opt::InputArgList &Args) { for (auto *Arg : Args) { - switch (Arg->getOption().getUnaliasedOption().getID()) { + unsigned ID = Arg->getOption().getUnaliasedOption().getID(); + switch (ID) { case OPT_library: addLibrary(Arg->getValue()); break; @@ -892,25 +893,19 @@ error(Twine("cannot find linker script ") + Arg->getValue()); break; case OPT_as_needed: - Config->AsNeeded = true; + case OPT_no_as_needed: + Config->AsNeeded = ID == OPT_as_needed; break; case OPT_format: InBinary = getBinaryOption(Arg->getValue()); break; - case OPT_no_as_needed: - Config->AsNeeded = false; - break; case OPT_Bstatic: - Config->Static = true; - break; case OPT_Bdynamic: - Config->Static = false; + Config->Static = ID == OPT_Bstatic; break; case OPT_whole_archive: - InWholeArchive = true; - break; case OPT_no_whole_archive: - InWholeArchive = false; + InWholeArchive = ID == OPT_whole_archive; break; case OPT_just_symbols: if (Optional MB = readFile(Arg->getValue())) { @@ -919,10 +914,8 @@ } break; case OPT_start_lib: - InLib = true; - break; case OPT_end_lib: - InLib = false; + InLib = ID == OPT_start_lib; break; } }