Index: include/clang/Driver/CLCompatOptions.td =================================================================== --- include/clang/Driver/CLCompatOptions.td +++ include/clang/Driver/CLCompatOptions.td @@ -98,6 +98,7 @@ def _SLASH_Tp : CLJoinedOrSeparate<"Tp">, HelpText<"Specify a C++ source file">, MetaVarName<"">; def _SLASH_TP : CLFlag<"TP">, HelpText<"Treat all source files as C++">; +def _SLASH_Za : CLFlag<"Za">; // Ignored: Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -3842,10 +3842,11 @@ llvm_unreachable("Unexpected option ID."); } - // This provides POSIX compatibility (maps 'open' to '_open'), which most users - // want. MSVC has a switch to turn off this autolinking, but it's not - // implemented in clang yet. - CmdArgs.push_back("--dependent-lib=oldnames"); + if (!Args.hasArg(options::OPT__SLASH_Za)) { + // This provides POSIX compatibility (maps 'open' to '_open'), + // which most users want. + CmdArgs.push_back("--dependent-lib=oldnames"); + } } void ClangAs::ConstructJob(Compilation &C, const JobAction &JA, Index: test/Driver/cl-Za.c =================================================================== --- /dev/null +++ test/Driver/cl-Za.c @@ -0,0 +1,11 @@ +// Don't attempt slash switches on msys bash. +// REQUIRES: shell-preserves-root + +// Note: %s must be preceded by --, otherwise it may be interpreted as a +// command-line option, e.g. on Mac where %s is commonly under /Users. + +// RUN: %clang_cl -### -- %s 2>&1 | FileCheck -check-prefix=DEFAULT %s +// DEFAULT: "--dependent-lib=oldnames" + +// RUN: %clang_cl /Za -### -- %s 2>&1 | FileCheck -check-prefix=Za %s +// Za-NOT: "--dependent-lib=oldnames"