4545#include " llvm/Support/Signals.h"
4646#include " llvm/Support/raw_ostream.h"
4747#include " llvm/Support/xxhash.h"
48+ #include " llvm/Target/TargetVerifier.h"
4849#include < unordered_map>
4950#include < unordered_set>
5051#include < utility>
@@ -1461,9 +1462,10 @@ void PreservedCFGCheckerInstrumentation::registerCallbacks(
14611462}
14621463
14631464void VerifyInstrumentation::registerCallbacks (PassInstrumentationCallbacks &PIC,
1464- ModuleAnalysisManager *MAM) {
1465+ ModuleAnalysisManager *MAM,
1466+ FunctionAnalysisManager *FAM) {
14651467 PIC.registerAfterPassCallback (
1466- [this , MAM](StringRef P, Any IR, const PreservedAnalyses &PassPA) {
1468+ [this , MAM, FAM ](StringRef P, Any IR, const PreservedAnalyses &PassPA) {
14671469 if (isIgnored (P) || P == " VerifierPass" )
14681470 return ;
14691471 const auto *F = unwrapIR<Function>(IR);
@@ -1480,6 +1482,15 @@ void VerifyInstrumentation::registerCallbacks(PassInstrumentationCallbacks &PIC,
14801482 report_fatal_error (formatv (" Broken function found after pass "
14811483 " \" {0}\" , compilation aborted!" ,
14821484 P));
1485+
1486+ if (FAM) {
1487+ TargetVerify TV (const_cast <Module*>(F->getParent ()));
1488+ TV.run (*const_cast <Function*>(F), *FAM);
1489+ if (!F->getParent ()->IsValid )
1490+ report_fatal_error (formatv (" Broken function found after pass "
1491+ " \" {0}\" , compilation aborted!" ,
1492+ P));
1493+ }
14831494 } else {
14841495 const auto *M = unwrapIR<Module>(IR);
14851496 if (!M) {
@@ -2524,7 +2535,7 @@ void PrintCrashIRInstrumentation::registerCallbacks(
25242535}
25252536
25262537void StandardInstrumentations::registerCallbacks (
2527- PassInstrumentationCallbacks &PIC, ModuleAnalysisManager *MAM) {
2538+ PassInstrumentationCallbacks &PIC, ModuleAnalysisManager *MAM, FunctionAnalysisManager *FAM ) {
25282539 PrintIR.registerCallbacks (PIC);
25292540 PrintPass.registerCallbacks (PIC);
25302541 TimePasses.registerCallbacks (PIC);
@@ -2533,7 +2544,7 @@ void StandardInstrumentations::registerCallbacks(
25332544 PrintChangedIR.registerCallbacks (PIC);
25342545 PseudoProbeVerification.registerCallbacks (PIC);
25352546 if (VerifyEach)
2536- Verify.registerCallbacks (PIC, MAM);
2547+ Verify.registerCallbacks (PIC, MAM, FAM );
25372548 PrintChangedDiff.registerCallbacks (PIC);
25382549 WebsiteChangeReporter.registerCallbacks (PIC);
25392550 ChangeTester.registerCallbacks (PIC);
0 commit comments