diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index ece8222dcf24..d2b6268d5fa3 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -978,17 +978,6 @@ Compilation *Driver::BuildCompilation(ArrayRef ArgList) { // FIXME: Handle environment options which affect driver behavior, somewhere // (client?). GCC_EXEC_PREFIX, LPATH, CC_PRINT_OPTIONS. - if (Optional CompilerPathValue = - llvm::sys::Process::GetEnv("COMPILER_PATH")) { - StringRef CompilerPath = *CompilerPathValue; - while (!CompilerPath.empty()) { - std::pair Split = - CompilerPath.split(llvm::sys::EnvPathSeparator); - PrefixDirs.push_back(std::string(Split.first)); - CompilerPath = Split.second; - } - } - // We look for the driver mode option early, because the mode can affect // how other options are parsed. ParseDriverMode(ClangExecutable, ArgList.slice(1)); @@ -1106,6 +1095,16 @@ Compilation *Driver::BuildCompilation(ArrayRef ArgList) { A->claim(); PrefixDirs.push_back(A->getValue(0)); } + if (Optional CompilerPathValue = + llvm::sys::Process::GetEnv("COMPILER_PATH")) { + StringRef CompilerPath = *CompilerPathValue; + while (!CompilerPath.empty()) { + std::pair Split = + CompilerPath.split(llvm::sys::EnvPathSeparator); + PrefixDirs.push_back(std::string(Split.first)); + CompilerPath = Split.second; + } + } if (const Arg *A = Args.getLastArg(options::OPT__sysroot_EQ)) SysRoot = A->getValue(); if (const Arg *A = Args.getLastArg(options::OPT__dyld_prefix_EQ))