@@ -1402,7 +1402,7 @@ struct TestLegalizePatternDriver
14021402 ConversionTarget target (getContext ());
14031403 target.addLegalOp <ModuleOp>();
14041404 target.addLegalOp <LegalOpA, LegalOpB, LegalOpC, TestCastOp, TestValidOp,
1405- TerminatorOp, OneRegionOp>();
1405+ TerminatorOp, OneRegionOp, TestOpConstant >();
14061406 target.addLegalOp (OperationName (" test.legal_op" , &getContext ()));
14071407 target
14081408 .addIllegalOp <ILLegalOpF, TestRegionBuilderOp, TestOpWithRegionFold>();
@@ -1457,6 +1457,7 @@ struct TestLegalizePatternDriver
14571457 DumpNotifications dumpNotifications;
14581458 config.listener = &dumpNotifications;
14591459 config.unlegalizedOps = &unlegalizedOps;
1460+ config.foldingMode = foldingMode;
14601461 if (failed (applyPartialConversion (getOperation (), target,
14611462 std::move (patterns), config))) {
14621463 getOperation ()->emitRemark () << " applyPartialConversion failed" ;
@@ -1476,6 +1477,7 @@ struct TestLegalizePatternDriver
14761477
14771478 ConversionConfig config;
14781479 DumpNotifications dumpNotifications;
1480+ config.foldingMode = foldingMode;
14791481 config.listener = &dumpNotifications;
14801482 if (failed (applyFullConversion (getOperation (), target,
14811483 std::move (patterns), config))) {
@@ -1490,6 +1492,7 @@ struct TestLegalizePatternDriver
14901492 // Analyze the convertible operations.
14911493 DenseSet<Operation *> legalizedOps;
14921494 ConversionConfig config;
1495+ config.foldingMode = foldingMode;
14931496 config.legalizableOps = &legalizedOps;
14941497 if (failed (applyAnalysisConversion (getOperation (), target,
14951498 std::move (patterns), config)))
@@ -1510,6 +1513,21 @@ struct TestLegalizePatternDriver
15101513 clEnumValN (ConversionMode::Full, " full" , " Perform a full conversion" ),
15111514 clEnumValN (ConversionMode::Partial, " partial" ,
15121515 " Perform a partial conversion" ))};
1516+
1517+ Option<DialectConversionFoldingMode> foldingMode{
1518+ *this , " test-legalize-folding-mode" ,
1519+ llvm::cl::desc (" The folding mode to use with the test driver" ),
1520+ llvm::cl::init (DialectConversionFoldingMode::BeforePatterns),
1521+ llvm::cl::values (clEnumValN (DialectConversionFoldingMode::Never, " never" ,
1522+ " Never attempt to fold" ),
1523+ clEnumValN (DialectConversionFoldingMode::BeforePatterns,
1524+ " before-patterns" ,
1525+ " Only attempt to fold not legal operations "
1526+ " before applying patterns" ),
1527+ clEnumValN (DialectConversionFoldingMode::AfterPatterns,
1528+ " after-patterns" ,
1529+ " Only attempt to fold not legal operations "
1530+ " after applying patterns" ))};
15131531};
15141532} // namespace
15151533
0 commit comments