Skip to content

Commit deab2fa

Browse files
authored
Merge pull request swiftlang#72519 from mikeash/fix-validate-prespecialized-metadata
[Runtime] Fix _swift_validatePrespecializedMetadata when type lookup fails.
2 parents cec4815 + fe9de7b commit deab2fa

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

include/swift/Runtime/LibPrespecialized.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ void libPrespecializedImageLoaded();
6262
// were validated (which is the total number in the table), and outFailed is set
6363
// to the number that failed validation.
6464
SWIFT_RUNTIME_EXPORT
65-
void _swift_validatePrespecializedMetadata(unsigned *outValidated,
66-
unsigned *outFailed);
65+
void _swift_validatePrespecializedMetadata();
6766

6867
#endif // SWIFT_LIB_PRESPECIALIZED_H

stdlib/public/runtime/LibPrespecialized.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -245,20 +245,17 @@ swift::getLibPrespecializedMetadata(const TypeContextDescriptor *description,
245245
return result;
246246
}
247247

248-
void _swift_validatePrespecializedMetadata(unsigned *outValidated,
249-
unsigned *outFailed) {
250-
if (outValidated)
251-
*outValidated = 0;
252-
if (outFailed)
253-
*outFailed = 0;
254-
248+
void _swift_validatePrespecializedMetadata() {
255249
auto *data = getLibPrespecializedData();
256250
if (!data) {
257251
return;
258252
}
259253

260254
disableForValidation = true;
261255

256+
unsigned validated = 0;
257+
unsigned failed = 0;
258+
262259
auto *metadataMap = data->getMetadataMap();
263260
auto metadataMapSize = metadataMap->arraySize;
264261
auto *array = metadataMap->array();
@@ -267,8 +264,7 @@ void _swift_validatePrespecializedMetadata(unsigned *outValidated,
267264
if (!element.key || !element.value)
268265
continue;
269266

270-
if (outValidated)
271-
(*outValidated)++;
267+
validated++;
272268

273269
const char *mangledName = element.key;
274270
// Skip the leading $.
@@ -282,12 +278,16 @@ void _swift_validatePrespecializedMetadata(unsigned *outValidated,
282278
"Prespecializations library validation: unable to build metadata "
283279
"for mangled name '%s'\n",
284280
mangledName);
285-
if (outFailed)
286-
(*outFailed)++;
281+
failed++;
282+
continue;
287283
}
288284

289285
if (!compareGenericMetadata(result.getType().getMetadata(), element.value))
290-
if (outFailed)
291-
(*outFailed)++;
286+
failed++;
292287
}
288+
289+
fprintf(stderr,
290+
"Prespecializations library validation: validated %u entries, %u "
291+
"failures.\n",
292+
validated, failed);
293293
}

0 commit comments

Comments
 (0)