Skip to content

Commit 2b924c2

Browse files
authored
Merge pull request #35560 from nkcsgexi/73512368
[5.4] Revert "driver: forward driver invocation to the new driver by default"
2 parents 8dc273d + 53e0127 commit 2b924c2

File tree

3 files changed

+18
-26
lines changed

3 files changed

+18
-26
lines changed

include/swift/AST/DiagnosticsDriver.def

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,5 +193,8 @@ WARNING(warn_drv_darwin_sdk_invalid_settings, none,
193193
REMARK(remark_forwarding_to_new_driver, none,
194194
"new Swift driver at '%0' will be used", (StringRef))
195195

196+
REMARK(remark_forwarding_driver_not_there, none,
197+
"new Swift driver at '%0' cannot be found; C++ driver will be used", (StringRef))
198+
196199
#define UNDEFINE_DIAGNOSTIC_MACROS
197200
#include "DefineDiagnosticMacros.h"

test/Driver/tools_directory.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66
// RUN: %swiftc_driver -### -target x86_64-linux-unknown -tools-directory /Something/obviously/fake %s 2>&1 | %FileCheck -check-prefix BINUTILS %s
77

88
// CLANGSUB: swift
9-
// CLANGSUB: -o [[OBJECTFILE:.*]]
9+
// CLANGSUB-SAME: -o [[OBJECTFILE:.*]]
1010
// CLANGSUB: swift-autolink-extract{{(\.exe)?"?}} [[OBJECTFILE]]
11-
// CLANGSUB: -o {{"?}}[[AUTOLINKFILE:.*]]
11+
// CLANGSUB-SAME: -o {{"?}}[[AUTOLINKFILE:.*]]
1212
// CLANGSUB: {{[^ ]+(\\\\|/)}}Inputs{{/|\\\\}}fake-toolchain{{/|\\\\}}clang
1313
// CLANGSUB-DAG: [[OBJECTFILE]]
1414
// CLANGSUB-DAG: @[[AUTOLINKFILE]]
1515
// CLANGSUB: -o tools_directory
1616

1717
// BINUTILS: swift
18-
// BINUTILS: -o [[OBJECTFILE:.*]]
18+
// BINUTILS-SAME: -o [[OBJECTFILE:.*]]
1919
// BINUTILS: swift-autolink-extract{{(\.exe)?"?}} [[OBJECTFILE]]
20-
// BINUTILS: -o {{"?}}[[AUTOLINKFILE:.*]]
20+
// BINUTILS-SAME: -o {{"?}}[[AUTOLINKFILE:.*]]
2121
// BINUTILS: clang
2222
// BINUTILS-DAG: [[OBJECTFILE]]
2323
// BINUTILS-DAG: @[[AUTOLINKFILE]]
@@ -31,6 +31,6 @@
3131
// RUN: %swiftc_driver -### -target x86_64-apple-macosx10.9 -tools-directory %S/Inputs/fake-toolchain %s 2>&1 | %FileCheck -check-prefix LDSUB %s
3232

3333
// LDSUB: swift
34-
// LDSUB: -o [[OBJECTFILE:.*]]
34+
// LDSUB-SAME: -o [[OBJECTFILE:.*]]
3535
// LDSUB: {{[^ ]+(\\\\|/)}}Inputs{{/|\\\\}}fake-toolchain{{(\\\\|/)ld"?}} [[OBJECTFILE]]
3636
// LDSUB: -o tools_directory

tools/driver/driver.cpp

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -126,24 +126,6 @@ static bool shouldRunAsSubcommand(StringRef ExecName,
126126
return true;
127127
}
128128

129-
static bool shouldDisallowNewDriver(StringRef ExecName,
130-
const ArrayRef<const char *> argv) {
131-
// We are not invoking the driver, so don't forward.
132-
if (ExecName != "swift" && ExecName != "swiftc") {
133-
return true;
134-
}
135-
// If user specified using the old driver, don't forward.
136-
if (llvm::find_if(argv, [](const char* arg) {
137-
return StringRef(arg) == "-disallow-use-new-driver";
138-
}) != argv.end()) {
139-
return true;
140-
}
141-
if (llvm::sys::Process::GetEnv("SWIFT_USE_OLD_DRIVER").hasValue()) {
142-
return true;
143-
}
144-
return false;
145-
}
146-
147129
static int run_driver(StringRef ExecName,
148130
const ArrayRef<const char *> argv) {
149131
// Handle integrated tools.
@@ -178,16 +160,23 @@ static int run_driver(StringRef ExecName,
178160
DiagnosticEngine Diags(SM);
179161
Diags.addConsumer(PDC);
180162

181-
std::string newDriverName = "swift-driver-new";
163+
std::string newDriverName;
182164
if (auto driverNameOp = llvm::sys::Process::GetEnv("SWIFT_USE_NEW_DRIVER")) {
183165
newDriverName = driverNameOp.getValue();
184166
}
167+
auto disallowForwarding = llvm::find_if(argv, [](const char* arg) {
168+
return StringRef(arg) == "-disallow-use-new-driver";
169+
}) != argv.end();
185170
// Forwarding calls to the swift driver if the C++ driver is invoked as `swift`
186171
// or `swiftc`, and an environment variable SWIFT_USE_NEW_DRIVER is defined.
187-
if (!shouldDisallowNewDriver(ExecName, argv)) {
172+
if (!newDriverName.empty() && !disallowForwarding &&
173+
(ExecName == "swift" || ExecName == "swiftc")) {
188174
SmallString<256> NewDriverPath(llvm::sys::path::parent_path(Path));
189175
llvm::sys::path::append(NewDriverPath, newDriverName);
190-
if (llvm::sys::fs::exists(NewDriverPath)) {
176+
if (!llvm::sys::fs::exists(NewDriverPath)) {
177+
Diags.diagnose(SourceLoc(), diag::remark_forwarding_driver_not_there,
178+
NewDriverPath);
179+
} else {
191180
SmallVector<const char *, 256> subCommandArgs;
192181
// Rewrite the program argument.
193182
subCommandArgs.push_back(NewDriverPath.c_str());

0 commit comments

Comments
 (0)