diff --git a/include/swift/Option/Options.td b/include/swift/Option/Options.td index 422a8c1f9a78a..c3a168b93de86 100644 --- a/include/swift/Option/Options.td +++ b/include/swift/Option/Options.td @@ -779,11 +779,6 @@ def experimental_c_foreign_reference_types : Flags<[FrontendOption, HelpHidden, ModuleInterfaceOption]>, HelpText<"Enable experimental C foreign references types (with reference counting).">; -def experimental_cxx_stdlib : - Separate<["-"], "experimental-cxx-stdlib">, - Flags<[HelpHidden]>, - HelpText<"C++ standard library to use; forwarded to Clang's -stdlib flag">; - def experimental_hermetic_seal_at_link: Flag<["-"], "experimental-hermetic-seal-at-link">, Flags<[FrontendOption, HelpHidden]>, diff --git a/lib/Driver/DarwinToolChains.cpp b/lib/Driver/DarwinToolChains.cpp index 0d6e40faaa9f3..7d4d7d61071ee 100644 --- a/lib/Driver/DarwinToolChains.cpp +++ b/lib/Driver/DarwinToolChains.cpp @@ -999,13 +999,6 @@ toolchains::Darwin::validateArguments(DiagnosticEngine &diags, options::OPT_no_link_objc_runtime)) { diags.diagnose(SourceLoc(), diag::warn_darwin_link_objc_deprecated); } - - // If a C++ standard library is specified, it has to be libc++. - if (auto arg = args.getLastArg(options::OPT_experimental_cxx_stdlib)) { - if (StringRef(arg->getValue()) != "libc++") { - diags.diagnose(SourceLoc(), diag::error_darwin_only_supports_libcxx); - } - } } void diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 883cb302e7c8e..a209f72ebca41 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -204,14 +204,6 @@ void ToolChain::addCommonFrontendArgs(const OutputInfo &OI, arguments.push_back("-disable-objc-interop"); } - // Add flags for C++ interop. - if (const Arg *arg = - inputArgs.getLastArg(options::OPT_experimental_cxx_stdlib)) { - arguments.push_back("-Xcc"); - arguments.push_back( - inputArgs.MakeArgString(Twine("-stdlib=") + arg->getValue())); - } - if (inputArgs.hasArg(options::OPT_experimental_hermetic_seal_at_link)) { arguments.push_back("-enable-llvm-vfe"); arguments.push_back("-enable-llvm-wme"); diff --git a/lib/Driver/UnixToolChains.cpp b/lib/Driver/UnixToolChains.cpp index 517e9d1428bb5..98f8ec46c2dac 100644 --- a/lib/Driver/UnixToolChains.cpp +++ b/lib/Driver/UnixToolChains.cpp @@ -344,13 +344,6 @@ toolchains::GenericUnix::constructInvocation(const DynamicLinkJobAction &job, } } - // Link against the desired C++ standard library. - if (const Arg *A = - context.Args.getLastArg(options::OPT_experimental_cxx_stdlib)) { - Arguments.push_back( - context.Args.MakeArgString(Twine("-stdlib=") + A->getValue())); - } - // Explicitly pass the target to the linker Arguments.push_back( context.Args.MakeArgString("--target=" + getTriple().str())); diff --git a/lib/Driver/WindowsToolChains.cpp b/lib/Driver/WindowsToolChains.cpp index d8ff1aaf082c0..3ee075a47ecd4 100644 --- a/lib/Driver/WindowsToolChains.cpp +++ b/lib/Driver/WindowsToolChains.cpp @@ -174,13 +174,6 @@ toolchains::Windows::constructInvocation(const DynamicLinkJobAction &job, Arguments.push_back(context.Args.MakeArgString(context.OI.SDKPath)); } - // Link against the desired C++ standard library. - if (const Arg *A = - context.Args.getLastArg(options::OPT_experimental_cxx_stdlib)) { - Arguments.push_back(context.Args.MakeArgString( - Twine("-stdlib=") + A->getValue())); - } - if (job.getKind() == LinkKind::Executable) { if (context.OI.SelectedSanitizers & SanitizerKind::Address) addLinkRuntimeLib(context.Args, Arguments, diff --git a/test/Driver/cxx_interop.swift b/test/Driver/cxx_interop.swift index fafc8ed0124ad..7cca55eea69e3 100644 --- a/test/Driver/cxx_interop.swift +++ b/test/Driver/cxx_interop.swift @@ -1,10 +1,4 @@ // RUN: %swiftc_driver -driver-print-jobs -target x86_64-apple-macosx10.9 %s -Xfrontend -enable-experimental-cxx-interop 2>^1 | %FileCheck -check-prefix ENABLE %s -// RUN: %swiftc_driver -driver-print-jobs -target x86_64-apple-macosx10.9 %s -Xfrontend -enable-experimental-cxx-interop -experimental-cxx-stdlib libc++ 2>^1 | %FileCheck -check-prefix STDLIB %s - // ENABLE: swift // ENABLE: -enable-experimental-cxx-interop - -// STDLIB: swift -// STDLIB-DAG: -enable-experimental-cxx-interop -// STDLIB-DAG: -Xcc -stdlib=libc++ diff --git a/test/Driver/linker.swift b/test/Driver/linker.swift index bf4129c0e6a31..751d4d8c527c5 100644 --- a/test/Driver/linker.swift +++ b/test/Driver/linker.swift @@ -104,20 +104,15 @@ // INFERRED_NAMED_DARWIN tests above: 'libLINKER.dylib'. // RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-apple-macosx10.9 -emit-library %s -o libLINKER.dylib | %FileCheck -check-prefix INFERRED_NAME_DARWIN %s -// On Darwin, when C++ interop is turned on, we link against libc++ explicitly -// regardless of whether -experimental-cxx-stdlib is specified or not. So also -// run a test where C++ interop is turned off to make sure we don't link +// On Darwin, when C++ interop is turned on, we link against libc++ explicitly. +// So also run a test where C++ interop is turned off to make sure we don't link // against libc++ in this case. // RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-apple-ios7.1 %s 2>&1 | %FileCheck -check-prefix IOS-no-cxx-interop %s // RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-apple-ios7.1 -enable-experimental-cxx-interop %s 2>&1 | %FileCheck -check-prefix IOS-cxx-interop-libcxx %s -// RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-apple-ios7.1 -enable-experimental-cxx-interop -experimental-cxx-stdlib libc++ %s 2>&1 | %FileCheck -check-prefix IOS-cxx-interop-libcxx %s -// RUN: not %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-apple-ios7.1 -enable-experimental-cxx-interop -experimental-cxx-stdlib libstdc++ %s 2>&1 | %FileCheck -check-prefix IOS-cxx-interop-libstdcxx %s // RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-unknown-linux-gnu -enable-experimental-cxx-interop %s 2>&1 | %FileCheck -check-prefix LINUX-cxx-interop %s -// RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-unknown-linux-gnu -enable-experimental-cxx-interop -experimental-cxx-stdlib libc++ %s 2>&1 | %FileCheck -check-prefix LINUX-cxx-interop-libcxx %s // RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-unknown-windows-msvc -enable-experimental-cxx-interop %s 2>&1 | %FileCheck -check-prefix WINDOWS-cxx-interop %s -// RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-unknown-windows-msvc -enable-experimental-cxx-interop -experimental-cxx-stdlib libc++ %s 2>&1 | %FileCheck -check-prefix WINDOWS-cxx-interop-libcxx %s // Check reading the SDKSettings.json from an SDK // RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-apple-macosx10.9 -sdk %S/Inputs/MacOSX10.15.versioned.sdk %s 2>&1 | %FileCheck -check-prefix MACOS_10_15 %s @@ -460,30 +455,10 @@ // IOS-cxx-interop-libcxx-DAG: -lc++ // IOS-cxx-interop-libcxx: -o linker -// IOS-cxx-interop-libstdcxx: error: The only C++ standard library supported on Apple platforms is libc++ - // LINUX-cxx-interop-NOT: -stdlib -// LINUX-cxx-interop-libcxx: swift -// LINUX-cxx-interop-libcxx-DAG: -enable-experimental-cxx-interop -// LINUX-cxx-interop-libcxx-DAG: -o [[OBJECTFILE:.*]] - -// LINUX-cxx-interop-libcxx: clang++{{(\.exe)?"? }} -// LINUX-cxx-interop-libcxx-DAG: [[OBJECTFILE]] -// LINUX-cxx-interop-libcxx-DAG: -stdlib=libc++ -// LINUX-cxx-interop-libcxx: -o linker - // WINDOWS-cxx-interop-NOT: -stdlib -// WINDOWS-cxx-interop-libcxx: swift -// WINDOWS-cxx-interop-libcxx-DAG: -enable-experimental-cxx-interop -// WINDOWS-cxx-interop-libcxx-DAG: -o [[OBJECTFILE:.*]] - -// WINDOWS-cxx-interop-libcxx: clang++{{(\.exe)?"? }} -// WINDOWS-cxx-interop-libcxx-DAG: [[OBJECTFILE]] -// WINDOWS-cxx-interop-libcxx-DAG: -stdlib=libc++ -// WINDOWS-cxx-interop-libcxx: -o linker - // Test ld detection. We use hard links to make sure // the Swift driver really thinks it's been moved.