Skip to content

Commit 5490c50

Browse files
authored
Merge pull request #76280 from swiftlang/egorzhdan/remove-cxx-stdlib-flag
[cxx-interop] Remove `-experimental-cxx-stdlib` flag
2 parents 0a14f04 + 2df1b6f commit 5490c50

File tree

7 files changed

+2
-67
lines changed

7 files changed

+2
-67
lines changed

include/swift/Option/Options.td

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -790,11 +790,6 @@ def experimental_c_foreign_reference_types :
790790
Flags<[FrontendOption, HelpHidden, ModuleInterfaceOption]>,
791791
HelpText<"Enable experimental C foreign references types (with reference counting).">;
792792

793-
def experimental_cxx_stdlib :
794-
Separate<["-"], "experimental-cxx-stdlib">,
795-
Flags<[HelpHidden]>,
796-
HelpText<"C++ standard library to use; forwarded to Clang's -stdlib flag">;
797-
798793
def experimental_hermetic_seal_at_link:
799794
Flag<["-"], "experimental-hermetic-seal-at-link">,
800795
Flags<[FrontendOption, HelpHidden]>,

lib/Driver/DarwinToolChains.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -999,13 +999,6 @@ toolchains::Darwin::validateArguments(DiagnosticEngine &diags,
999999
options::OPT_no_link_objc_runtime)) {
10001000
diags.diagnose(SourceLoc(), diag::warn_darwin_link_objc_deprecated);
10011001
}
1002-
1003-
// If a C++ standard library is specified, it has to be libc++.
1004-
if (auto arg = args.getLastArg(options::OPT_experimental_cxx_stdlib)) {
1005-
if (StringRef(arg->getValue()) != "libc++") {
1006-
diags.diagnose(SourceLoc(), diag::error_darwin_only_supports_libcxx);
1007-
}
1008-
}
10091002
}
10101003

10111004
void

lib/Driver/ToolChains.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,14 +204,6 @@ void ToolChain::addCommonFrontendArgs(const OutputInfo &OI,
204204
arguments.push_back("-disable-objc-interop");
205205
}
206206

207-
// Add flags for C++ interop.
208-
if (const Arg *arg =
209-
inputArgs.getLastArg(options::OPT_experimental_cxx_stdlib)) {
210-
arguments.push_back("-Xcc");
211-
arguments.push_back(
212-
inputArgs.MakeArgString(Twine("-stdlib=") + arg->getValue()));
213-
}
214-
215207
if (inputArgs.hasArg(options::OPT_experimental_hermetic_seal_at_link)) {
216208
arguments.push_back("-enable-llvm-vfe");
217209
arguments.push_back("-enable-llvm-wme");

lib/Driver/UnixToolChains.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -344,13 +344,6 @@ toolchains::GenericUnix::constructInvocation(const DynamicLinkJobAction &job,
344344
}
345345
}
346346

347-
// Link against the desired C++ standard library.
348-
if (const Arg *A =
349-
context.Args.getLastArg(options::OPT_experimental_cxx_stdlib)) {
350-
Arguments.push_back(
351-
context.Args.MakeArgString(Twine("-stdlib=") + A->getValue()));
352-
}
353-
354347
// Explicitly pass the target to the linker
355348
Arguments.push_back(
356349
context.Args.MakeArgString("--target=" + getTriple().str()));

lib/Driver/WindowsToolChains.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,6 @@ toolchains::Windows::constructInvocation(const DynamicLinkJobAction &job,
174174
Arguments.push_back(context.Args.MakeArgString(context.OI.SDKPath));
175175
}
176176

177-
// Link against the desired C++ standard library.
178-
if (const Arg *A =
179-
context.Args.getLastArg(options::OPT_experimental_cxx_stdlib)) {
180-
Arguments.push_back(context.Args.MakeArgString(
181-
Twine("-stdlib=") + A->getValue()));
182-
}
183-
184177
if (job.getKind() == LinkKind::Executable) {
185178
if (context.OI.SelectedSanitizers & SanitizerKind::Address)
186179
addLinkRuntimeLib(context.Args, Arguments,

test/Driver/cxx_interop.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
11
// 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
22

3-
// 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
4-
53
// ENABLE: swift
64
// ENABLE: -enable-experimental-cxx-interop
7-
8-
// STDLIB: swift
9-
// STDLIB-DAG: -enable-experimental-cxx-interop
10-
// STDLIB-DAG: -Xcc -stdlib=libc++

test/Driver/linker.swift

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -104,20 +104,15 @@
104104
// INFERRED_NAMED_DARWIN tests above: 'libLINKER.dylib'.
105105
// 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
106106

107-
// On Darwin, when C++ interop is turned on, we link against libc++ explicitly
108-
// regardless of whether -experimental-cxx-stdlib is specified or not. So also
109-
// run a test where C++ interop is turned off to make sure we don't link
107+
// On Darwin, when C++ interop is turned on, we link against libc++ explicitly.
108+
// So also run a test where C++ interop is turned off to make sure we don't link
110109
// against libc++ in this case.
111110
// RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-apple-ios7.1 %s 2>&1 | %FileCheck -check-prefix IOS-no-cxx-interop %s
112111
// 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
113-
// 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
114-
// 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
115112

116113
// 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
117-
// 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
118114

119115
// 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
120-
// 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
121116

122117
// Check reading the SDKSettings.json from an SDK
123118
// 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 @@
460455
// IOS-cxx-interop-libcxx-DAG: -lc++
461456
// IOS-cxx-interop-libcxx: -o linker
462457

463-
// IOS-cxx-interop-libstdcxx: error: The only C++ standard library supported on Apple platforms is libc++
464-
465458
// LINUX-cxx-interop-NOT: -stdlib
466459

467-
// LINUX-cxx-interop-libcxx: swift
468-
// LINUX-cxx-interop-libcxx-DAG: -enable-experimental-cxx-interop
469-
// LINUX-cxx-interop-libcxx-DAG: -o [[OBJECTFILE:.*]]
470-
471-
// LINUX-cxx-interop-libcxx: clang++{{(\.exe)?"? }}
472-
// LINUX-cxx-interop-libcxx-DAG: [[OBJECTFILE]]
473-
// LINUX-cxx-interop-libcxx-DAG: -stdlib=libc++
474-
// LINUX-cxx-interop-libcxx: -o linker
475-
476460
// WINDOWS-cxx-interop-NOT: -stdlib
477461

478-
// WINDOWS-cxx-interop-libcxx: swift
479-
// WINDOWS-cxx-interop-libcxx-DAG: -enable-experimental-cxx-interop
480-
// WINDOWS-cxx-interop-libcxx-DAG: -o [[OBJECTFILE:.*]]
481-
482-
// WINDOWS-cxx-interop-libcxx: clang++{{(\.exe)?"? }}
483-
// WINDOWS-cxx-interop-libcxx-DAG: [[OBJECTFILE]]
484-
// WINDOWS-cxx-interop-libcxx-DAG: -stdlib=libc++
485-
// WINDOWS-cxx-interop-libcxx: -o linker
486-
487462
// Test ld detection. We use hard links to make sure
488463
// the Swift driver really thinks it's been moved.
489464

0 commit comments

Comments
 (0)