@@ -58,7 +58,7 @@ namespace {
58
58
Banner (b)
59
59
{}
60
60
61
- bool runOnMachineFunction (MachineFunction &MF);
61
+ unsigned verify (MachineFunction &MF);
62
62
63
63
Pass *const PASS;
64
64
const char *Banner;
@@ -268,7 +268,9 @@ namespace {
268
268
}
269
269
270
270
bool runOnMachineFunction (MachineFunction &MF) override {
271
- MF.verify (this , Banner.c_str ());
271
+ unsigned FoundErrors = MachineVerifier (this , Banner.c_str ()).verify (MF);
272
+ if (FoundErrors)
273
+ report_fatal_error (" Found " +Twine (FoundErrors)+" machine code errors." );
272
274
return false ;
273
275
}
274
276
};
@@ -283,9 +285,13 @@ FunctionPass *llvm::createMachineVerifierPass(const std::string &Banner) {
283
285
return new MachineVerifierPass (Banner);
284
286
}
285
287
286
- void MachineFunction::verify (Pass *p, const char *Banner) const {
287
- MachineVerifier (p, Banner)
288
- .runOnMachineFunction (const_cast <MachineFunction&>(*this ));
288
+ bool MachineFunction::verify (Pass *p, const char *Banner, bool AbortOnErrors)
289
+ const {
290
+ MachineFunction &MF = const_cast <MachineFunction&>(*this );
291
+ unsigned FoundErrors = MachineVerifier (p, Banner).verify (MF);
292
+ if (AbortOnErrors && FoundErrors)
293
+ report_fatal_error (" Found " +Twine (FoundErrors)+" machine code errors." );
294
+ return FoundErrors == 0 ;
289
295
}
290
296
291
297
void MachineVerifier::verifySlotIndexes () const {
@@ -301,7 +307,7 @@ void MachineVerifier::verifySlotIndexes() const {
301
307
}
302
308
}
303
309
304
- bool MachineVerifier::runOnMachineFunction (MachineFunction &MF) {
310
+ unsigned MachineVerifier::verify (MachineFunction &MF) {
305
311
foundErrors = 0 ;
306
312
307
313
this ->MF = &MF;
@@ -386,9 +392,6 @@ bool MachineVerifier::runOnMachineFunction(MachineFunction &MF) {
386
392
}
387
393
visitMachineFunctionAfter ();
388
394
389
- if (foundErrors)
390
- report_fatal_error (" Found " +Twine (foundErrors)+" machine code errors." );
391
-
392
395
// Clean up.
393
396
regsLive.clear ();
394
397
regsDefined.clear ();
@@ -398,7 +401,7 @@ bool MachineVerifier::runOnMachineFunction(MachineFunction &MF) {
398
401
regsLiveInButUnused.clear ();
399
402
MBBInfoMap.clear ();
400
403
401
- return false ; // no changes
404
+ return foundErrors;
402
405
}
403
406
404
407
void MachineVerifier::report (const char *msg, const MachineFunction *MF) {
0 commit comments