Skip to content

Commit fb01667

Browse files
authored
Merge pull request #59038 from apple/revert-58800-AutoLinkExtractSet
Revert "[Autolink Extract] Keep a set of linker flags instead of vector"
2 parents bb03f77 + 3e8a115 commit fb01667

File tree

2 files changed

+9
-35
lines changed

2 files changed

+9
-35
lines changed

lib/DriverTool/autolink_extract_main.cpp

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
#include <string>
2020
#include <vector>
21-
#include <unordered_set>
2221

2322
#include "swift/AST/DiagnosticsFrontend.h"
2423
#include "swift/Frontend/Frontend.h"
@@ -113,7 +112,6 @@ class AutolinkExtractInvocation {
113112
/// Return 'true' if there was an error, and 'false' otherwise.
114113
static bool
115114
extractLinkerFlagsFromObjectFile(const llvm::object::ObjectFile *ObjectFile,
116-
std::unordered_set<std::string> &SeenLinkerLibraryFlags,
117115
std::vector<std::string> &LinkerFlags,
118116
CompilerInstance &Instance) {
119117
// Search for the section we hold autolink entries in
@@ -142,15 +140,8 @@ extractLinkerFlagsFromObjectFile(const llvm::object::ObjectFile *ObjectFile,
142140
llvm::SmallVector<llvm::StringRef, 4> SplitFlags;
143141
SectionData->split(SplitFlags, llvm::StringRef("\0", 1), -1,
144142
/*KeepEmpty=*/false);
145-
for (const auto &Flag : SplitFlags) {
146-
// If this is a library '-lxxx' flag, only add it if we have not seen it before
147-
if (Flag.str().rfind("-l", 0) == 0) {
148-
auto SeenFlagsInsertResult = SeenLinkerLibraryFlags.insert(Flag.str());
149-
if (SeenFlagsInsertResult.second == true)
150-
LinkerFlags.push_back(Flag.str());
151-
} else
152-
LinkerFlags.push_back(Flag.str());
153-
}
143+
for (const auto &Flag : SplitFlags)
144+
LinkerFlags.push_back(Flag.str());
154145
}
155146
}
156147
return false;
@@ -161,7 +152,6 @@ extractLinkerFlagsFromObjectFile(const llvm::object::ObjectFile *ObjectFile,
161152
/// 'true' if there was an error, and 'false' otherwise.
162153
static bool
163154
extractLinkerFlagsFromObjectFile(const llvm::object::WasmObjectFile *ObjectFile,
164-
std::unordered_set<std::string> &SeenLinkerLibraryFlags,
165155
std::vector<std::string> &LinkerFlags,
166156
CompilerInstance &Instance) {
167157
// Search for the data segment we hold autolink entries in
@@ -174,15 +164,8 @@ extractLinkerFlagsFromObjectFile(const llvm::object::WasmObjectFile *ObjectFile,
174164
llvm::SmallVector<llvm::StringRef, 4> SplitFlags;
175165
SegmentData.split(SplitFlags, llvm::StringRef("\0", 1), -1,
176166
/*KeepEmpty=*/false);
177-
for (const auto &Flag : SplitFlags) {
178-
// If this is a library '-lxxx' flag, only add it if we have not seen it before
179-
if (Flag.str().rfind("-l", 0) == 0) {
180-
auto SeenFlagsInsertResult = SeenLinkerLibraryFlags.insert(Flag.str());
181-
if (SeenFlagsInsertResult.second == true)
182-
LinkerFlags.push_back(Flag.str());
183-
} else
184-
LinkerFlags.push_back(Flag.str());
185-
}
167+
for (const auto &Flag : SplitFlags)
168+
LinkerFlags.push_back(Flag.str());
186169
}
187170
}
188171
return false;
@@ -195,13 +178,12 @@ extractLinkerFlagsFromObjectFile(const llvm::object::WasmObjectFile *ObjectFile,
195178
static bool extractLinkerFlags(const llvm::object::Binary *Bin,
196179
CompilerInstance &Instance,
197180
StringRef BinaryFileName,
198-
std::unordered_set<std::string> &SeenLinkerLibraryFlags,
199181
std::vector<std::string> &LinkerFlags) {
200182
if (auto *ObjectFile = llvm::dyn_cast<llvm::object::ELFObjectFileBase>(Bin)) {
201-
return extractLinkerFlagsFromObjectFile(ObjectFile, SeenLinkerLibraryFlags, LinkerFlags, Instance);
183+
return extractLinkerFlagsFromObjectFile(ObjectFile, LinkerFlags, Instance);
202184
} else if (auto *ObjectFile =
203185
llvm::dyn_cast<llvm::object::WasmObjectFile>(Bin)) {
204-
return extractLinkerFlagsFromObjectFile(ObjectFile, SeenLinkerLibraryFlags, LinkerFlags, Instance);
186+
return extractLinkerFlagsFromObjectFile(ObjectFile, LinkerFlags, Instance);
205187
} else if (auto *Archive = llvm::dyn_cast<llvm::object::Archive>(Bin)) {
206188
llvm::Error Error = llvm::Error::success();
207189
for (const auto &Child : Archive->children(Error)) {
@@ -215,7 +197,7 @@ static bool extractLinkerFlags(const llvm::object::Binary *Bin,
215197
return true;
216198
}
217199
if (extractLinkerFlags(ChildBinary->get(), Instance, BinaryFileName,
218-
SeenLinkerLibraryFlags, LinkerFlags)) {
200+
LinkerFlags)) {
219201
return true;
220202
}
221203
}
@@ -246,8 +228,6 @@ int autolink_extract_main(ArrayRef<const char *> Args, const char *Argv0,
246228
}
247229

248230
std::vector<std::string> LinkerFlags;
249-
// Flags of the form '-lxxx' seen so far
250-
std::unordered_set<std::string> SeenLinkerLibraryFlags;
251231

252232
// Extract the linker flags from the objects.
253233
for (const auto &BinaryFileName : Invocation.getInputFilenames()) {
@@ -265,7 +245,7 @@ int autolink_extract_main(ArrayRef<const char *> Args, const char *Argv0,
265245
}
266246

267247
if (extractLinkerFlags(BinaryOwner->getBinary(), Instance, BinaryFileName,
268-
SeenLinkerLibraryFlags, LinkerFlags)) {
248+
LinkerFlags)) {
269249
return 1;
270250
}
271251
}

test/AutolinkExtract/import.swift

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
// RUN: %empty-directory(%t)
22
// RUN: %target-swiftc_driver -emit-module -emit-module-path %t/empty.swiftmodule -module-name empty -module-link-name empty %S/empty.swift
33
// RUN: %target-swiftc_driver -c %s -I %t -o %t/import_experimental.o
4-
// RUN: %target-swiftc_driver -c %s -I %t -o %t/import_experimental_again.o
5-
// RUN: %target-swift-autolink-extract %t/import_experimental.o %t/import_experimental_again.o -o - | %FileCheck --check-prefix CHECK-%target-object-format %s
6-
7-
// RUN: %target-swift-autolink-extract %t/import_experimental.o %t/import_experimental_again.o -o - | %FileCheck --check-prefix UNIQUE %s
4+
// RUN: %target-swift-autolink-extract %t/import_experimental.o -o - | %FileCheck --check-prefix CHECK-%target-object-format %s
85

96
// REQUIRES: autolink-extract
107

11-
// UNIQUE-COUNT-1: -lempty
12-
// UNIQUE-COUNT-1: -lswiftCore
13-
148
// CHECK-elf-DAG: -lswiftCore
159
// CHECK-elf-DAG: -lempty
1610

0 commit comments

Comments
 (0)