@@ -73,10 +73,13 @@ bool swift::inputFileKindCanHaveTBDValidated(InputFileKind kind) {
7373 llvm_unreachable (" unhandled kind" );
7474}
7575
76- static bool validateSymbolSet (DiagnosticEngine &diags,
77- llvm::StringSet<> symbols,
78- const llvm::Module &IRModule,
79- bool diagnoseExtraSymbolsInTBD) {
76+ static bool validateSymbols (DiagnosticEngine &diags,
77+ const std::vector<std::string> &symbols,
78+ const llvm::Module &IRModule,
79+ bool diagnoseExtraSymbolsInTBD) {
80+ llvm::StringSet<> symbolSet;
81+ symbolSet.insert (symbols.begin (), symbols.end ());
82+
8083 auto error = false ;
8184
8285 // Diff the two sets of symbols, flagging anything outside their intersection.
@@ -101,13 +104,13 @@ static bool validateSymbolSet(DiagnosticEngine &diags,
101104 GV->hasExternalLinkage () && !GV->hasHiddenVisibility ();
102105 if (!GV->isDeclaration () && externallyVisible) {
103106 // Is it listed?
104- if (!symbols .erase (name))
107+ if (!symbolSet .erase (name))
105108 // Note: Add the unmangled name to the irNotTBD list, which is owned
106109 // by the IRModule, instead of the mangled name.
107110 irNotTBD.push_back (unmangledName);
108111 }
109112 } else {
110- assert (symbols .find (name) == symbols .end () &&
113+ assert (symbolSet .find (name) == symbolSet .end () &&
111114 " non-global value in value symbol table" );
112115 }
113116 }
@@ -121,7 +124,7 @@ static bool validateSymbolSet(DiagnosticEngine &diags,
121124
122125 if (diagnoseExtraSymbolsInTBD) {
123126 // Look for any extra symbols.
124- for (auto &name : sortSymbols (symbols )) {
127+ for (auto &name : sortSymbols (symbolSet )) {
125128 diags.diagnose (SourceLoc (), diag::symbol_in_tbd_not_in_ir, name,
126129 Demangle::demangleSymbolAsString (name));
127130 error = true ;
@@ -140,16 +143,15 @@ bool swift::validateTBD(ModuleDecl *M,
140143 const TBDGenOptions &opts,
141144 bool diagnoseExtraSymbolsInTBD) {
142145 auto symbols = getPublicSymbols (TBDGenDescriptor::forModule (M, opts));
143- return validateSymbolSet (M->getASTContext ().Diags , symbols, IRModule,
144- diagnoseExtraSymbolsInTBD);
146+ return validateSymbols (M->getASTContext ().Diags , symbols, IRModule,
147+ diagnoseExtraSymbolsInTBD);
145148}
146149
147150bool swift::validateTBD (FileUnit *file,
148151 const llvm::Module &IRModule,
149152 const TBDGenOptions &opts,
150153 bool diagnoseExtraSymbolsInTBD) {
151154 auto symbols = getPublicSymbols (TBDGenDescriptor::forFile (file, opts));
152- return validateSymbolSet (file->getParentModule ()->getASTContext ().Diags ,
153- symbols, IRModule,
154- diagnoseExtraSymbolsInTBD);
155+ return validateSymbols (file->getParentModule ()->getASTContext ().Diags ,
156+ symbols, IRModule, diagnoseExtraSymbolsInTBD);
155157}
0 commit comments