diff --git a/mlir/include/mlir/Tools/mlir-opt/MlirOptMain.h b/mlir/include/mlir/Tools/mlir-opt/MlirOptMain.h index ef976c1155795..0e7ee9c89cb47 100644 --- a/mlir/include/mlir/Tools/mlir-opt/MlirOptMain.h +++ b/mlir/include/mlir/Tools/mlir-opt/MlirOptMain.h @@ -183,6 +183,13 @@ class MlirOptMainConfig { } bool shouldVerifyPasses() const { return verifyPassesFlag; } + /// Set whether to run the verifier on parsing. + MlirOptMainConfig &verifyOnParsing(bool verify) { + disableVerifierOnParsingFlag = !verify; + return *this; + } + bool shouldVerifyOnParsing() const { return !disableVerifierOnParsingFlag; } + /// Set whether to run the verifier after each transformation pass. MlirOptMainConfig &verifyRoundtrip(bool verify) { verifyRoundtripFlag = verify; @@ -252,6 +259,9 @@ class MlirOptMainConfig { /// Run the verifier after each transformation pass. bool verifyPassesFlag = true; + /// Disable the verifier on parsing. + bool disableVerifierOnParsingFlag = false; + /// Verify that the input IR round-trips perfectly. bool verifyRoundtripFlag = false; diff --git a/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp b/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp index 5a7b17672c518..d6a366940bc38 100644 --- a/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp +++ b/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp @@ -159,6 +159,11 @@ struct MlirOptMainConfigCLOptions : public MlirOptMainConfig { cl::desc("Run the verifier after each transformation pass"), cl::location(verifyPassesFlag), cl::init(true)); + static cl::opt disableVerifyOnParsing( + "mlir-very-unsafe-disable-verifier-on-parsing", + cl::desc("Disable the verifier on parsing (very unsafe)"), + cl::location(disableVerifierOnParsingFlag), cl::init(false)); + static cl::opt verifyRoundtrip( "verify-roundtrip", cl::desc("Round-trip the IR after parsing and ensure it succeeds"), @@ -310,7 +315,7 @@ static LogicalResult doVerifyRoundTrip(Operation *op, OpPrintingFlags().printGenericOpForm().enableDebugInfo()); } FallbackAsmResourceMap fallbackResourceMap; - ParserConfig parseConfig(&roundtripContext, /*verifyAfterParse=*/true, + ParserConfig parseConfig(&roundtripContext, config.shouldVerifyOnParsing(), &fallbackResourceMap); roundtripModule = parseSourceString(buffer, parseConfig); if (!roundtripModule) { @@ -377,7 +382,7 @@ performActions(raw_ostream &os, // untouched. PassReproducerOptions reproOptions; FallbackAsmResourceMap fallbackResourceMap; - ParserConfig parseConfig(context, /*verifyAfterParse=*/true, + ParserConfig parseConfig(context, config.shouldVerifyOnParsing(), &fallbackResourceMap); if (config.shouldRunReproducer()) reproOptions.attachResourceParser(parseConfig);