r240791 - clang-format some of the files in lib/Driver. NFC

Nico Weber thakis at chromium.org
Mon Jun 29 07:57:50 PDT 2015


On Mon, Jun 29, 2015 at 12:45 AM, Daniel Jasper <djasper at google.com> wrote:

> From what I understand, the people send out such a CL if they plan to make
> a reasonable amount of changes and use clang-format going forward.
>

Yes, this makes sense to me. But http://reviews.llvm.org/D10609 touched on
the order of 50 lines in a 3000 line file, so I'm not sure that applies
here.


> Now, the alternative would be to just reformat the lines affected by a
> patch (e.g. use git-clang-format). The latter has two disadvantages:
> 1. The actual patch is harder to understand as there are more formatting
> changes mixed into it.
> 2. If the state of the file is significantly different from what
> clang-format does, the lines affected by a patch might look quite
> inconsistent.
>
> I not trying to argue either way, just saying that the value of this patch
> is not in making the file more readable, but to ease further changes to it.
>
> On Sun, Jun 28, 2015 at 2:00 PM, Rafael EspĂ­ndola <
> rafael.espindola at gmail.com> wrote:
>
>> For what it is worth, I find clang-format an awesome tool for *fixing*
>> conflicts: just clang-format both ends before you merge.
>> On Jun 27, 2015 12:34 PM, "Nico Weber" <thakis at chromium.org> wrote:
>>
>>> Can we please not land CLs like this in the future? They screw up `svn
>>> blame` output, cause tons of local conflicts, and don't add all that much.
>>>
>>> On Fri, Jun 26, 2015 at 8:47 AM, Douglas Katzman <dougk at google.com>
>>> wrote:
>>>
>>>> Author: dougk
>>>> Date: Fri Jun 26 10:47:46 2015
>>>> New Revision: 240791
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=240791&view=rev
>>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D240791-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=HQQNmbImUf4F-mcwxbN9TPWVeRmDPUPU4dZwwCB61Pk&s=ehuiDRVzsaoAEE_Xwi0aZYBuWJWAIKpF0BvdqTqpOj8&e=>
>>>> Log:
>>>> clang-format some of the files in lib/Driver. NFC
>>>>
>>>> Nothing was hand edited afterward except a few literal strings
>>>> and comments that were poorly broken.
>>>>
>>>> Differential Revision: http://reviews.llvm.org/D10689
>>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10689&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=HQQNmbImUf4F-mcwxbN9TPWVeRmDPUPU4dZwwCB61Pk&s=KjQXFMmiibw0_SEtTwJ4CMCZ4f51wZJxUXrCis-mLJI&e=>
>>>>
>>>> Modified:
>>>>     cfe/trunk/lib/Driver/Driver.cpp
>>>>     cfe/trunk/lib/Driver/ToolChains.cpp
>>>>     cfe/trunk/lib/Driver/ToolChains.h
>>>>     cfe/trunk/lib/Driver/Tools.cpp
>>>>
>>>> Modified: cfe/trunk/lib/Driver/Driver.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=240791&r1=240790&r2=240791&view=diff
>>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Driver_Driver.cpp-3Frev-3D240791-26r1-3D240790-26r2-3D240791-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=HQQNmbImUf4F-mcwxbN9TPWVeRmDPUPU4dZwwCB61Pk&s=iFEgxCqDJj7sKJnBBLfAOJtr4_JAVx3j2I3JOxCPna8&e=>
>>>>
>>>> ==============================================================================
>>>> --- cfe/trunk/lib/Driver/Driver.cpp (original)
>>>> +++ cfe/trunk/lib/Driver/Driver.cpp Fri Jun 26 10:47:46 2015
>>>> @@ -58,7 +58,7 @@ Driver::Driver(StringRef ClangExecutable
>>>>        CCCUsePCH(true), SuppressMissingInputWarning(false) {
>>>>
>>>>    Name = llvm::sys::path::filename(ClangExecutable);
>>>> -  Dir  = llvm::sys::path::parent_path(ClangExecutable);
>>>> +  Dir = llvm::sys::path::parent_path(ClangExecutable);
>>>>
>>>>    // Compute the path to the resource directory.
>>>>    StringRef ClangResourceDir(CLANG_RESOURCE_DIR);
>>>> @@ -81,7 +81,7 @@ Driver::~Driver() {
>>>>
>>>>  void Driver::ParseDriverMode(ArrayRef<const char *> Args) {
>>>>    const std::string OptName =
>>>> -    getOpts().getOption(options::OPT_driver_mode).getPrefixedName();
>>>> +      getOpts().getOption(options::OPT_driver_mode).getPrefixedName();
>>>>
>>>>    for (const char *ArgPtr : Args) {
>>>>      // Ingore nullptrs, they are response file's EOL markers
>>>> @@ -93,11 +93,11 @@ void Driver::ParseDriverMode(ArrayRef<co
>>>>
>>>>      const StringRef Value = Arg.drop_front(OptName.size());
>>>>      const unsigned M = llvm::StringSwitch<unsigned>(Value)
>>>> -        .Case("gcc", GCCMode)
>>>> -        .Case("g++", GXXMode)
>>>> -        .Case("cpp", CPPMode)
>>>> -        .Case("cl",  CLMode)
>>>> -        .Default(~0U);
>>>> +                           .Case("gcc", GCCMode)
>>>> +                           .Case("g++", GXXMode)
>>>> +                           .Case("cpp", CPPMode)
>>>> +                           .Case("cl", CLMode)
>>>> +                           .Default(~0U);
>>>>
>>>>      if (M != ~0U)
>>>>        Mode = static_cast<DriverMode>(M);
>>>> @@ -112,7 +112,7 @@ InputArgList Driver::ParseArgStrings(Arr
>>>>    unsigned IncludedFlagsBitmask;
>>>>    unsigned ExcludedFlagsBitmask;
>>>>    std::tie(IncludedFlagsBitmask, ExcludedFlagsBitmask) =
>>>> -    getIncludeExcludeOptionFlagMasks();
>>>> +      getIncludeExcludeOptionFlagMasks();
>>>>
>>>>    unsigned MissingArgIndex, MissingArgCount;
>>>>    InputArgList Args =
>>>> @@ -132,8 +132,7 @@ InputArgList Driver::ParseArgStrings(Arr
>>>>      }
>>>>
>>>>      // Warn about -mcpu= without an argument.
>>>> -    if (A->getOption().matches(options::OPT_mcpu_EQ) &&
>>>> -        A->containsValue("")) {
>>>> +    if (A->getOption().matches(options::OPT_mcpu_EQ) &&
>>>> A->containsValue("")) {
>>>>        Diag(clang::diag::warn_drv_empty_joined_argument) <<
>>>> A->getAsString(Args);
>>>>      }
>>>>    }
>>>> @@ -147,14 +146,13 @@ InputArgList Driver::ParseArgStrings(Arr
>>>>  // Determine which compilation mode we are in. We look for options
>>>> which
>>>>  // affect the phase, starting with the earliest phases, and record
>>>> which
>>>>  // option we used to determine the final phase.
>>>> -phases::ID Driver::getFinalPhase(const DerivedArgList &DAL, Arg
>>>> **FinalPhaseArg)
>>>> -const {
>>>> +phases::ID Driver::getFinalPhase(const DerivedArgList &DAL,
>>>> +                                 Arg **FinalPhaseArg) const {
>>>>    Arg *PhaseArg = nullptr;
>>>>    phases::ID FinalPhase;
>>>>
>>>>    // -{E,EP,P,M,MM} only run the preprocessor.
>>>> -  if (CCCIsCPP() ||
>>>> -      (PhaseArg = DAL.getLastArg(options::OPT_E)) ||
>>>> +  if (CCCIsCPP() || (PhaseArg = DAL.getLastArg(options::OPT_E)) ||
>>>>        (PhaseArg = DAL.getLastArg(options::OPT__SLASH_EP)) ||
>>>>        (PhaseArg = DAL.getLastArg(options::OPT_M, options::OPT_MM)) ||
>>>>        (PhaseArg = DAL.getLastArg(options::OPT__SLASH_P))) {
>>>> @@ -190,7 +188,7 @@ const {
>>>>    return FinalPhase;
>>>>  }
>>>>
>>>> -static Arg* MakeInputArg(DerivedArgList &Args, OptTable *Opts,
>>>> +static Arg *MakeInputArg(DerivedArgList &Args, OptTable *Opts,
>>>>                           StringRef Value) {
>>>>    Arg *A = new Arg(Opts->getOption(options::OPT_INPUT), Value,
>>>>                     Args.getBaseArgs().MakeIndex(Value), Value.data());
>>>> @@ -248,15 +246,13 @@ DerivedArgList *Driver::TranslateInputAr
>>>>
>>>>        // Rewrite unless -nostdlib is present.
>>>>        if (!HasNostdlib && Value == "stdc++") {
>>>> -        DAL->AddFlagArg(A, Opts->getOption(
>>>> -                              options::OPT_Z_reserved_lib_stdcxx));
>>>> +        DAL->AddFlagArg(A,
>>>> Opts->getOption(options::OPT_Z_reserved_lib_stdcxx));
>>>>          continue;
>>>>        }
>>>>
>>>>        // Rewrite unconditionally.
>>>>        if (Value == "cc_kext") {
>>>> -        DAL->AddFlagArg(A, Opts->getOption(
>>>> -                              options::OPT_Z_reserved_lib_cckext));
>>>> +        DAL->AddFlagArg(A,
>>>> Opts->getOption(options::OPT_Z_reserved_lib_cckext));
>>>>          continue;
>>>>        }
>>>>      }
>>>> @@ -272,8 +268,8 @@ DerivedArgList *Driver::TranslateInputAr
>>>>      DAL->append(A);
>>>>    }
>>>>
>>>> -  // Add a default value of -mlinker-version=, if one was given and
>>>> the user
>>>> -  // didn't specify one.
>>>> +// Add a default value of -mlinker-version=, if one was given and the
>>>> user
>>>> +// didn't specify one.
>>>>  #if defined(HOST_LINK_VERSION)
>>>>    if (!Args.hasArg(options::OPT_mlinker_version_EQ) &&
>>>>        strlen(HOST_LINK_VERSION) > 0) {
>>>> @@ -295,8 +291,8 @@ Compilation *Driver::BuildCompilation(Ar
>>>>    if (char *env = ::getenv("COMPILER_PATH")) {
>>>>      StringRef CompilerPath = env;
>>>>      while (!CompilerPath.empty()) {
>>>> -      std::pair<StringRef, StringRef> Split
>>>> -        = CompilerPath.split(llvm::sys::EnvPathSeparator);
>>>> +      std::pair<StringRef, StringRef> Split =
>>>> +          CompilerPath.split(llvm::sys::EnvPathSeparator);
>>>>        PrefixDirs.push_back(Split.first);
>>>>        CompilerPath = Split.second;
>>>>      }
>>>> @@ -387,8 +383,8 @@ Compilation *Driver::BuildCompilation(Ar
>>>>    // Construct the list of abstract actions to perform for this
>>>> compilation. On
>>>>    // MachO targets this uses the driver-driver and universal actions.
>>>>    if (TC.getTriple().isOSBinFormatMachO())
>>>> -    BuildUniversalActions(C->getDefaultToolChain(), C->getArgs(),
>>>> -                          Inputs, C->getActions());
>>>> +    BuildUniversalActions(C->getDefaultToolChain(), C->getArgs(),
>>>> Inputs,
>>>> +                          C->getActions());
>>>>    else
>>>>      BuildActions(C->getDefaultToolChain(), C->getArgs(), Inputs,
>>>>                   C->getActions());
>>>> @@ -420,8 +416,8 @@ void Driver::generateCompilationDiagnost
>>>>    PrintVersion(C, llvm::errs());
>>>>
>>>>    Diag(clang::diag::note_drv_command_failed_diag_msg)
>>>> -    << "PLEASE submit a bug report to " BUG_REPORT_URL " and include
>>>> the "
>>>> -    "crash backtrace, preprocessed source, and associated run script.";
>>>> +      << "PLEASE submit a bug report to " BUG_REPORT_URL " and include
>>>> the "
>>>> +         "crash backtrace, preprocessed source, and associated run
>>>> script.";
>>>>
>>>>    // Suppress driver output and emit preprocessor output to temp file.
>>>>    Mode = CPPMode;
>>>> @@ -446,12 +442,12 @@ void Driver::generateCompilationDiagnost
>>>>
>>>>      // Ignore input from stdin or any inputs that cannot be
>>>> preprocessed.
>>>>      // Check type first as not all linker inputs have a value.
>>>> -   if (types::getPreprocessedType(it->first) == types::TY_INVALID) {
>>>> +    if (types::getPreprocessedType(it->first) == types::TY_INVALID) {
>>>>        IgnoreInput = true;
>>>>      } else if (!strcmp(it->second->getValue(), "-")) {
>>>>        Diag(clang::diag::note_drv_command_failed_diag_msg)
>>>> -        << "Error generating preprocessed source(s) - ignoring input
>>>> from stdin"
>>>> -        ".";
>>>> +          << "Error generating preprocessed source(s) - "
>>>> +             "ignoring input from stdin.";
>>>>        IgnoreInput = true;
>>>>      }
>>>>
>>>> @@ -465,7 +461,8 @@ void Driver::generateCompilationDiagnost
>>>>
>>>>    if (Inputs.empty()) {
>>>>      Diag(clang::diag::note_drv_command_failed_diag_msg)
>>>> -      << "Error generating preprocessed source(s) - no preprocessable
>>>> inputs.";
>>>> +        << "Error generating preprocessed source(s) - "
>>>> +           "no preprocessable inputs.";
>>>>      return;
>>>>    }
>>>>
>>>> @@ -480,8 +477,8 @@ void Driver::generateCompilationDiagnost
>>>>    }
>>>>    if (ArchNames.size() > 1) {
>>>>      Diag(clang::diag::note_drv_command_failed_diag_msg)
>>>> -      << "Error generating preprocessed source(s) - cannot generate "
>>>> -      "preprocessed source with multiple -arch options.";
>>>> +        << "Error generating preprocessed source(s) - cannot generate "
>>>> +           "preprocessed source with multiple -arch options.";
>>>>      return;
>>>>    }
>>>>
>>>> @@ -498,7 +495,7 @@ void Driver::generateCompilationDiagnost
>>>>    // If there were errors building the compilation, quit now.
>>>>    if (Trap.hasErrorOccurred()) {
>>>>      Diag(clang::diag::note_drv_command_failed_diag_msg)
>>>> -      << "Error generating preprocessed source(s).";
>>>> +        << "Error generating preprocessed source(s).";
>>>>      return;
>>>>    }
>>>>
>>>> @@ -512,14 +509,14 @@ void Driver::generateCompilationDiagnost
>>>>        C.CleanupFileList(C.getTempFiles(), true);
>>>>
>>>>      Diag(clang::diag::note_drv_command_failed_diag_msg)
>>>> -      << "Error generating preprocessed source(s).";
>>>> +        << "Error generating preprocessed source(s).";
>>>>      return;
>>>>    }
>>>>
>>>>    const ArgStringList &TempFiles = C.getTempFiles();
>>>>    if (TempFiles.empty()) {
>>>>      Diag(clang::diag::note_drv_command_failed_diag_msg)
>>>> -      << "Error generating preprocessed source(s).";
>>>> +        << "Error generating preprocessed source(s).";
>>>>      return;
>>>>    }
>>>>
>>>> @@ -583,12 +580,13 @@ void Driver::setUpResponseFiles(Compilat
>>>>      return;
>>>>
>>>>    std::string TmpName = GetTemporaryPath("response", "txt");
>>>> -  CurCommand->setResponseFile(C.addTempFile(C.getArgs().MakeArgString(
>>>> -      TmpName.c_str())));
>>>> +  CurCommand->setResponseFile(
>>>> +      C.addTempFile(C.getArgs().MakeArgString(TmpName.c_str())));
>>>>  }
>>>>
>>>> -int Driver::ExecuteCompilation(Compilation &C,
>>>> -    SmallVectorImpl< std::pair<int, const Command *> >
>>>> &FailingCommands) {
>>>> +int Driver::ExecuteCompilation(
>>>> +    Compilation &C,
>>>> +    SmallVectorImpl<std::pair<int, const Command *>> &FailingCommands)
>>>> {
>>>>    // Just print if -### was present.
>>>>    if (C.getArgs().hasArg(options::OPT__HASH_HASH_HASH)) {
>>>>      C.getJobs().Print(llvm::errs(), "\n", true);
>>>> @@ -640,10 +638,10 @@ int Driver::ExecuteCompilation(Compilati
>>>>        // FIXME: See FIXME above regarding result code interpretation.
>>>>        if (Res < 0)
>>>>          Diag(clang::diag::err_drv_command_signalled)
>>>> -          << FailingTool.getShortName();
>>>> +            << FailingTool.getShortName();
>>>>        else
>>>> -        Diag(clang::diag::err_drv_command_failed)
>>>> -          << FailingTool.getShortName() << Res;
>>>> +        Diag(clang::diag::err_drv_command_failed) <<
>>>> FailingTool.getShortName()
>>>> +                                                  << Res;
>>>>      }
>>>>    }
>>>>    return 0;
>>>> @@ -653,7 +651,7 @@ void Driver::PrintHelp(bool ShowHidden)
>>>>    unsigned IncludedFlagsBitmask;
>>>>    unsigned ExcludedFlagsBitmask;
>>>>    std::tie(IncludedFlagsBitmask, ExcludedFlagsBitmask) =
>>>> -    getIncludeExcludeOptionFlagMasks();
>>>> +      getIncludeExcludeOptionFlagMasks();
>>>>
>>>>    ExcludedFlagsBitmask |= options::NoDriverOption;
>>>>    if (!ShowHidden)
>>>> @@ -684,8 +682,8 @@ void Driver::PrintVersion(const Compilat
>>>>  /// option.
>>>>  static void PrintDiagnosticCategories(raw_ostream &OS) {
>>>>    // Skip the empty category.
>>>> -  for (unsigned i = 1, max = DiagnosticIDs::getNumberOfCategories();
>>>> -       i != max; ++i)
>>>> +  for (unsigned i = 1, max = DiagnosticIDs::getNumberOfCategories(); i
>>>> != max;
>>>> +       ++i)
>>>>      OS << i << ',' << DiagnosticIDs::getCategoryNameFromID(i) << '\n';
>>>>  }
>>>>
>>>> @@ -741,7 +739,8 @@ bool Driver::HandleImmediateArgs(const C
>>>>      llvm::outs() << "programs: =";
>>>>      bool separator = false;
>>>>      for (const std::string &Path : TC.getProgramPaths()) {
>>>> -      if (separator) llvm::outs() << ':';
>>>> +      if (separator)
>>>> +        llvm::outs() << ':';
>>>>        llvm::outs() << Path;
>>>>        separator = true;
>>>>      }
>>>> @@ -817,7 +816,7 @@ bool Driver::HandleImmediateArgs(const C
>>>>  // and latest-occuring action. Traversal is in pre-order, visiting the
>>>>  // inputs to each action before printing the action itself.
>>>>  static unsigned PrintActions1(const Compilation &C, Action *A,
>>>> -                              std::map<Action*, unsigned> &Ids) {
>>>> +                              std::map<Action *, unsigned> &Ids) {
>>>>    if (Ids.count(A)) // A was already visited.
>>>>      return Ids[A];
>>>>
>>>> @@ -858,8 +857,7 @@ void Driver::PrintActions(const Compilat
>>>>  /// \brief Check whether the given input tree contains any compilation
>>>> or
>>>>  /// assembly actions.
>>>>  static bool ContainsCompileOrAssembleAction(const Action *A) {
>>>> -  if (isa<CompileJobAction>(A) ||
>>>> -      isa<BackendJobAction>(A) ||
>>>> +  if (isa<CompileJobAction>(A) || isa<BackendJobAction>(A) ||
>>>>        isa<AssembleJobAction>(A))
>>>>      return true;
>>>>
>>>> @@ -870,8 +868,7 @@ static bool ContainsCompileOrAssembleAct
>>>>    return false;
>>>>  }
>>>>
>>>> -void Driver::BuildUniversalActions(const ToolChain &TC,
>>>> -                                   DerivedArgList &Args,
>>>> +void Driver::BuildUniversalActions(const ToolChain &TC, DerivedArgList
>>>> &Args,
>>>>                                     const InputList &BAInputs,
>>>>                                     ActionList &Actions) const {
>>>>    llvm::PrettyStackTraceString CrashInfo("Building universal build
>>>> actions");
>>>> @@ -884,10 +881,9 @@ void Driver::BuildUniversalActions(const
>>>>        // Validate the option here; we don't save the type here because
>>>> its
>>>>        // particular spelling may participate in other driver choices.
>>>>        llvm::Triple::ArchType Arch =
>>>> -        tools::darwin::getArchTypeForMachOArchName(A->getValue());
>>>> +          tools::darwin::getArchTypeForMachOArchName(A->getValue());
>>>>        if (Arch == llvm::Triple::UnknownArch) {
>>>> -        Diag(clang::diag::err_drv_invalid_arch_name)
>>>> -          << A->getAsString(Args);
>>>> +        Diag(clang::diag::err_drv_invalid_arch_name) <<
>>>> A->getAsString(Args);
>>>>          continue;
>>>>        }
>>>>
>>>> @@ -918,7 +914,7 @@ void Driver::BuildUniversalActions(const
>>>>
>>>>      if (Archs.size() > 1 && !types::canLipoType(Act->getType()))
>>>>        Diag(clang::diag::err_drv_invalid_output_with_multiple_archs)
>>>> -        << types::getTypeName(Act->getType());
>>>> +          << types::getTypeName(Act->getType());
>>>>
>>>>      ActionList Inputs;
>>>>      for (unsigned i = 0, e = Archs.size(); i != e; ++i) {
>>>> @@ -1008,10 +1004,11 @@ void Driver::BuildInputs(const ToolChain
>>>>                                           options::OPT__SLASH_TP)) {
>>>>      InputTypeArg = TCTP;
>>>>      InputType = TCTP->getOption().matches(options::OPT__SLASH_TC)
>>>> -        ? types::TY_C : types::TY_CXX;
>>>> +                    ? types::TY_C
>>>> +                    : types::TY_CXX;
>>>>
>>>> -    arg_iterator it = Args.filtered_begin(options::OPT__SLASH_TC,
>>>> -                                          options::OPT__SLASH_TP);
>>>> +    arg_iterator it =
>>>> +        Args.filtered_begin(options::OPT__SLASH_TC,
>>>> options::OPT__SLASH_TP);
>>>>      const arg_iterator ie = Args.filtered_end();
>>>>      Arg *Previous = *it++;
>>>>      bool ShowNote = false;
>>>> @@ -1073,7 +1070,7 @@ void Driver::BuildInputs(const ToolChain
>>>>
>>>>              if (Ty != OldTy)
>>>>                Diag(clang::diag::warn_drv_treating_input_as_cxx)
>>>> -                << getTypeName(OldTy) << getTypeName(Ty);
>>>> +                  << getTypeName(OldTy) << getTypeName(Ty);
>>>>            }
>>>>          }
>>>>
>>>> @@ -1175,7 +1172,7 @@ void Driver::BuildActions(const ToolChai
>>>>          !llvm::sys::path::is_separator(V.back())) {
>>>>        // Check whether /Fo tries to name an output file for multiple
>>>> inputs.
>>>>
>>>>  Diag(clang::diag::err_drv_out_file_argument_with_multiple_sources)
>>>> -        << A->getSpelling() << V;
>>>> +          << A->getSpelling() << V;
>>>>        Args.eraseArg(options::OPT__SLASH_Fo);
>>>>      }
>>>>    }
>>>> @@ -1187,7 +1184,7 @@ void Driver::BuildActions(const ToolChai
>>>>          !llvm::sys::path::is_separator(V.back())) {
>>>>        // Check whether /Fa tries to name an asm file for multiple
>>>> inputs.
>>>>
>>>>  Diag(clang::diag::err_drv_out_file_argument_with_multiple_sources)
>>>> -        << A->getSpelling() << V;
>>>> +          << A->getSpelling() << V;
>>>>        Args.eraseArg(options::OPT__SLASH_Fa);
>>>>      }
>>>>    }
>>>> @@ -1227,30 +1224,27 @@ void Driver::BuildActions(const ToolChai
>>>>        // by a command-line argument with a corresponding Arg.
>>>>        if (CCCIsCPP())
>>>>          Diag(clang::diag::warn_drv_input_file_unused_by_cpp)
>>>> -          << InputArg->getAsString(Args)
>>>> -          << getPhaseName(InitialPhase);
>>>> +            << InputArg->getAsString(Args) <<
>>>> getPhaseName(InitialPhase);
>>>>        // Special case '-E' warning on a previously preprocessed file
>>>> to make
>>>>        // more sense.
>>>>        else if (InitialPhase == phases::Compile &&
>>>>                 FinalPhase == phases::Preprocess &&
>>>>                 getPreprocessedType(InputType) == types::TY_INVALID)
>>>>          Diag(clang::diag::warn_drv_preprocessed_input_file_unused)
>>>> -          << InputArg->getAsString(Args)
>>>> -          << !!FinalPhaseArg
>>>> -          << (FinalPhaseArg ? FinalPhaseArg->getOption().getName() :
>>>> "");
>>>> +            << InputArg->getAsString(Args) << !!FinalPhaseArg
>>>> +            << (FinalPhaseArg ? FinalPhaseArg->getOption().getName() :
>>>> "");
>>>>        else
>>>>          Diag(clang::diag::warn_drv_input_file_unused)
>>>> -          << InputArg->getAsString(Args)
>>>> -          << getPhaseName(InitialPhase)
>>>> -          << !!FinalPhaseArg
>>>> -          << (FinalPhaseArg ? FinalPhaseArg->getOption().getName() :
>>>> "");
>>>> +            << InputArg->getAsString(Args) <<
>>>> getPhaseName(InitialPhase)
>>>> +            << !!FinalPhaseArg
>>>> +            << (FinalPhaseArg ? FinalPhaseArg->getOption().getName() :
>>>> "");
>>>>        continue;
>>>>      }
>>>>
>>>>      // Build the pipeline for this file.
>>>>      std::unique_ptr<Action> Current(new InputAction(*InputArg,
>>>> InputType));
>>>> -    for (SmallVectorImpl<phases::ID>::iterator
>>>> -           i = PL.begin(), e = PL.end(); i != e; ++i) {
>>>> +    for (SmallVectorImpl<phases::ID>::iterator i = PL.begin(), e =
>>>> PL.end();
>>>> +         i != e; ++i) {
>>>>        phases::ID Phase = *i;
>>>>
>>>>        // We are done if this step is past what the user requested.
>>>> @@ -1303,7 +1297,8 @@ Driver::ConstructPhaseAction(const ToolC
>>>>    llvm::PrettyStackTraceString CrashInfo("Constructing phase actions");
>>>>    // Build the appropriate action.
>>>>    switch (Phase) {
>>>> -  case phases::Link: llvm_unreachable("link action invalid here.");
>>>> +  case phases::Link:
>>>> +    llvm_unreachable("link action invalid here.");
>>>>    case phases::Preprocess: {
>>>>      types::ID OutputTy;
>>>>      // -{M, MM} alter the output type.
>>>> @@ -1359,12 +1354,12 @@ Driver::ConstructPhaseAction(const ToolC
>>>>    case phases::Backend: {
>>>>      if (IsUsingLTO(Args)) {
>>>>        types::ID Output =
>>>> -        Args.hasArg(options::OPT_S) ? types::TY_LTO_IR :
>>>> types::TY_LTO_BC;
>>>> +          Args.hasArg(options::OPT_S) ? types::TY_LTO_IR :
>>>> types::TY_LTO_BC;
>>>>        return llvm::make_unique<BackendJobAction>(std::move(Input),
>>>> Output);
>>>>      }
>>>>      if (Args.hasArg(options::OPT_emit_llvm)) {
>>>>        types::ID Output =
>>>> -        Args.hasArg(options::OPT_S) ? types::TY_LLVM_IR :
>>>> types::TY_LLVM_BC;
>>>> +          Args.hasArg(options::OPT_S) ? types::TY_LLVM_IR :
>>>> types::TY_LLVM_BC;
>>>>        return llvm::make_unique<BackendJobAction>(std::move(Input),
>>>> Output);
>>>>      }
>>>>      return llvm::make_unique<BackendJobAction>(std::move(Input),
>>>> @@ -1425,11 +1420,10 @@ void Driver::BuildJobs(Compilation &C) c
>>>>
>>>>      InputInfo II;
>>>>      BuildJobsForAction(C, A, &C.getDefaultToolChain(),
>>>> -                       /*BoundArch*/nullptr,
>>>> +                       /*BoundArch*/ nullptr,
>>>>                         /*AtTopLevel*/ true,
>>>>                         /*MultipleArchs*/ ArchNames.size() > 1,
>>>> -                       /*LinkingOutput*/ LinkingOutput,
>>>> -                       II);
>>>> +                       /*LinkingOutput*/ LinkingOutput, II);
>>>>    }
>>>>
>>>>    // If the user passed -Qunused-arguments or there were errors, don't
>>>> warn
>>>> @@ -1439,10 +1433,10 @@ void Driver::BuildJobs(Compilation &C) c
>>>>      return;
>>>>
>>>>    // Claim -### here.
>>>> -  (void) C.getArgs().hasArg(options::OPT__HASH_HASH_HASH);
>>>> +  (void)C.getArgs().hasArg(options::OPT__HASH_HASH_HASH);
>>>>
>>>>    // Claim --driver-mode, it was handled earlier.
>>>> -  (void) C.getArgs().hasArg(options::OPT_driver_mode);
>>>> +  (void)C.getArgs().hasArg(options::OPT_driver_mode);
>>>>
>>>>    for (Arg *A : C.getArgs()) {
>>>>      // FIXME: It would be nice to be able to send the argument to the
>>>> @@ -1470,7 +1464,7 @@ void Driver::BuildJobs(Compilation &C) c
>>>>        }
>>>>
>>>>        Diag(clang::diag::warn_drv_unused_argument)
>>>> -        << A->getAsString(C.getArgs());
>>>> +          << A->getAsString(C.getArgs());
>>>>      }
>>>>    }
>>>>  }
>>>> @@ -1484,13 +1478,12 @@ static const Tool *SelectToolForJob(Comp
>>>>    // bottom up, so what we are actually looking for is an assembler
>>>> job with a
>>>>    // compiler input.
>>>>
>>>> -  if (TC->useIntegratedAs() &&
>>>> -      !SaveTemps &&
>>>> +  if (TC->useIntegratedAs() && !SaveTemps &&
>>>>        !C.getArgs().hasArg(options::OPT_via_file_asm) &&
>>>>        !C.getArgs().hasArg(options::OPT__SLASH_FA) &&
>>>>        !C.getArgs().hasArg(options::OPT__SLASH_Fa) &&
>>>> -      isa<AssembleJobAction>(JA) &&
>>>> -      Inputs->size() == 1 && isa<BackendJobAction>(*Inputs->begin())) {
>>>> +      isa<AssembleJobAction>(JA) && Inputs->size() == 1 &&
>>>> +      isa<BackendJobAction>(*Inputs->begin())) {
>>>>      // A BackendJob is always preceded by a CompileJob, and without
>>>>      // -save-temps they will always get combined together, so instead
>>>> of
>>>>      // checking the backend tool, check if the tool for the CompileJob
>>>> @@ -1531,8 +1524,7 @@ static const Tool *SelectToolForJob(Comp
>>>>    // (irrelevant since we don't support combine yet).
>>>>    if (Inputs->size() == 1 &&
>>>> isa<PreprocessJobAction>(*Inputs->begin()) &&
>>>>        !C.getArgs().hasArg(options::OPT_no_integrated_cpp) &&
>>>> -      !C.getArgs().hasArg(options::OPT_traditional_cpp) &&
>>>> -      !SaveTemps &&
>>>> +      !C.getArgs().hasArg(options::OPT_traditional_cpp) && !SaveTemps
>>>> &&
>>>>        !C.getArgs().hasArg(options::OPT_rewrite_objc) &&
>>>>        ToolForJob->hasIntegratedCPP())
>>>>      Inputs = &(*Inputs)[0]->getInputs();
>>>> @@ -1540,12 +1532,9 @@ static const Tool *SelectToolForJob(Comp
>>>>    return ToolForJob;
>>>>  }
>>>>
>>>> -void Driver::BuildJobsForAction(Compilation &C,
>>>> -                                const Action *A,
>>>> -                                const ToolChain *TC,
>>>> -                                const char *BoundArch,
>>>> -                                bool AtTopLevel,
>>>> -                                bool MultipleArchs,
>>>> +void Driver::BuildJobsForAction(Compilation &C, const Action *A,
>>>> +                                const ToolChain *TC, const char
>>>> *BoundArch,
>>>> +                                bool AtTopLevel, bool MultipleArchs,
>>>>                                  const char *LinkingOutput,
>>>>                                  InputInfo &Result) const {
>>>>    llvm::PrettyStackTraceString CrashInfo("Building compilation jobs");
>>>> @@ -1573,8 +1562,8 @@ void Driver::BuildJobsForAction(Compilat
>>>>      else
>>>>        TC = &C.getDefaultToolChain();
>>>>
>>>> -    BuildJobsForAction(C, *BAA->begin(), TC, BAA->getArchName(),
>>>> -                       AtTopLevel, MultipleArchs, LinkingOutput,
>>>> Result);
>>>> +    BuildJobsForAction(C, *BAA->begin(), TC, BAA->getArchName(),
>>>> AtTopLevel,
>>>> +                       MultipleArchs, LinkingOutput, Result);
>>>>      return;
>>>>    }
>>>>
>>>> @@ -1642,7 +1631,8 @@ const char *Driver::getDefaultImageName(
>>>>  /// does not provide a filename, then use BaseName, and use the
>>>> extension
>>>>  /// suitable for FileType.
>>>>  static const char *MakeCLOutputFilename(const ArgList &Args, StringRef
>>>> ArgValue,
>>>> -                                        StringRef BaseName, types::ID
>>>> FileType) {
>>>> +                                        StringRef BaseName,
>>>> +                                        types::ID FileType) {
>>>>    SmallString<128> Filename = ArgValue;
>>>>
>>>>    if (ArgValue.empty()) {
>>>> @@ -1669,16 +1659,13 @@ static const char *MakeCLOutputFilename(
>>>>    return Args.MakeArgString(Filename.c_str());
>>>>  }
>>>>
>>>> -const char *Driver::GetNamedOutputPath(Compilation &C,
>>>> -                                       const JobAction &JA,
>>>> +const char *Driver::GetNamedOutputPath(Compilation &C, const JobAction
>>>> &JA,
>>>>                                         const char *BaseInput,
>>>> -                                       const char *BoundArch,
>>>> -                                       bool AtTopLevel,
>>>> +                                       const char *BoundArch, bool
>>>> AtTopLevel,
>>>>                                         bool MultipleArchs) const {
>>>>    llvm::PrettyStackTraceString CrashInfo("Computing output path");
>>>>    // Output to a user requested destination?
>>>> -  if (AtTopLevel && !isa<DsymutilJobAction>(JA) &&
>>>> -      !isa<VerifyJobAction>(JA)) {
>>>> +  if (AtTopLevel && !isa<DsymutilJobAction>(JA) &&
>>>> !isa<VerifyJobAction>(JA)) {
>>>>      if (Arg *FinalOutput = C.getArgs().getLastArg(options::OPT_o))
>>>>        return C.addResultFile(FinalOutput->getValue(), &JA);
>>>>    }
>>>> @@ -1690,8 +1677,9 @@ const char *Driver::GetNamedOutputPath(C
>>>>      StringRef NameArg;
>>>>      if (Arg *A = C.getArgs().getLastArg(options::OPT__SLASH_Fi))
>>>>        NameArg = A->getValue();
>>>> -    return C.addResultFile(MakeCLOutputFilename(C.getArgs(), NameArg,
>>>> BaseName,
>>>> -                                                types::TY_PP_C), &JA);
>>>> +    return C.addResultFile(
>>>> +        MakeCLOutputFilename(C.getArgs(), NameArg, BaseName,
>>>> types::TY_PP_C),
>>>> +        &JA);
>>>>    }
>>>>
>>>>    // Default to writing to stdout?
>>>> @@ -1706,19 +1694,19 @@ const char *Driver::GetNamedOutputPath(C
>>>>      // Use /Fa and the input filename to determine the asm file name.
>>>>      StringRef BaseName = llvm::sys::path::filename(BaseInput);
>>>>      StringRef FaValue =
>>>> C.getArgs().getLastArgValue(options::OPT__SLASH_Fa);
>>>> -    return C.addResultFile(MakeCLOutputFilename(C.getArgs(), FaValue,
>>>> BaseName,
>>>> -                                                JA.getType()), &JA);
>>>> +    return C.addResultFile(
>>>> +        MakeCLOutputFilename(C.getArgs(), FaValue, BaseName,
>>>> JA.getType()),
>>>> +        &JA);
>>>>    }
>>>>
>>>>    // Output to a temporary file?
>>>>    if ((!AtTopLevel && !isSaveTempsEnabled() &&
>>>> -        !C.getArgs().hasArg(options::OPT__SLASH_Fo)) ||
>>>> +       !C.getArgs().hasArg(options::OPT__SLASH_Fo)) ||
>>>>        CCGenDiagnostics) {
>>>>      StringRef Name = llvm::sys::path::filename(BaseInput);
>>>>      std::pair<StringRef, StringRef> Split = Name.split('.');
>>>> -    std::string TmpName =
>>>> -      GetTemporaryPath(Split.first,
>>>> -          types::getTypeTempSuffix(JA.getType(), IsCLMode()));
>>>> +    std::string TmpName = GetTemporaryPath(
>>>> +        Split.first, types::getTypeTempSuffix(JA.getType(),
>>>> IsCLMode()));
>>>>      return C.addTempFile(C.getArgs().MakeArgString(TmpName.c_str()));
>>>>    }
>>>>
>>>> @@ -1737,22 +1725,27 @@ const char *Driver::GetNamedOutputPath(C
>>>>    if (JA.getType() == types::TY_Object &&
>>>>        C.getArgs().hasArg(options::OPT__SLASH_Fo,
>>>> options::OPT__SLASH_o)) {
>>>>      // The /Fo or /o flag decides the object filename.
>>>> -    StringRef Val = C.getArgs().getLastArg(options::OPT__SLASH_Fo,
>>>> -
>>>>  options::OPT__SLASH_o)->getValue();
>>>> -    NamedOutput = MakeCLOutputFilename(C.getArgs(), Val, BaseName,
>>>> -                                       types::TY_Object);
>>>> +    StringRef Val =
>>>> +        C.getArgs()
>>>> +            .getLastArg(options::OPT__SLASH_Fo, options::OPT__SLASH_o)
>>>> +            ->getValue();
>>>> +    NamedOutput =
>>>> +        MakeCLOutputFilename(C.getArgs(), Val, BaseName,
>>>> types::TY_Object);
>>>>    } else if (JA.getType() == types::TY_Image &&
>>>> -             C.getArgs().hasArg(options::OPT__SLASH_Fe,
>>>> options::OPT__SLASH_o)) {
>>>> +             C.getArgs().hasArg(options::OPT__SLASH_Fe,
>>>> +                                options::OPT__SLASH_o)) {
>>>>      // The /Fe or /o flag names the linked file.
>>>> -    StringRef Val = C.getArgs().getLastArg(options::OPT__SLASH_Fe,
>>>> -
>>>>  options::OPT__SLASH_o)->getValue();
>>>> -    NamedOutput = MakeCLOutputFilename(C.getArgs(), Val, BaseName,
>>>> -                                       types::TY_Image);
>>>> +    StringRef Val =
>>>> +        C.getArgs()
>>>> +            .getLastArg(options::OPT__SLASH_Fe, options::OPT__SLASH_o)
>>>> +            ->getValue();
>>>> +    NamedOutput =
>>>> +        MakeCLOutputFilename(C.getArgs(), Val, BaseName,
>>>> types::TY_Image);
>>>>    } else if (JA.getType() == types::TY_Image) {
>>>>      if (IsCLMode()) {
>>>>        // clang-cl uses BaseName for the executable name.
>>>> -      NamedOutput = MakeCLOutputFilename(C.getArgs(), "", BaseName,
>>>> -                                         types::TY_Image);
>>>> +      NamedOutput =
>>>> +          MakeCLOutputFilename(C.getArgs(), "", BaseName,
>>>> types::TY_Image);
>>>>      } else if (MultipleArchs && BoundArch) {
>>>>        SmallString<128> Output(getDefaultImageName());
>>>>        Output += "-";
>>>> @@ -1806,9 +1799,8 @@ const char *Driver::GetNamedOutputPath(C
>>>>      if (SameFile) {
>>>>        StringRef Name = llvm::sys::path::filename(BaseInput);
>>>>        std::pair<StringRef, StringRef> Split = Name.split('.');
>>>> -      std::string TmpName =
>>>> -        GetTemporaryPath(Split.first,
>>>> -            types::getTypeTempSuffix(JA.getType(), IsCLMode()));
>>>> +      std::string TmpName = GetTemporaryPath(
>>>> +          Split.first, types::getTypeTempSuffix(JA.getType(),
>>>> IsCLMode()));
>>>>        return C.addTempFile(C.getArgs().MakeArgString(TmpName.c_str()));
>>>>      }
>>>>    }
>>>> @@ -1855,9 +1847,9 @@ std::string Driver::GetFilePath(const ch
>>>>    return Name;
>>>>  }
>>>>
>>>> -void
>>>> -Driver::generatePrefixedToolNames(const char *Tool, const ToolChain
>>>> &TC,
>>>> -                                  SmallVectorImpl<std::string> &Names)
>>>> const {
>>>> +void Driver::generatePrefixedToolNames(
>>>> +    const char *Tool, const ToolChain &TC,
>>>> +    SmallVectorImpl<std::string> &Names) const {
>>>>    // FIXME: Needs a better variable than DefaultTargetTriple
>>>>    Names.emplace_back(DefaultTargetTriple + "-" + Tool);
>>>>    Names.emplace_back(Tool);
>>>> @@ -1909,8 +1901,8 @@ std::string Driver::GetProgramPath(const
>>>>    return Name;
>>>>  }
>>>>
>>>> -std::string Driver::GetTemporaryPath(StringRef Prefix, const char
>>>> *Suffix)
>>>> -  const {
>>>> +std::string Driver::GetTemporaryPath(StringRef Prefix,
>>>> +                                     const char *Suffix) const {
>>>>    SmallString<128> Path;
>>>>    std::error_code EC = llvm::sys::fs::createTemporaryFile(Prefix,
>>>> Suffix, Path);
>>>>    if (EC) {
>>>> @@ -1984,7 +1976,7 @@ static llvm::Triple computeTargetTriple(
>>>>        if (Target.getEnvironment() == llvm::Triple::GNUX32)
>>>>          Target.setEnvironment(llvm::Triple::GNU);
>>>>      } else if (A->getOption().matches(options::OPT_mx32) &&
>>>> -             Target.get64BitArchVariant().getArch() ==
>>>> llvm::Triple::x86_64) {
>>>> +               Target.get64BitArchVariant().getArch() ==
>>>> llvm::Triple::x86_64) {
>>>>        AT = llvm::Triple::x86_64;
>>>>        Target.setEnvironment(llvm::Triple::GNUX32);
>>>>      } else if (A->getOption().matches(options::OPT_m32)) {
>>>> @@ -1992,7 +1984,7 @@ static llvm::Triple computeTargetTriple(
>>>>        if (Target.getEnvironment() == llvm::Triple::GNUX32)
>>>>          Target.setEnvironment(llvm::Triple::GNU);
>>>>      } else if (A->getOption().matches(options::OPT_m16) &&
>>>> -             Target.get32BitArchVariant().getArch() ==
>>>> llvm::Triple::x86) {
>>>> +               Target.get32BitArchVariant().getArch() ==
>>>> llvm::Triple::x86) {
>>>>        AT = llvm::Triple::x86;
>>>>        Target.setEnvironment(llvm::Triple::CODE16);
>>>>      }
>>>> @@ -2102,8 +2094,7 @@ const ToolChain &Driver::getToolChain(co
>>>>
>>>>  bool Driver::ShouldUseClangCompiler(const JobAction &JA) const {
>>>>    // Say "no" if there is not exactly one input of a type clang
>>>> understands.
>>>> -  if (JA.size() != 1 ||
>>>> -      !types::isAcceptedByClang((*JA.begin())->getType()))
>>>> +  if (JA.size() != 1 ||
>>>> !types::isAcceptedByClang((*JA.begin())->getType()))
>>>>      return false;
>>>>
>>>>    // And say "no" if this is not a kind of action clang understands.
>>>> @@ -2129,21 +2120,21 @@ bool Driver::GetReleaseVersion(const cha
>>>>      return false;
>>>>
>>>>    char *End;
>>>> -  Major = (unsigned) strtol(Str, &End, 10);
>>>> +  Major = (unsigned)strtol(Str, &End, 10);
>>>>    if (*Str != '\0' && *End == '\0')
>>>>      return true;
>>>>    if (*End != '.')
>>>>      return false;
>>>>
>>>> -  Str = End+1;
>>>> -  Minor = (unsigned) strtol(Str, &End, 10);
>>>> +  Str = End + 1;
>>>> +  Minor = (unsigned)strtol(Str, &End, 10);
>>>>    if (*Str != '\0' && *End == '\0')
>>>>      return true;
>>>>    if (*End != '.')
>>>>      return false;
>>>>
>>>> -  Str = End+1;
>>>> -  Micro = (unsigned) strtol(Str, &End, 10);
>>>> +  Str = End + 1;
>>>> +  Micro = (unsigned)strtol(Str, &End, 10);
>>>>    if (*Str != '\0' && *End == '\0')
>>>>      return true;
>>>>    if (Str == End)
>>>>
>>>> Modified: cfe/trunk/lib/Driver/ToolChains.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=240791&r1=240790&r2=240791&view=diff
>>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Driver_ToolChains.cpp-3Frev-3D240791-26r1-3D240790-26r2-3D240791-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=HQQNmbImUf4F-mcwxbN9TPWVeRmDPUPU4dZwwCB61Pk&s=WLNsTtev5Ph5hub_OPpO99miSigv8DxizT62UyJWRCc&e=>
>>>>
>>>> ==============================================================================
>>>> --- cfe/trunk/lib/Driver/ToolChains.cpp (original)
>>>> +++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Jun 26 10:47:46 2015
>>>> @@ -39,9 +39,8 @@ using namespace clang::driver::toolchain
>>>>  using namespace clang;
>>>>  using namespace llvm::opt;
>>>>
>>>> -MachO::MachO(const Driver &D, const llvm::Triple &Triple,
>>>> -                       const ArgList &Args)
>>>> -  : ToolChain(D, Triple, Args) {
>>>> +MachO::MachO(const Driver &D, const llvm::Triple &Triple, const
>>>> ArgList &Args)
>>>> +    : ToolChain(D, Triple, Args) {
>>>>    // We expect 'as', 'ld', etc. to be adjacent to our install dir.
>>>>    getProgramPaths().push_back(getDriver().getInstalledDir());
>>>>    if (getDriver().getInstalledDir() != getDriver().Dir)
>>>> @@ -62,9 +61,7 @@ types::ID MachO::LookupTypeForExtension(
>>>>    return Ty;
>>>>  }
>>>>
>>>> -bool MachO::HasNativeLLVMSupport() const {
>>>> -  return true;
>>>> -}
>>>> +bool MachO::HasNativeLLVMSupport() const { return true; }
>>>>
>>>>  /// Darwin provides an ARC runtime starting in MacOS X 10.7 and iOS
>>>> 5.0.
>>>>  ObjCRuntime Darwin::getDefaultObjCRuntime(bool isNonFragile) const {
>>>> @@ -90,20 +87,20 @@ bool Darwin::hasBlocksRuntime() const {
>>>>  // other assumptions. Maybe MachO should consider standardising
>>>>  // their nomenclature.
>>>>  static const char *ArmMachOArchName(StringRef Arch) {
>>>> -  return llvm::StringSwitch<const char*>(Arch)
>>>> -    .Case("armv6k", "armv6")
>>>> -    .Case("armv6m", "armv6m")
>>>> -    .Case("armv5tej", "armv5")
>>>> -    .Case("xscale", "xscale")
>>>> -    .Case("armv4t", "armv4t")
>>>> -    .Case("armv7", "armv7")
>>>> -    .Cases("armv7a", "armv7-a", "armv7")
>>>> -    .Cases("armv7r", "armv7-r", "armv7")
>>>> -    .Cases("armv7em", "armv7e-m", "armv7em")
>>>> -    .Cases("armv7k", "armv7-k", "armv7k")
>>>> -    .Cases("armv7m", "armv7-m", "armv7m")
>>>> -    .Cases("armv7s", "armv7-s", "armv7s")
>>>> -    .Default(nullptr);
>>>> +  return llvm::StringSwitch<const char *>(Arch)
>>>> +      .Case("armv6k", "armv6")
>>>> +      .Case("armv6m", "armv6m")
>>>> +      .Case("armv5tej", "armv5")
>>>> +      .Case("xscale", "xscale")
>>>> +      .Case("armv4t", "armv4t")
>>>> +      .Case("armv7", "armv7")
>>>> +      .Cases("armv7a", "armv7-a", "armv7")
>>>> +      .Cases("armv7r", "armv7-r", "armv7")
>>>> +      .Cases("armv7em", "armv7e-m", "armv7em")
>>>> +      .Cases("armv7k", "armv7-k", "armv7k")
>>>> +      .Cases("armv7m", "armv7-m", "armv7m")
>>>> +      .Cases("armv7s", "armv7-s", "armv7s")
>>>> +      .Default(nullptr);
>>>>  }
>>>>
>>>>  static const char *ArmMachOArchNameCPU(StringRef CPU) {
>>>> @@ -159,15 +156,12 @@ StringRef MachO::getMachOArchName(const
>>>>    }
>>>>  }
>>>>
>>>> -Darwin::~Darwin() {
>>>> -}
>>>> -
>>>> -MachO::~MachO() {
>>>> -}
>>>> +Darwin::~Darwin() {}
>>>>
>>>> +MachO::~MachO() {}
>>>>
>>>>  std::string MachO::ComputeEffectiveClangTriple(const ArgList &Args,
>>>> -                                                    types::ID
>>>> InputType) const {
>>>> +                                               types::ID InputType)
>>>> const {
>>>>    llvm::Triple Triple(ComputeLLVMTriple(Args, InputType));
>>>>
>>>>    return Triple.getTriple();
>>>> @@ -305,7 +299,7 @@ void MachO::AddLinkRuntimeLib(const ArgL
>>>>  }
>>>>
>>>>  void Darwin::addProfileRTLibs(const ArgList &Args,
>>>> -                             ArgStringList &CmdArgs) const {
>>>> +                              ArgStringList &CmdArgs) const {
>>>>    if (!(Args.hasFlag(options::OPT_fprofile_arcs,
>>>> options::OPT_fno_profile_arcs,
>>>>                       false) ||
>>>>          Args.hasArg(options::OPT_fprofile_generate) ||
>>>> @@ -334,10 +328,11 @@ void DarwinClang::AddLinkSanitizerLibArg
>>>>    }
>>>>    assert(isTargetMacOS() || isTargetIOSSimulator());
>>>>    StringRef OS = isTargetMacOS() ? "osx" : "iossim";
>>>> -  AddLinkRuntimeLib(Args, CmdArgs, (Twine("libclang_rt.") + Sanitizer
>>>> + "_" +
>>>> -                                    OS + "_dynamic.dylib").str(),
>>>> -                    /*AlwaysLink*/ true, /*IsEmbedded*/ false,
>>>> -                    /*AddRPath*/ true);
>>>> +  AddLinkRuntimeLib(
>>>> +      Args, CmdArgs,
>>>> +      (Twine("libclang_rt.") + Sanitizer + "_" + OS +
>>>> "_dynamic.dylib").str(),
>>>> +      /*AlwaysLink*/ true, /*IsEmbedded*/ false,
>>>> +      /*AddRPath*/ true);
>>>>
>>>>    if (GetCXXStdlibType(Args) == ToolChain::CST_Libcxx) {
>>>>      // Add explicit dependcy on -lc++abi, as -lc++ doesn't re-export
>>>> @@ -354,7 +349,7 @@ void DarwinClang::AddLinkRuntimeLibArgs(
>>>>      break;
>>>>    default:
>>>>      getDriver().Diag(diag::err_drv_unsupported_rtlib_for_platform)
>>>> -      << Args.getLastArg(options::OPT_rtlib_EQ)->getValue() <<
>>>> "darwin";
>>>> +        << Args.getLastArg(options::OPT_rtlib_EQ)->getValue() <<
>>>> "darwin";
>>>>      return;
>>>>    }
>>>>
>>>> @@ -369,12 +364,10 @@ void DarwinClang::AddLinkRuntimeLibArgs(
>>>>    // cares. This is useful in situations where someone wants to
>>>> statically link
>>>>    // something like libstdc++, and needs its runtime support routines.
>>>>    if (const Arg *A = Args.getLastArg(options::OPT_static_libgcc)) {
>>>> -    getDriver().Diag(diag::err_drv_unsupported_opt)
>>>> -      << A->getAsString(Args);
>>>> +    getDriver().Diag(diag::err_drv_unsupported_opt) <<
>>>> A->getAsString(Args);
>>>>      return;
>>>>    }
>>>>
>>>> -
>>>>    const SanitizerArgs &Sanitize = getSanitizerArgs();
>>>>    if (Sanitize.needsAsanRt())
>>>>      AddLinkSanitizerLibArgs(Args, CmdArgs, "asan");
>>>> @@ -440,7 +433,7 @@ void Darwin::AddDeploymentTarget(Derived
>>>>        if (llvm::sys::path::is_absolute(env) &&
>>>> llvm::sys::fs::exists(env) &&
>>>>            StringRef(env) != "/") {
>>>>          Args.append(Args.MakeSeparateArg(
>>>> -                      nullptr, Opts.getOption(options::OPT_isysroot),
>>>> env));
>>>> +            nullptr, Opts.getOption(options::OPT_isysroot), env));
>>>>        }
>>>>      }
>>>>    }
>>>> @@ -450,8 +443,7 @@ void Darwin::AddDeploymentTarget(Derived
>>>>
>>>>    if (OSXVersion && iOSVersion) {
>>>>      getDriver().Diag(diag::err_drv_argument_not_allowed_with)
>>>> -          << OSXVersion->getAsString(Args)
>>>> -          << iOSVersion->getAsString(Args);
>>>> +        << OSXVersion->getAsString(Args) <<
>>>> iOSVersion->getAsString(Args);
>>>>      iOSVersion = nullptr;
>>>>    } else if (!OSXVersion && !iOSVersion) {
>>>>      // If no deployment target was specified on the command line,
>>>> check for
>>>> @@ -547,18 +539,18 @@ void Darwin::AddDeploymentTarget(Derived
>>>>    bool HadExtra;
>>>>    if (Platform == MacOS) {
>>>>      assert(!iOSVersion && "Unknown target platform!");
>>>> -    if (!Driver::GetReleaseVersion(OSXVersion->getValue(), Major,
>>>> Minor,
>>>> -                                   Micro, HadExtra) || HadExtra ||
>>>> -        Major != 10 || Minor >= 100 || Micro >= 100)
>>>> +    if (!Driver::GetReleaseVersion(OSXVersion->getValue(), Major,
>>>> Minor, Micro,
>>>> +                                   HadExtra) ||
>>>> +        HadExtra || Major != 10 || Minor >= 100 || Micro >= 100)
>>>>        getDriver().Diag(diag::err_drv_invalid_version_number)
>>>> -        << OSXVersion->getAsString(Args);
>>>> +          << OSXVersion->getAsString(Args);
>>>>    } else if (Platform == IPhoneOS) {
>>>>      assert(iOSVersion && "Unknown target platform!");
>>>> -    if (!Driver::GetReleaseVersion(iOSVersion->getValue(), Major,
>>>> Minor,
>>>> -                                   Micro, HadExtra) || HadExtra ||
>>>> -        Major >= 10 || Minor >= 100 || Micro >= 100)
>>>> +    if (!Driver::GetReleaseVersion(iOSVersion->getValue(), Major,
>>>> Minor, Micro,
>>>> +                                   HadExtra) ||
>>>> +        HadExtra || Major >= 10 || Minor >= 100 || Micro >= 100)
>>>>        getDriver().Diag(diag::err_drv_invalid_version_number)
>>>> -        << iOSVersion->getAsString(Args);
>>>> +          << iOSVersion->getAsString(Args);
>>>>    } else
>>>>      llvm_unreachable("unknown kind of Darwin platform");
>>>>
>>>> @@ -658,10 +650,11 @@ DerivedArgList *MachO::TranslateArgs(con
>>>>        // Skip this argument unless the architecture matches either the
>>>> toolchain
>>>>        // triple arch, or the arch being bound.
>>>>        llvm::Triple::ArchType XarchArch =
>>>> -        tools::darwin::getArchTypeForMachOArchName(A->getValue(0));
>>>> -      if (!(XarchArch == getArch()  ||
>>>> -            (BoundArch && XarchArch ==
>>>> -             tools::darwin::getArchTypeForMachOArchName(BoundArch))))
>>>> +          tools::darwin::getArchTypeForMachOArchName(A->getValue(0));
>>>> +      if (!(XarchArch == getArch() ||
>>>> +            (BoundArch &&
>>>> +             XarchArch ==
>>>> +
>>>>  tools::darwin::getArchTypeForMachOArchName(BoundArch))))
>>>>          continue;
>>>>
>>>>        Arg *OriginalArg = A;
>>>> @@ -679,11 +672,11 @@ DerivedArgList *MachO::TranslateArgs(con
>>>>        // like -O4 are going to slip through.
>>>>        if (!XarchArg || Index > Prev + 1) {
>>>>
>>>>  getDriver().Diag(diag::err_drv_invalid_Xarch_argument_with_args)
>>>> -          << A->getAsString(Args);
>>>> +            << A->getAsString(Args);
>>>>          continue;
>>>>        } else if (XarchArg->getOption().hasFlag(options::DriverOption))
>>>> {
>>>>          getDriver().Diag(diag::err_drv_invalid_Xarch_argument_isdriver)
>>>> -          << A->getAsString(Args);
>>>> +            << A->getAsString(Args);
>>>>          continue;
>>>>        }
>>>>
>>>> @@ -708,7 +701,7 @@ DerivedArgList *MachO::TranslateArgs(con
>>>>      // Sob. These is strictly gcc compatible for the time being. Apple
>>>>      // gcc translates options twice, which means that self-expanding
>>>>      // options add duplicates.
>>>> -    switch ((options::ID) A->getOption().getID()) {
>>>> +    switch ((options::ID)A->getOption().getID()) {
>>>>      default:
>>>>        DAL->append(A);
>>>>        break;
>>>> @@ -720,20 +713,19 @@ DerivedArgList *MachO::TranslateArgs(con
>>>>        break;
>>>>
>>>>      case options::OPT_dependency_file:
>>>> -      DAL->AddSeparateArg(A, Opts.getOption(options::OPT_MF),
>>>> -                          A->getValue());
>>>> +      DAL->AddSeparateArg(A, Opts.getOption(options::OPT_MF),
>>>> A->getValue());
>>>>        break;
>>>>
>>>>      case options::OPT_gfull:
>>>>        DAL->AddFlagArg(A, Opts.getOption(options::OPT_g_Flag));
>>>> -      DAL->AddFlagArg(A,
>>>> -
>>>>  Opts.getOption(options::OPT_fno_eliminate_unused_debug_symbols));
>>>> +      DAL->AddFlagArg(
>>>> +          A,
>>>> Opts.getOption(options::OPT_fno_eliminate_unused_debug_symbols));
>>>>        break;
>>>>
>>>>      case options::OPT_gused:
>>>>        DAL->AddFlagArg(A, Opts.getOption(options::OPT_g_Flag));
>>>> -      DAL->AddFlagArg(A,
>>>> -
>>>>  Opts.getOption(options::OPT_feliminate_unused_debug_symbols));
>>>> +      DAL->AddFlagArg(
>>>> +          A,
>>>> Opts.getOption(options::OPT_feliminate_unused_debug_symbols));
>>>>        break;
>>>>
>>>>      case options::OPT_shared:
>>>> @@ -754,8 +746,8 @@ DerivedArgList *MachO::TranslateArgs(con
>>>>        break;
>>>>
>>>>      case options::OPT_Wno_nonportable_cfstrings:
>>>> -      DAL->AddFlagArg(A,
>>>> -
>>>>  Opts.getOption(options::OPT_mno_warn_nonportable_cfstrings));
>>>> +      DAL->AddFlagArg(
>>>> +          A,
>>>> Opts.getOption(options::OPT_mno_warn_nonportable_cfstrings));
>>>>        break;
>>>>
>>>>      case options::OPT_fpascal_strings:
>>>> @@ -871,7 +863,6 @@ void MachO::AddLinkRuntimeLibArgs(const
>>>>    AddLinkRuntimeLib(Args, CmdArgs, CompilerRT, false, true);
>>>>  }
>>>>
>>>> -
>>>>  DerivedArgList *Darwin::TranslateArgs(const DerivedArgList &Args,
>>>>                                        const char *BoundArch) const {
>>>>    // First get the generic Apple args, before moving onto
>>>> Darwin-specific ones.
>>>> @@ -892,7 +883,7 @@ DerivedArgList *Darwin::TranslateArgs(co
>>>>    // but we can't check the deployment target in the translation code
>>>> until
>>>>    // it is set here.
>>>>    if (isTargetIOSBased() && !isIPhoneOSVersionLT(6, 0)) {
>>>> -    for (ArgList::iterator it = DAL->begin(), ie = DAL->end(); it !=
>>>> ie; ) {
>>>> +    for (ArgList::iterator it = DAL->begin(), ie = DAL->end(); it !=
>>>> ie;) {
>>>>        Arg *A = *it;
>>>>        ++it;
>>>>        if (A->getOption().getID() != options::OPT_mkernel &&
>>>> @@ -924,8 +915,7 @@ DerivedArgList *Darwin::TranslateArgs(co
>>>>        where = "iOS 5.0";
>>>>
>>>>      if (where != StringRef()) {
>>>> -      getDriver().Diag(clang::diag::err_drv_invalid_libcxx_deployment)
>>>> -        << where;
>>>> +      getDriver().Diag(clang::diag::err_drv_invalid_libcxx_deployment)
>>>> << where;
>>>>      }
>>>>    }
>>>>
>>>> @@ -948,13 +938,9 @@ bool Darwin::UseSjLjExceptions() const {
>>>>            getTriple().getArch() == llvm::Triple::thumb);
>>>>  }
>>>>
>>>> -bool MachO::isPICDefault() const {
>>>> -  return true;
>>>> -}
>>>> +bool MachO::isPICDefault() const { return true; }
>>>>
>>>> -bool MachO::isPIEDefault() const {
>>>> -  return false;
>>>> -}
>>>> +bool MachO::isPIEDefault() const { return false; }
>>>>
>>>>  bool MachO::isPICDefaultForced() const {
>>>>    return (getArch() == llvm::Triple::x86_64 ||
>>>> @@ -1068,12 +1054,10 @@ void Darwin::addStartObjectFileArgs(cons
>>>>    }
>>>>  }
>>>>
>>>> -bool Darwin::SupportsObjCGC() const {
>>>> -  return isTargetMacOS();
>>>> -}
>>>> +bool Darwin::SupportsObjCGC() const { return isTargetMacOS(); }
>>>>
>>>>  void Darwin::CheckObjCARC() const {
>>>> -  if (isTargetIOSBased()|| (isTargetMacOS() && !isMacosxVersionLT(10,
>>>> 6)))
>>>> +  if (isTargetIOSBased() || (isTargetMacOS() && !isMacosxVersionLT(10,
>>>> 6)))
>>>>      return;
>>>>    getDriver().Diag(diag::err_arc_unsupported_on_toolchain);
>>>>  }
>>>> @@ -1099,17 +1083,15 @@ SanitizerMask Darwin::getSupportedSaniti
>>>>  /// This is the primary means of forming GCCVersion objects.
>>>>  /*static*/
>>>>  Generic_GCC::GCCVersion Linux::GCCVersion::Parse(StringRef
>>>> VersionText) {
>>>> -  const GCCVersion BadVersion = { VersionText.str(), -1, -1, -1, "",
>>>> "", "" };
>>>> +  const GCCVersion BadVersion = {VersionText.str(), -1, -1, -1, "",
>>>> "", ""};
>>>>    std::pair<StringRef, StringRef> First = VersionText.split('.');
>>>>    std::pair<StringRef, StringRef> Second = First.second.split('.');
>>>>
>>>> -  GCCVersion GoodVersion = { VersionText.str(), -1, -1, -1, "", "", ""
>>>> };
>>>> -  if (First.first.getAsInteger(10, GoodVersion.Major) ||
>>>> -      GoodVersion.Major < 0)
>>>> +  GCCVersion GoodVersion = {VersionText.str(), -1, -1, -1, "", "", ""};
>>>> +  if (First.first.getAsInteger(10, GoodVersion.Major) ||
>>>> GoodVersion.Major < 0)
>>>>      return BadVersion;
>>>>    GoodVersion.MajorStr = First.first.str();
>>>> -  if (Second.first.getAsInteger(10, GoodVersion.Minor) ||
>>>> -      GoodVersion.Minor < 0)
>>>> +  if (Second.first.getAsInteger(10, GoodVersion.Minor) ||
>>>> GoodVersion.Minor < 0)
>>>>      return BadVersion;
>>>>    GoodVersion.MinorStr = Second.first.str();
>>>>
>>>> @@ -1186,12 +1168,11 @@ static llvm::StringRef getGCCToolchainDi
>>>>  /// should instead pull the target out of the driver. This is currently
>>>>  /// necessary because the driver doesn't store the final version of
>>>> the target
>>>>  /// triple.
>>>> -void
>>>> -Generic_GCC::GCCInstallationDetector::init(
>>>> +void Generic_GCC::GCCInstallationDetector::init(
>>>>      const Driver &D, const llvm::Triple &TargetTriple, const ArgList
>>>> &Args) {
>>>> -  llvm::Triple BiarchVariantTriple =
>>>> -      TargetTriple.isArch32Bit() ? TargetTriple.get64BitArchVariant()
>>>> -                                 : TargetTriple.get32BitArchVariant();
>>>> +  llvm::Triple BiarchVariantTriple = TargetTriple.isArch32Bit()
>>>> +                                         ?
>>>> TargetTriple.get64BitArchVariant()
>>>> +                                         :
>>>> TargetTriple.get32BitArchVariant();
>>>>    // The library directories which may contain GCC installations.
>>>>    SmallVector<StringRef, 4> CandidateLibDirs, CandidateBiarchLibDirs;
>>>>    // The compatible GCC triples for this particular architecture.
>>>> @@ -1281,91 +1262,82 @@ bool Generic_GCC::GCCInstallationDetecto
>>>>    // Declare a bunch of static data sets that we'll select between
>>>> below. These
>>>>    // are specifically designed to always refer to string literals to
>>>> avoid any
>>>>    // lifetime or initialization issues.
>>>> -  static const char *const AArch64LibDirs[] = { "/lib64", "/lib" };
>>>> -  static const char *const AArch64Triples[] = {
>>>> "aarch64-none-linux-gnu",
>>>> -                                                "aarch64-linux-gnu",
>>>> -
>>>> "aarch64-linux-android",
>>>> -                                                "aarch64-redhat-linux"
>>>> };
>>>> -  static const char *const AArch64beLibDirs[] = { "/lib" };
>>>> -  static const char *const AArch64beTriples[] = {
>>>> "aarch64_be-none-linux-gnu",
>>>> -
>>>> "aarch64_be-linux-gnu" };
>>>> -
>>>> -  static const char *const ARMLibDirs[] = { "/lib" };
>>>> -  static const char *const ARMTriples[] = { "arm-linux-gnueabi",
>>>> -                                            "arm-linux-androideabi" };
>>>> -  static const char *const ARMHFTriples[] = { "arm-linux-gnueabihf",
>>>> -
>>>> "armv7hl-redhat-linux-gnueabi" };
>>>> -  static const char *const ARMebLibDirs[] = { "/lib" };
>>>> -  static const char *const ARMebTriples[] = { "armeb-linux-gnueabi",
>>>> -
>>>> "armeb-linux-androideabi" };
>>>> -  static const char *const ARMebHFTriples[] = {
>>>> "armeb-linux-gnueabihf",
>>>> -
>>>> "armebv7hl-redhat-linux-gnueabi" };
>>>> +  static const char *const AArch64LibDirs[] = {"/lib64", "/lib"};
>>>> +  static const char *const AArch64Triples[] = {
>>>> +      "aarch64-none-linux-gnu", "aarch64-linux-gnu",
>>>> "aarch64-linux-android",
>>>> +      "aarch64-redhat-linux"};
>>>> +  static const char *const AArch64beLibDirs[] = {"/lib"};
>>>> +  static const char *const AArch64beTriples[] =
>>>> {"aarch64_be-none-linux-gnu",
>>>> +
>>>>  "aarch64_be-linux-gnu"};
>>>> +
>>>> +  static const char *const ARMLibDirs[] = {"/lib"};
>>>> +  static const char *const ARMTriples[] = {"arm-linux-gnueabi",
>>>> +                                           "arm-linux-androideabi"};
>>>> +  static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
>>>> +
>>>>  "armv7hl-redhat-linux-gnueabi"};
>>>> +  static const char *const ARMebLibDirs[] = {"/lib"};
>>>> +  static const char *const ARMebTriples[] = {"armeb-linux-gnueabi",
>>>> +
>>>>  "armeb-linux-androideabi"};
>>>> +  static const char *const ARMebHFTriples[] = {
>>>> +      "armeb-linux-gnueabihf", "armebv7hl-redhat-linux-gnueabi"};
>>>>
>>>> -  static const char *const X86_64LibDirs[] = { "/lib64", "/lib" };
>>>> +  static const char *const X86_64LibDirs[] = {"/lib64", "/lib"};
>>>>    static const char *const X86_64Triples[] = {
>>>> -    "x86_64-linux-gnu", "x86_64-unknown-linux-gnu",
>>>> "x86_64-pc-linux-gnu",
>>>> -    "x86_64-redhat-linux6E", "x86_64-redhat-linux",
>>>> "x86_64-suse-linux",
>>>> -    "x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
>>>> "x86_64-slackware-linux",
>>>> -    "x86_64-linux-android", "x86_64-unknown-linux"
>>>> -  };
>>>> -  static const char *const X32LibDirs[] = { "/libx32" };
>>>> -  static const char *const X86LibDirs[] = { "/lib32", "/lib" };
>>>> +      "x86_64-linux-gnu",       "x86_64-unknown-linux-gnu",
>>>> +      "x86_64-pc-linux-gnu",    "x86_64-redhat-linux6E",
>>>> +      "x86_64-redhat-linux",    "x86_64-suse-linux",
>>>> +      "x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
>>>> +      "x86_64-slackware-linux", "x86_64-linux-android",
>>>> +      "x86_64-unknown-linux"};
>>>> +  static const char *const X32LibDirs[] = {"/libx32"};
>>>> +  static const char *const X86LibDirs[] = {"/lib32", "/lib"};
>>>>    static const char *const X86Triples[] = {
>>>> -    "i686-linux-gnu", "i686-pc-linux-gnu", "i486-linux-gnu",
>>>> "i386-linux-gnu",
>>>> -    "i386-redhat-linux6E", "i686-redhat-linux", "i586-redhat-linux",
>>>> -    "i386-redhat-linux", "i586-suse-linux", "i486-slackware-linux",
>>>> -    "i686-montavista-linux", "i686-linux-android", "i586-linux-gnu"
>>>> -  };
>>>> -
>>>> -  static const char *const MIPSLibDirs[] = { "/lib" };
>>>> -  static const char *const MIPSTriples[] = { "mips-linux-gnu",
>>>> -                                             "mips-mti-linux-gnu",
>>>> -                                             "mips-img-linux-gnu" };
>>>> -  static const char *const MIPSELLibDirs[] = { "/lib" };
>>>> -  static const char *const MIPSELTriples[] = { "mipsel-linux-gnu",
>>>> -                                               "mipsel-linux-android",
>>>> -                                               "mips-img-linux-gnu" };
>>>> -
>>>> -  static const char *const MIPS64LibDirs[] = { "/lib64", "/lib" };
>>>> -  static const char *const MIPS64Triples[] = { "mips64-linux-gnu",
>>>> -                                               "mips-mti-linux-gnu",
>>>> -                                               "mips-img-linux-gnu",
>>>> -                                               "mips64-linux-gnuabi64"
>>>> };
>>>> -  static const char *const MIPS64ELLibDirs[] = { "/lib64", "/lib" };
>>>> -  static const char *const MIPS64ELTriples[] = { "mips64el-linux-gnu",
>>>> -                                                 "mips-mti-linux-gnu",
>>>> -                                                 "mips-img-linux-gnu",
>>>> -
>>>>  "mips64el-linux-android",
>>>> -
>>>>  "mips64el-linux-gnuabi64" };
>>>> +      "i686-linux-gnu",       "i686-pc-linux-gnu",
>>>>  "i486-linux-gnu",
>>>> +      "i386-linux-gnu",       "i386-redhat-linux6E",
>>>>  "i686-redhat-linux",
>>>> +      "i586-redhat-linux",    "i386-redhat-linux",
>>>>  "i586-suse-linux",
>>>> +      "i486-slackware-linux", "i686-montavista-linux",
>>>> "i686-linux-android",
>>>> +      "i586-linux-gnu"};
>>>> +
>>>> +  static const char *const MIPSLibDirs[] = {"/lib"};
>>>> +  static const char *const MIPSTriples[] = {
>>>> +      "mips-linux-gnu", "mips-mti-linux-gnu", "mips-img-linux-gnu"};
>>>> +  static const char *const MIPSELLibDirs[] = {"/lib"};
>>>> +  static const char *const MIPSELTriples[] = {
>>>> +      "mipsel-linux-gnu", "mipsel-linux-android",
>>>> "mips-img-linux-gnu"};
>>>> +
>>>> +  static const char *const MIPS64LibDirs[] = {"/lib64", "/lib"};
>>>> +  static const char *const MIPS64Triples[] = {
>>>> +      "mips64-linux-gnu", "mips-mti-linux-gnu", "mips-img-linux-gnu",
>>>> +      "mips64-linux-gnuabi64"};
>>>> +  static const char *const MIPS64ELLibDirs[] = {"/lib64", "/lib"};
>>>> +  static const char *const MIPS64ELTriples[] = {
>>>> +      "mips64el-linux-gnu", "mips-mti-linux-gnu", "mips-img-linux-gnu",
>>>> +      "mips64el-linux-android", "mips64el-linux-gnuabi64"};
>>>>
>>>> -  static const char *const PPCLibDirs[] = { "/lib32", "/lib" };
>>>> +  static const char *const PPCLibDirs[] = {"/lib32", "/lib"};
>>>>    static const char *const PPCTriples[] = {
>>>> -    "powerpc-linux-gnu", "powerpc-unknown-linux-gnu",
>>>> "powerpc-linux-gnuspe",
>>>> -    "powerpc-suse-linux", "powerpc-montavista-linuxspe"
>>>> -  };
>>>> -  static const char *const PPC64LibDirs[] = { "/lib64", "/lib" };
>>>> -  static const char *const PPC64Triples[] = { "powerpc64-linux-gnu",
>>>> -
>>>> "powerpc64-unknown-linux-gnu",
>>>> -                                              "powerpc64-suse-linux",
>>>> -                                              "ppc64-redhat-linux" };
>>>> -  static const char *const PPC64LELibDirs[] = { "/lib64", "/lib" };
>>>> -  static const char *const PPC64LETriples[] = {
>>>> "powerpc64le-linux-gnu",
>>>> -
>>>> "powerpc64le-unknown-linux-gnu",
>>>> -
>>>> "powerpc64le-suse-linux",
>>>> -                                                "ppc64le-redhat-linux"
>>>> };
>>>> -
>>>> -  static const char *const SPARCv8LibDirs[] = { "/lib32", "/lib" };
>>>> -  static const char *const SPARCv8Triples[] = { "sparc-linux-gnu",
>>>> -                                                "sparcv8-linux-gnu" };
>>>> -  static const char *const SPARCv9LibDirs[] = { "/lib64", "/lib" };
>>>> -  static const char *const SPARCv9Triples[] = { "sparc64-linux-gnu",
>>>> -                                                "sparcv9-linux-gnu" };
>>>> +      "powerpc-linux-gnu", "powerpc-unknown-linux-gnu",
>>>> "powerpc-linux-gnuspe",
>>>> +      "powerpc-suse-linux", "powerpc-montavista-linuxspe"};
>>>> +  static const char *const PPC64LibDirs[] = {"/lib64", "/lib"};
>>>> +  static const char *const PPC64Triples[] = {
>>>> +      "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu",
>>>> +      "powerpc64-suse-linux", "ppc64-redhat-linux"};
>>>> +  static const char *const PPC64LELibDirs[] = {"/lib64", "/lib"};
>>>> +  static const char *const PPC64LETriples[] = {
>>>> +      "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu",
>>>> +      "powerpc64le-suse-linux", "ppc64le-redhat-linux"};
>>>> +
>>>> +  static const char *const SPARCv8LibDirs[] = {"/lib32", "/lib"};
>>>> +  static const char *const SPARCv8Triples[] = {"sparc-linux-gnu",
>>>> +                                               "sparcv8-linux-gnu"};
>>>> +  static const char *const SPARCv9LibDirs[] = {"/lib64", "/lib"};
>>>> +  static const char *const SPARCv9Triples[] = {"sparc64-linux-gnu",
>>>> +                                               "sparcv9-linux-gnu"};
>>>>
>>>> -  static const char *const SystemZLibDirs[] = { "/lib64", "/lib" };
>>>> +  static const char *const SystemZLibDirs[] = {"/lib64", "/lib"};
>>>>    static const char *const SystemZTriples[] = {
>>>> -    "s390x-linux-gnu", "s390x-unknown-linux-gnu",
>>>> "s390x-ibm-linux-gnu",
>>>> -    "s390x-suse-linux", "s390x-redhat-linux"
>>>> -  };
>>>> +      "s390x-linux-gnu", "s390x-unknown-linux-gnu",
>>>> "s390x-ibm-linux-gnu",
>>>> +      "s390x-suse-linux", "s390x-redhat-linux"};
>>>>
>>>>    using std::begin;
>>>>    using std::end;
>>>> @@ -1533,14 +1505,12 @@ static bool isMipsEL(llvm::Triple::ArchT
>>>>  }
>>>>
>>>>  static bool isMips16(const ArgList &Args) {
>>>> -  Arg *A = Args.getLastArg(options::OPT_mips16,
>>>> -                           options::OPT_mno_mips16);
>>>> +  Arg *A = Args.getLastArg(options::OPT_mips16,
>>>> options::OPT_mno_mips16);
>>>>    return A && A->getOption().matches(options::OPT_mips16);
>>>>  }
>>>>
>>>>  static bool isMicroMips(const ArgList &Args) {
>>>> -  Arg *A = Args.getLastArg(options::OPT_mmicromips,
>>>> -                           options::OPT_mno_micromips);
>>>> +  Arg *A = Args.getLastArg(options::OPT_mmicromips,
>>>> options::OPT_mno_micromips);
>>>>    return A && A->getOption().matches(options::OPT_mmicromips);
>>>>  }
>>>>
>>>> @@ -1561,8 +1531,7 @@ static Multilib makeMultilib(StringRef c
>>>>  }
>>>>
>>>>  static bool findMIPSMultilibs(const llvm::Triple &TargetTriple,
>>>> StringRef Path,
>>>> -                              const ArgList &Args,
>>>> -                              DetectedMultilibs &Result) {
>>>> +                              const ArgList &Args, DetectedMultilibs
>>>> &Result) {
>>>>    // Some MIPS toolchains put libraries and object files compiled
>>>>    // using different options in to the sub-directoris which names
>>>>    // reflects the flags used for compilation. For example sysroot
>>>> @@ -1594,181 +1563,182 @@ static bool findMIPSMultilibs(const llvm
>>>>    MultilibSet FSFMipsMultilibs;
>>>>    {
>>>>      auto MArchMips32 = makeMultilib("/mips32")
>>>> -
>>>> .flag("+m32").flag("-m64").flag("-mmicromips").flag("+march=mips32");
>>>> +                           .flag("+m32")
>>>> +                           .flag("-m64")
>>>> +                           .flag("-mmicromips")
>>>> +                           .flag("+march=mips32");
>>>>
>>>>      auto MArchMicroMips = makeMultilib("/micromips")
>>>> -      .flag("+m32").flag("-m64").flag("+mmicromips");
>>>> +                              .flag("+m32")
>>>> +                              .flag("-m64")
>>>> +                              .flag("+mmicromips");
>>>>
>>>>      auto MArchMips64r2 = makeMultilib("/mips64r2")
>>>> -      .flag("-m32").flag("+m64").flag("+march=mips64r2");
>>>> +                             .flag("-m32")
>>>> +                             .flag("+m64")
>>>> +                             .flag("+march=mips64r2");
>>>>
>>>> -    auto MArchMips64 = makeMultilib("/mips64")
>>>> -      .flag("-m32").flag("+m64").flag("-march=mips64r2");
>>>> +    auto MArchMips64 =
>>>> makeMultilib("/mips64").flag("-m32").flag("+m64").flag(
>>>> +        "-march=mips64r2");
>>>>
>>>>      auto MArchDefault = makeMultilib("")
>>>> -
>>>> .flag("+m32").flag("-m64").flag("-mmicromips").flag("+march=mips32r2");
>>>> -
>>>> -    auto Mips16 = makeMultilib("/mips16")
>>>> -      .flag("+mips16");
>>>> -
>>>> -    auto UCLibc = makeMultilib("/uclibc")
>>>> -      .flag("+muclibc");
>>>> -
>>>> -    auto MAbi64 = makeMultilib("/64")
>>>> -      .flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
>>>> -
>>>> -    auto BigEndian = makeMultilib("")
>>>> -      .flag("+EB").flag("-EL");
>>>> -
>>>> -    auto LittleEndian = makeMultilib("/el")
>>>> -      .flag("+EL").flag("-EB");
>>>> -
>>>> -    auto SoftFloat = makeMultilib("/sof")
>>>> -      .flag("+msoft-float");
>>>> -
>>>> -    auto Nan2008 = makeMultilib("/nan2008")
>>>> -      .flag("+mnan=2008");
>>>> -
>>>> -    FSFMipsMultilibs = MultilibSet()
>>>> -      .Either(MArchMips32, MArchMicroMips,
>>>> -              MArchMips64r2, MArchMips64, MArchDefault)
>>>> -      .Maybe(UCLibc)
>>>> -      .Maybe(Mips16)
>>>> -      .FilterOut("/mips64/mips16")
>>>> -      .FilterOut("/mips64r2/mips16")
>>>> -      .FilterOut("/micromips/mips16")
>>>> -      .Maybe(MAbi64)
>>>> -      .FilterOut("/micromips/64")
>>>> -      .FilterOut("/mips32/64")
>>>> -      .FilterOut("^/64")
>>>> -      .FilterOut("/mips16/64")
>>>> -      .Either(BigEndian, LittleEndian)
>>>> -      .Maybe(SoftFloat)
>>>> -      .Maybe(Nan2008)
>>>> -      .FilterOut(".*sof/nan2008")
>>>> -      .FilterOut(NonExistent)
>>>> -      .setIncludeDirsCallback([](
>>>> -          StringRef InstallDir, StringRef TripleStr, const Multilib
>>>> &M) {
>>>> -        std::vector<std::string> Dirs;
>>>> -        Dirs.push_back((InstallDir + "/include").str());
>>>> -        std::string SysRootInc = InstallDir.str() +
>>>> "/../../../../sysroot";
>>>> -        if (StringRef(M.includeSuffix()).startswith("/uclibc"))
>>>> -          Dirs.push_back(SysRootInc + "/uclibc/usr/include");
>>>> -        else
>>>> -          Dirs.push_back(SysRootInc + "/usr/include");
>>>> -        return Dirs;
>>>> -      });
>>>> +                            .flag("+m32")
>>>> +                            .flag("-m64")
>>>> +                            .flag("-mmicromips")
>>>> +                            .flag("+march=mips32r2");
>>>> +
>>>> +    auto Mips16 = makeMultilib("/mips16").flag("+mips16");
>>>> +
>>>> +    auto UCLibc = makeMultilib("/uclibc").flag("+muclibc");
>>>> +
>>>> +    auto MAbi64 =
>>>> +
>>>> makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
>>>> +
>>>> +    auto BigEndian = makeMultilib("").flag("+EB").flag("-EL");
>>>> +
>>>> +    auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
>>>> +
>>>> +    auto SoftFloat = makeMultilib("/sof").flag("+msoft-float");
>>>> +
>>>> +    auto Nan2008 = makeMultilib("/nan2008").flag("+mnan=2008");
>>>> +
>>>> +    FSFMipsMultilibs =
>>>> +        MultilibSet()
>>>> +            .Either(MArchMips32, MArchMicroMips, MArchMips64r2,
>>>> MArchMips64,
>>>> +                    MArchDefault)
>>>> +            .Maybe(UCLibc)
>>>> +            .Maybe(Mips16)
>>>> +            .FilterOut("/mips64/mips16")
>>>> +            .FilterOut("/mips64r2/mips16")
>>>> +            .FilterOut("/micromips/mips16")
>>>> +            .Maybe(MAbi64)
>>>> +            .FilterOut("/micromips/64")
>>>> +            .FilterOut("/mips32/64")
>>>> +            .FilterOut("^/64")
>>>> +            .FilterOut("/mips16/64")
>>>> +            .Either(BigEndian, LittleEndian)
>>>> +            .Maybe(SoftFloat)
>>>> +            .Maybe(Nan2008)
>>>> +            .FilterOut(".*sof/nan2008")
>>>> +            .FilterOut(NonExistent)
>>>> +            .setIncludeDirsCallback([](StringRef InstallDir,
>>>> +                                       StringRef TripleStr, const
>>>> Multilib &M) {
>>>> +              std::vector<std::string> Dirs;
>>>> +              Dirs.push_back((InstallDir + "/include").str());
>>>> +              std::string SysRootInc =
>>>> +                  InstallDir.str() + "/../../../../sysroot";
>>>> +              if (StringRef(M.includeSuffix()).startswith("/uclibc"))
>>>> +                Dirs.push_back(SysRootInc + "/uclibc/usr/include");
>>>> +              else
>>>> +                Dirs.push_back(SysRootInc + "/usr/include");
>>>> +              return Dirs;
>>>> +            });
>>>>    }
>>>>
>>>>    // Check for Code Sourcery toolchain multilibs
>>>>    MultilibSet CSMipsMultilibs;
>>>>    {
>>>> -    auto MArchMips16 = makeMultilib("/mips16")
>>>> -      .flag("+m32").flag("+mips16");
>>>> +    auto MArchMips16 =
>>>> makeMultilib("/mips16").flag("+m32").flag("+mips16");
>>>>
>>>> -    auto MArchMicroMips = makeMultilib("/micromips")
>>>> -      .flag("+m32").flag("+mmicromips");
>>>> +    auto MArchMicroMips =
>>>> +        makeMultilib("/micromips").flag("+m32").flag("+mmicromips");
>>>>
>>>> -    auto MArchDefault = makeMultilib("")
>>>> -      .flag("-mips16").flag("-mmicromips");
>>>> +    auto MArchDefault =
>>>> makeMultilib("").flag("-mips16").flag("-mmicromips");
>>>>
>>>> -    auto UCLibc = makeMultilib("/uclibc")
>>>> -      .flag("+muclibc");
>>>> +    auto UCLibc = makeMultilib("/uclibc").flag("+muclibc");
>>>>
>>>> -    auto SoftFloat = makeMultilib("/soft-float")
>>>> -      .flag("+msoft-float");
>>>> +    auto SoftFloat = makeMultilib("/soft-float").flag("+msoft-float");
>>>>
>>>> -    auto Nan2008 = makeMultilib("/nan2008")
>>>> -      .flag("+mnan=2008");
>>>> +    auto Nan2008 = makeMultilib("/nan2008").flag("+mnan=2008");
>>>>
>>>> -    auto DefaultFloat = makeMultilib("")
>>>> -      .flag("-msoft-float").flag("-mnan=2008");
>>>> +    auto DefaultFloat =
>>>> +        makeMultilib("").flag("-msoft-float").flag("-mnan=2008");
>>>>
>>>> -    auto BigEndian = makeMultilib("")
>>>> -      .flag("+EB").flag("-EL");
>>>> +    auto BigEndian = makeMultilib("").flag("+EB").flag("-EL");
>>>>
>>>> -    auto LittleEndian = makeMultilib("/el")
>>>> -      .flag("+EL").flag("-EB");
>>>> +    auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
>>>>
>>>>      // Note that this one's osSuffix is ""
>>>>      auto MAbi64 = makeMultilib("")
>>>> -      .gccSuffix("/64")
>>>> -      .includeSuffix("/64")
>>>> -      .flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
>>>> -
>>>> -    CSMipsMultilibs = MultilibSet()
>>>> -      .Either(MArchMips16, MArchMicroMips, MArchDefault)
>>>> -      .Maybe(UCLibc)
>>>> -      .Either(SoftFloat, Nan2008, DefaultFloat)
>>>> -      .FilterOut("/micromips/nan2008")
>>>> -      .FilterOut("/mips16/nan2008")
>>>> -      .Either(BigEndian, LittleEndian)
>>>> -      .Maybe(MAbi64)
>>>> -      .FilterOut("/mips16.*/64")
>>>> -      .FilterOut("/micromips.*/64")
>>>> -      .FilterOut(NonExistent)
>>>> -      .setIncludeDirsCallback([](
>>>> -          StringRef InstallDir, StringRef TripleStr, const Multilib
>>>> &M) {
>>>> -        std::vector<std::string> Dirs;
>>>> -        Dirs.push_back((InstallDir + "/include").str());
>>>> -        std::string SysRootInc =
>>>> -            InstallDir.str() + "/../../../../" + TripleStr.str();
>>>> -        if (StringRef(M.includeSuffix()).startswith("/uclibc"))
>>>> -          Dirs.push_back(SysRootInc + "/libc/uclibc/usr/include");
>>>> -        else
>>>> -          Dirs.push_back(SysRootInc + "/libc/usr/include");
>>>> -        return Dirs;
>>>> -      });
>>>> -  }
>>>> -
>>>> -  MultilibSet AndroidMipsMultilibs = MultilibSet()
>>>> -    .Maybe(Multilib("/mips-r2").flag("+march=mips32r2"))
>>>> -    .Maybe(Multilib("/mips-r6").flag("+march=mips32r6"))
>>>> -    .FilterOut(NonExistent);
>>>> +                      .gccSuffix("/64")
>>>> +                      .includeSuffix("/64")
>>>> +                      .flag("+mabi=n64")
>>>> +                      .flag("-mabi=n32")
>>>> +                      .flag("-m32");
>>>> +
>>>> +    CSMipsMultilibs =
>>>> +        MultilibSet()
>>>> +            .Either(MArchMips16, MArchMicroMips, MArchDefault)
>>>> +            .Maybe(UCLibc)
>>>> +            .Either(SoftFloat, Nan2008, DefaultFloat)
>>>> +            .FilterOut("/micromips/nan2008")
>>>> +            .FilterOut("/mips16/nan2008")
>>>> +            .Either(BigEndian, LittleEndian)
>>>> +            .Maybe(MAbi64)
>>>> +            .FilterOut("/mips16.*/64")
>>>> +            .FilterOut("/micromips.*/64")
>>>> +            .FilterOut(NonExistent)
>>>> +            .setIncludeDirsCallback([](StringRef InstallDir,
>>>> +                                       StringRef TripleStr, const
>>>> Multilib &M) {
>>>> +              std::vector<std::string> Dirs;
>>>> +              Dirs.push_back((InstallDir + "/include").str());
>>>> +              std::string SysRootInc =
>>>> +                  InstallDir.str() + "/../../../../" + TripleStr.str();
>>>> +              if (StringRef(M.includeSuffix()).startswith("/uclibc"))
>>>> +                Dirs.push_back(SysRootInc +
>>>> "/libc/uclibc/usr/include");
>>>> +              else
>>>> +                Dirs.push_back(SysRootInc + "/libc/usr/include");
>>>> +              return Dirs;
>>>> +            });
>>>> +  }
>>>> +
>>>> +  MultilibSet AndroidMipsMultilibs =
>>>> +      MultilibSet()
>>>> +          .Maybe(Multilib("/mips-r2").flag("+march=mips32r2"))
>>>> +          .Maybe(Multilib("/mips-r6").flag("+march=mips32r6"))
>>>> +          .FilterOut(NonExistent);
>>>>
>>>>    MultilibSet DebianMipsMultilibs;
>>>>    {
>>>> -    Multilib MAbiN32 = Multilib()
>>>> -      .gccSuffix("/n32")
>>>> -      .includeSuffix("/n32")
>>>> -      .flag("+mabi=n32");
>>>> +    Multilib MAbiN32 =
>>>> +
>>>> Multilib().gccSuffix("/n32").includeSuffix("/n32").flag("+mabi=n32");
>>>>
>>>>      Multilib M64 = Multilib()
>>>> -      .gccSuffix("/64")
>>>> -      .includeSuffix("/64")
>>>> -      .flag("+m64").flag("-m32").flag("-mabi=n32");
>>>> -
>>>> -    Multilib M32 = Multilib()
>>>> -      .flag("-m64").flag("+m32").flag("-mabi=n32");
>>>> -
>>>> -    DebianMipsMultilibs = MultilibSet()
>>>> -      .Either(M32, M64, MAbiN32)
>>>> -      .FilterOut(NonExistent);
>>>> +                       .gccSuffix("/64")
>>>> +                       .includeSuffix("/64")
>>>> +                       .flag("+m64")
>>>> +                       .flag("-m32")
>>>> +                       .flag("-mabi=n32");
>>>> +
>>>> +    Multilib M32 =
>>>> Multilib().flag("-m64").flag("+m32").flag("-mabi=n32");
>>>> +
>>>> +    DebianMipsMultilibs =
>>>> +        MultilibSet().Either(M32, M64, MAbiN32).FilterOut(NonExistent);
>>>>    }
>>>>
>>>>    MultilibSet ImgMultilibs;
>>>>    {
>>>> -    auto Mips64r6 = makeMultilib("/mips64r6")
>>>> -      .flag("+m64").flag("-m32");
>>>> +    auto Mips64r6 =
>>>> makeMultilib("/mips64r6").flag("+m64").flag("-m32");
>>>>
>>>> -    auto LittleEndian = makeMultilib("/el")
>>>> -      .flag("+EL").flag("-EB");
>>>> +    auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
>>>>
>>>> -    auto MAbi64 = makeMultilib("/64")
>>>> -      .flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
>>>> +    auto MAbi64 =
>>>> +
>>>> makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
>>>>
>>>> -    ImgMultilibs = MultilibSet()
>>>> -      .Maybe(Mips64r6)
>>>> -      .Maybe(MAbi64)
>>>> -      .Maybe(LittleEndian)
>>>> -      .FilterOut(NonExistent)
>>>> -      .setIncludeDirsCallback([](
>>>> -          StringRef InstallDir, StringRef TripleStr, const Multilib
>>>> &M) {
>>>> -        std::vector<std::string> Dirs;
>>>> -        Dirs.push_back((InstallDir + "/include").str());
>>>> -        Dirs.push_back((InstallDir +
>>>> "/../../../../sysroot/usr/include").str());
>>>> -        return Dirs;
>>>> -      });
>>>> +    ImgMultilibs =
>>>> +        MultilibSet()
>>>> +            .Maybe(Mips64r6)
>>>> +            .Maybe(MAbi64)
>>>> +            .Maybe(LittleEndian)
>>>> +            .FilterOut(NonExistent)
>>>> +            .setIncludeDirsCallback([](StringRef InstallDir,
>>>> +                                       StringRef TripleStr, const
>>>> Multilib &M) {
>>>> +              std::vector<std::string> Dirs;
>>>> +              Dirs.push_back((InstallDir + "/include").str());
>>>> +              Dirs.push_back(
>>>> +                  (InstallDir +
>>>> "/../../../../sysroot/usr/include").str());
>>>> +              return Dirs;
>>>> +            });
>>>>    }
>>>>
>>>>    StringRef CPUName;
>>>> @@ -1823,8 +1793,8 @@ static bool findMIPSMultilibs(const llvm
>>>>
>>>>    // Sort candidates. Toolchain that best meets the directories goes
>>>> first.
>>>>    // Then select the first toolchains matches command line flags.
>>>> -  MultilibSet *candidates[] = { &DebianMipsMultilibs,
>>>> &FSFMipsMultilibs,
>>>> -                                &CSMipsMultilibs };
>>>> +  MultilibSet *candidates[] = {&DebianMipsMultilibs, &FSFMipsMultilibs,
>>>> +                               &CSMipsMultilibs};
>>>>    std::sort(
>>>>        std::begin(candidates), std::end(candidates),
>>>>        [](MultilibSet *a, MultilibSet *b) { return a->size() >
>>>> b->size(); });
>>>> @@ -1866,17 +1836,23 @@ static bool findBiarchMultilibs(const ll
>>>>
>>>>    Multilib Default;
>>>>    Multilib Alt64 = Multilib()
>>>> -    .gccSuffix("/64")
>>>> -    .includeSuffix("/64")
>>>> -    .flag("-m32").flag("+m64").flag("-mx32");
>>>> +                       .gccSuffix("/64")
>>>> +                       .includeSuffix("/64")
>>>> +                       .flag("-m32")
>>>> +                       .flag("+m64")
>>>> +                       .flag("-mx32");
>>>>    Multilib Alt32 = Multilib()
>>>> -    .gccSuffix("/32")
>>>> -    .includeSuffix("/32")
>>>> -    .flag("+m32").flag("-m64").flag("-mx32");
>>>> +                       .gccSuffix("/32")
>>>> +                       .includeSuffix("/32")
>>>> +                       .flag("+m32")
>>>> +                       .flag("-m64")
>>>> +                       .flag("-mx32");
>>>>    Multilib Altx32 = Multilib()
>>>> -    .gccSuffix("/x32")
>>>> -    .includeSuffix("/x32")
>>>> -    .flag("-m32").flag("-m64").flag("+mx32");
>>>> +                        .gccSuffix("/x32")
>>>> +                        .includeSuffix("/x32")
>>>> +                        .flag("-m32")
>>>> +                        .flag("-m64")
>>>> +                        .flag("+mx32");
>>>>
>>>>    FilterNonExistent NonExistent(Path);
>>>>
>>>> @@ -1923,8 +1899,7 @@ static bool findBiarchMultilibs(const ll
>>>>    if (!Result.Multilibs.select(Flags, Result.SelectedMultilib))
>>>>      return false;
>>>>
>>>> -  if (Result.SelectedMultilib == Alt64 ||
>>>> -      Result.SelectedMultilib == Alt32 ||
>>>> +  if (Result.SelectedMultilib == Alt64 || Result.SelectedMultilib ==
>>>> Alt32 ||
>>>>        Result.SelectedMultilib == Altx32)
>>>>      Result.BiarchSibling = Default;
>>>>
>>>> @@ -1940,27 +1915,26 @@ void Generic_GCC::GCCInstallationDetecto
>>>>    // check for. We also record what is necessary to walk from each back
>>>>    // up to the lib directory.
>>>>    const std::string LibSuffixes[] = {
>>>> -    "/gcc/" + CandidateTriple.str(),
>>>> -    // Debian puts cross-compilers in gcc-cross
>>>> -    "/gcc-cross/" + CandidateTriple.str(),
>>>> -    "/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
>>>> -
>>>> -    // The Freescale PPC SDK has the gcc libraries in
>>>> -    // <sysroot>/usr/lib/<triple>/x.y.z so have a look there as well.
>>>> -    "/" + CandidateTriple.str(),
>>>> -
>>>> -    // Ubuntu has a strange mis-matched pair of triples that this
>>>> happens to
>>>> -    // match.
>>>> -    // FIXME: It may be worthwhile to generalize this and look for a
>>>> second
>>>> -    // triple.
>>>> -    "/i386-linux-gnu/gcc/" + CandidateTriple.str()
>>>> -  };
>>>> +      "/gcc/" + CandidateTriple.str(),
>>>> +      // Debian puts cross-compilers in gcc-cross
>>>> +      "/gcc-cross/" + CandidateTriple.str(),
>>>> +      "/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
>>>> +
>>>> +      // The Freescale PPC SDK has the gcc libraries in
>>>> +      // <sysroot>/usr/lib/<triple>/x.y.z so have a look there as well.
>>>> +      "/" + CandidateTriple.str(),
>>>> +
>>>> +      // Ubuntu has a strange mis-matched pair of triples that this
>>>> happens to
>>>> +      // match.
>>>> +      // FIXME: It may be worthwhile to generalize this and look for a
>>>> second
>>>> +      // triple.
>>>> +      "/i386-linux-gnu/gcc/" + CandidateTriple.str()};
>>>>    const std::string InstallSuffixes[] = {
>>>> -    "/../../..",    // gcc/
>>>> -    "/../../..",    // gcc-cross/
>>>> -    "/../../../..", // <triple>/gcc/
>>>> -    "/../..",       // <triple>/
>>>> -    "/../../../.."  // i386-linux-gnu/gcc/<triple>/
>>>> +      "/../../..",    // gcc/
>>>> +      "/../../..",    // gcc-cross/
>>>> +      "/../../../..", // <triple>/gcc/
>>>> +      "/../..",       // <triple>/
>>>> +      "/../../../.."  // i386-linux-gnu/gcc/<triple>/
>>>>    };
>>>>    // Only look at the final, weird Ubuntu suffix for i386-linux-gnu.
>>>>    const unsigned NumLibSuffixes =
>>>> @@ -2007,16 +1981,15 @@ void Generic_GCC::GCCInstallationDetecto
>>>>    }
>>>>  }
>>>>
>>>> -Generic_GCC::Generic_GCC(const Driver &D, const llvm::Triple& Triple,
>>>> +Generic_GCC::Generic_GCC(const Driver &D, const llvm::Triple &Triple,
>>>>                           const ArgList &Args)
>>>> -  : ToolChain(D, Triple, Args), GCCInstallation() {
>>>> +    : ToolChain(D, Triple, Args), GCCInstallation() {
>>>>    getProgramPaths().push_back(getDriver().getInstalledDir());
>>>>    if (getDriver().getInstalledDir() != getDriver().Dir)
>>>>      getProgramPaths().push_back(getDriver().Dir);
>>>>  }
>>>>
>>>> -Generic_GCC::~Generic_GCC() {
>>>> -}
>>>> +Generic_GCC::~Generic_GCC() {}
>>>>
>>>>  Tool *Generic_GCC::getTool(Action::ActionClass AC) const {
>>>>    switch (AC) {
>>>> @@ -2048,17 +2021,11 @@ bool Generic_GCC::IsUnwindTablesDefault(
>>>>    return getArch() == llvm::Triple::x86_64;
>>>>  }
>>>>
>>>> -bool Generic_GCC::isPICDefault() const {
>>>> -  return false;
>>>> -}
>>>> +bool Generic_GCC::isPICDefault() const { return false; }
>>>>
>>>> -bool Generic_GCC::isPIEDefault() const {
>>>> -  return false;
>>>> -}
>>>> +bool Generic_GCC::isPIEDefault() const { return false; }
>>>>
>>>> -bool Generic_GCC::isPICDefaultForced() const {
>>>> -  return false;
>>>> -}
>>>> +bool Generic_GCC::isPICDefaultForced() const { return false; }
>>>>
>>>>  bool Generic_GCC::IsIntegratedAssemblerDefault() const {
>>>>    switch (getTriple().getArch()) {
>>>> @@ -2097,8 +2064,7 @@ void Generic_ELF::addClangTargetOptions(
>>>>        getTriple().getOS() == llvm::Triple::NaCl;
>>>>
>>>>    if (DriverArgs.hasFlag(options::OPT_fuse_init_array,
>>>> -                         options::OPT_fno_use_init_array,
>>>> -                         UseInitArrayDefault))
>>>> +                         options::OPT_fno_use_init_array,
>>>> UseInitArrayDefault))
>>>>      CC1Args.push_back("-fuse-init-array");
>>>>  }
>>>>
>>>> @@ -2124,18 +2090,15 @@ std::string Hexagon_TC::GetGnuDir(const
>>>>    return InstallRelDir;
>>>>  }
>>>>
>>>> -const char *Hexagon_TC::GetSmallDataThreshold(const ArgList &Args)
>>>> -{
>>>> +const char *Hexagon_TC::GetSmallDataThreshold(const ArgList &Args) {
>>>>    Arg *A;
>>>>
>>>> -  A = Args.getLastArg(options::OPT_G,
>>>> -                      options::OPT_G_EQ,
>>>> +  A = Args.getLastArg(options::OPT_G, options::OPT_G_EQ,
>>>>                        options::OPT_msmall_data_threshold_EQ);
>>>>    if (A)
>>>>      return A->getValue();
>>>>
>>>> -  A = Args.getLastArg(options::OPT_shared,
>>>> -                      options::OPT_fpic,
>>>> +  A = Args.getLastArg(options::OPT_shared, options::OPT_fpic,
>>>>                        options::OPT_fPIC);
>>>>    if (A)
>>>>      return "0";
>>>> @@ -2143,18 +2106,14 @@ const char *Hexagon_TC::GetSmallDataThre
>>>>    return 0;
>>>>  }
>>>>
>>>> -bool Hexagon_TC::UsesG0(const char* smallDataThreshold)
>>>> -{
>>>> +bool Hexagon_TC::UsesG0(const char *smallDataThreshold) {
>>>>    return smallDataThreshold && smallDataThreshold[0] == '0';
>>>>  }
>>>>
>>>> -static void GetHexagonLibraryPaths(
>>>> -  const ArgList &Args,
>>>> -  const std::string &Ver,
>>>> -  const std::string &MarchString,
>>>> -  const std::string &InstalledDir,
>>>> -  ToolChain::path_list *LibPaths)
>>>> -{
>>>> +static void GetHexagonLibraryPaths(const ArgList &Args, const
>>>> std::string &Ver,
>>>> +                                   const std::string &MarchString,
>>>> +                                   const std::string &InstalledDir,
>>>> +                                   ToolChain::path_list *LibPaths) {
>>>>    bool build
>>>
>>> ...
>>
>> [Message clipped]
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150629/ed06dab1/attachment.html>


More information about the cfe-commits mailing list