formatPassOpReproducerMessage(note, value);
});
note << "]: " << description;
+ impl->runningPasses.clear();
+ impl->activeContexts.clear();
return;
}
note << ": " << description;
impl->activeContexts.clear();
+ impl->runningPasses.clear();
}
void PassCrashReproducerGenerator::prepareReproducerFor(Pass *pass,
}
void runAfterPassFailed(Pass *pass, Operation *op) override {
+ // Only generate one reproducer per crash reproducer instrumentation.
+ if (alreadyFailed)
+ return;
+
+ alreadyFailed = true;
generator.finalize(op, /*executionResult=*/failure());
}
private:
/// The generator used to create crash reproducers.
PassCrashReproducerGenerator &generator;
+ bool alreadyFailed = false;
};
} // namespace