18
18
19
19
#include < string>
20
20
#include < vector>
21
+ #include < set>
21
22
22
23
#include " swift/AST/DiagnosticsFrontend.h"
23
24
#include " swift/Frontend/Frontend.h"
@@ -112,7 +113,7 @@ class AutolinkExtractInvocation {
112
113
// / Return 'true' if there was an error, and 'false' otherwise.
113
114
static bool
114
115
extractLinkerFlagsFromObjectFile (const llvm::object::ObjectFile *ObjectFile,
115
- std::vector <std::string> &LinkerFlags,
116
+ llvm::SetVector <std::string> &LinkerFlags,
116
117
CompilerInstance &Instance) {
117
118
// Search for the section we hold autolink entries in
118
119
for (auto &Section : ObjectFile->sections ()) {
@@ -141,7 +142,7 @@ extractLinkerFlagsFromObjectFile(const llvm::object::ObjectFile *ObjectFile,
141
142
SectionData->split (SplitFlags, llvm::StringRef (" \0 " , 1 ), -1 ,
142
143
/* KeepEmpty=*/ false );
143
144
for (const auto &Flag : SplitFlags)
144
- LinkerFlags.push_back (Flag.str ());
145
+ LinkerFlags.insert (Flag.str ());
145
146
}
146
147
}
147
148
return false ;
@@ -152,7 +153,7 @@ extractLinkerFlagsFromObjectFile(const llvm::object::ObjectFile *ObjectFile,
152
153
// / 'true' if there was an error, and 'false' otherwise.
153
154
static bool
154
155
extractLinkerFlagsFromObjectFile (const llvm::object::WasmObjectFile *ObjectFile,
155
- std::vector <std::string> &LinkerFlags,
156
+ llvm::SetVector <std::string> &LinkerFlags,
156
157
CompilerInstance &Instance) {
157
158
// Search for the data segment we hold autolink entries in
158
159
for (const llvm::object::WasmSegment &Segment : ObjectFile->dataSegments ()) {
@@ -165,7 +166,7 @@ extractLinkerFlagsFromObjectFile(const llvm::object::WasmObjectFile *ObjectFile,
165
166
SegmentData.split (SplitFlags, llvm::StringRef (" \0 " , 1 ), -1 ,
166
167
/* KeepEmpty=*/ false );
167
168
for (const auto &Flag : SplitFlags)
168
- LinkerFlags.push_back (Flag.str ());
169
+ LinkerFlags.insert (Flag.str ());
169
170
}
170
171
}
171
172
return false ;
@@ -178,7 +179,7 @@ extractLinkerFlagsFromObjectFile(const llvm::object::WasmObjectFile *ObjectFile,
178
179
static bool extractLinkerFlags (const llvm::object::Binary *Bin,
179
180
CompilerInstance &Instance,
180
181
StringRef BinaryFileName,
181
- std::vector <std::string> &LinkerFlags) {
182
+ llvm::SetVector <std::string> &LinkerFlags) {
182
183
if (auto *ObjectFile = llvm::dyn_cast<llvm::object::ELFObjectFileBase>(Bin)) {
183
184
return extractLinkerFlagsFromObjectFile (ObjectFile, LinkerFlags, Instance);
184
185
} else if (auto *ObjectFile =
@@ -227,7 +228,7 @@ int autolink_extract_main(ArrayRef<const char *> Args, const char *Argv0,
227
228
return 1 ;
228
229
}
229
230
230
- std::vector <std::string> LinkerFlags;
231
+ llvm::SetVector <std::string> LinkerFlags;
231
232
232
233
// Extract the linker flags from the objects.
233
234
for (const auto &BinaryFileName : Invocation.getInputFilenames ()) {
0 commit comments