@@ -1507,8 +1507,8 @@ struct TestLegalizePatternDriver
15071507 ConversionTarget target (getContext ());
15081508 target.addLegalOp <ModuleOp>();
15091509 target.addLegalOp <LegalOpA, LegalOpB, LegalOpC, TestCastOp, TestValidOp,
1510- TerminatorOp, OneRegionOp, TestValidProducerOp ,
1511- TestValidConsumerOp>();
1510+ TerminatorOp, TestOpConstant, OneRegionOp ,
1511+ TestValidProducerOp, TestValidConsumerOp>();
15121512 target.addLegalOp (OperationName (" test.legal_op" , &getContext ()));
15131513 target
15141514 .addIllegalOp <ILLegalOpF, TestRegionBuilderOp, TestOpWithRegionFold>();
@@ -1563,6 +1563,7 @@ struct TestLegalizePatternDriver
15631563 DumpNotifications dumpNotifications;
15641564 config.listener = &dumpNotifications;
15651565 config.unlegalizedOps = &unlegalizedOps;
1566+ config.foldingMode = foldingMode;
15661567 if (failed (applyPartialConversion (getOperation (), target,
15671568 std::move (patterns), config))) {
15681569 getOperation ()->emitRemark () << " applyPartialConversion failed" ;
@@ -1582,6 +1583,7 @@ struct TestLegalizePatternDriver
15821583
15831584 ConversionConfig config;
15841585 DumpNotifications dumpNotifications;
1586+ config.foldingMode = foldingMode;
15851587 config.listener = &dumpNotifications;
15861588 if (failed (applyFullConversion (getOperation (), target,
15871589 std::move (patterns), config))) {
@@ -1596,6 +1598,7 @@ struct TestLegalizePatternDriver
15961598 // Analyze the convertible operations.
15971599 DenseSet<Operation *> legalizedOps;
15981600 ConversionConfig config;
1601+ config.foldingMode = foldingMode;
15991602 config.legalizableOps = &legalizedOps;
16001603 if (failed (applyAnalysisConversion (getOperation (), target,
16011604 std::move (patterns), config)))
@@ -1616,6 +1619,21 @@ struct TestLegalizePatternDriver
16161619 clEnumValN (ConversionMode::Full, " full" , " Perform a full conversion" ),
16171620 clEnumValN (ConversionMode::Partial, " partial" ,
16181621 " Perform a partial conversion" ))};
1622+
1623+ Option<DialectConversionFoldingMode> foldingMode{
1624+ *this , " test-legalize-folding-mode" ,
1625+ llvm::cl::desc (" The folding mode to use with the test driver" ),
1626+ llvm::cl::init (DialectConversionFoldingMode::BeforePatterns),
1627+ llvm::cl::values (clEnumValN (DialectConversionFoldingMode::Never, " never" ,
1628+ " Never attempt to fold" ),
1629+ clEnumValN (DialectConversionFoldingMode::BeforePatterns,
1630+ " before-patterns" ,
1631+ " Only attempt to fold not legal operations "
1632+ " before applying patterns" ),
1633+ clEnumValN (DialectConversionFoldingMode::AfterPatterns,
1634+ " after-patterns" ,
1635+ " Only attempt to fold not legal operations "
1636+ " after applying patterns" ))};
16191637};
16201638} // namespace
16211639
0 commit comments