46 markAllAnalysesPreserved();
50 auto modOp = llvm::dyn_cast<mlir::ModuleOp>(getOperation());
52 constexpr const char *msg =
"IntervalAnalysisPrinterPass error: should be run on ModuleOp!";
53 getOperation()->emitError(msg).report();
61 if (mlir::failed(fieldLookupRes)) {
64 "IntervalAnalysisPrinterPass error: unknown field \"",
fieldName,
"\" specified"
69 selectedField = fieldLookupRes.value();
71 llvm::dbgs() <<
"[IntervalAnalysisPrinterPass] using explicit -field override '"
72 << selectedField.get().name() <<
"'\n";
75 selectedField = detectedField.value();
77 llvm::dbgs() <<
"[IntervalAnalysisPrinterPass] detected module field '"
78 << selectedField.get().name() <<
"' from module felt usage\n";
81 modOp->emitWarning() <<
"could not detect a unique module field; falling back to '"
82 << selectedField.get().name() <<
"'";
84 llvm::dbgs() <<
"[IntervalAnalysisPrinterPass] no explicit or detectable module field; "
86 << selectedField.get().name() <<
"'\n";
90 auto &mia = getAnalysis<ModuleIntervalAnalysis>();
91 mia.setField(selectedField);
93 auto am = getAnalysisManager();
94 mia.ensureAnalysisRun(am);
96 for (
const auto &[s, si] : mia.getCurrentResults()) {
100 mlir::succeeded(fullName),
101 "could not resolve fully qualified name of struct " + mlir::Twine(structDef.getName())
103 os << fullName.value() <<
' ';