diff options
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 269 |
1 files changed, 130 insertions, 139 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index a2b436e9a3f..54511327179 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -58,7 +58,7 @@ Driver::Driver(StringRef ClangExecutable, StringRef DefaultTargetTriple, 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<const char *> Args) { 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(ArrayRef<const char *> ArgStrings) { unsigned IncludedFlagsBitmask; unsigned ExcludedFlagsBitmask; std::tie(IncludedFlagsBitmask, ExcludedFlagsBitmask) = - getIncludeExcludeOptionFlagMasks(); + getIncludeExcludeOptionFlagMasks(); unsigned MissingArgIndex, MissingArgCount; InputArgList Args = @@ -132,8 +132,7 @@ InputArgList Driver::ParseArgStrings(ArrayRef<const char *> ArgStrings) { } // 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(ArrayRef<const char *> ArgStrings) { // 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::TranslateInputArgs(const InputArgList &Args) const { // 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::TranslateInputArgs(const InputArgList &Args) const { 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(ArrayRef<const char *> ArgList) { 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(ArrayRef<const char *> ArgList) { // 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::generateCompilationDiagnostics(Compilation &C, 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::generateCompilationDiagnostics(Compilation &C, // 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::generateCompilationDiagnostics(Compilation &C, 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::generateCompilationDiagnostics(Compilation &C, } 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::generateCompilationDiagnostics(Compilation &C, // 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::generateCompilationDiagnostics(Compilation &C, 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(Compilation &C, Job &J) { 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(Compilation &C, // 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) const { unsigned IncludedFlagsBitmask; unsigned ExcludedFlagsBitmask; std::tie(IncludedFlagsBitmask, ExcludedFlagsBitmask) = - getIncludeExcludeOptionFlagMasks(); + getIncludeExcludeOptionFlagMasks(); ExcludedFlagsBitmask |= options::NoDriverOption; if (!ShowHidden) @@ -684,8 +682,8 @@ void Driver::PrintVersion(const Compilation &C, raw_ostream &OS) const { /// 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 Compilation &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 Compilation &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 Compilation &C) const { /// \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 ContainsCompileOrAssembleAction(const Action *A) { 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 ToolChain &TC, // 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 ToolChain &TC, 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 &TC, DerivedArgList &Args, 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 &TC, DerivedArgList &Args, 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 ToolChain &TC, DerivedArgList &Args, !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 ToolChain &TC, DerivedArgList &Args, !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 ToolChain &TC, DerivedArgList &Args, // 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 ToolChain &TC, const ArgList &Args, 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 ToolChain &TC, const ArgList &Args, 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) const { 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) const { 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) const { } Diag(clang::diag::warn_drv_unused_argument) - << A->getAsString(C.getArgs()); + << A->getAsString(C.getArgs()); } } } @@ -1484,13 +1478,12 @@ static const Tool *SelectToolForJob(Compilation &C, bool SaveTemps, // 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(Compilation &C, bool SaveTemps, // (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(Compilation &C, bool SaveTemps, 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(Compilation &C, 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() const { /// 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(const ArgList &Args, StringRef ArgValue, 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(Compilation &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(Compilation &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(Compilation &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(Compilation &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 char *Name, const ToolChain &TC) const { 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 char *Name, 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(StringRef DefaultTargetTriple, 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(StringRef DefaultTargetTriple, 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(const ArgList &Args, 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 char *Str, unsigned &Major, 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) |

