@@ -1574,15 +1574,19 @@ struct TestLegalizePatternDriver
15741574 target.addDynamicallyLegalOp <ConvertBlockArgsOp>(
15751575 [](ConvertBlockArgsOp op) { return op.getIsLegal (); });
15761576
1577+ // Set up configuration.
1578+ ConversionConfig config;
1579+ config.allowPatternRollback = allowPatternRollback;
1580+ config.foldingMode = foldingMode;
1581+ config.buildMaterializations = buildMaterializations;
1582+ config.attachDebugMaterializationKind = attachDebugMaterializationKind;
1583+ DumpNotifications dumpNotifications;
1584+ config.listener = &dumpNotifications;
1585+
15771586 // Handle a partial conversion.
15781587 if (mode == ConversionMode::Partial) {
15791588 DenseSet<Operation *> unlegalizedOps;
1580- ConversionConfig config;
1581- config.allowPatternRollback = allowPatternRollback;
1582- DumpNotifications dumpNotifications;
1583- config.listener = &dumpNotifications;
15841589 config.unlegalizedOps = &unlegalizedOps;
1585- config.foldingMode = foldingMode;
15861590 if (failed (applyPartialConversion (getOperation (), target,
15871591 std::move (patterns), config))) {
15881592 getOperation ()->emitRemark () << " applyPartialConversion failed" ;
@@ -1600,11 +1604,6 @@ struct TestLegalizePatternDriver
16001604 return (bool )op->getAttrOfType <UnitAttr>(" test.dynamically_legal" );
16011605 });
16021606
1603- ConversionConfig config;
1604- config.allowPatternRollback = allowPatternRollback;
1605- DumpNotifications dumpNotifications;
1606- config.foldingMode = foldingMode;
1607- config.listener = &dumpNotifications;
16081607 if (failed (applyFullConversion (getOperation (), target,
16091608 std::move (patterns), config))) {
16101609 getOperation ()->emitRemark () << " applyFullConversion failed" ;
@@ -1617,9 +1616,6 @@ struct TestLegalizePatternDriver
16171616
16181617 // Analyze the convertible operations.
16191618 DenseSet<Operation *> legalizedOps;
1620- ConversionConfig config;
1621- config.foldingMode = foldingMode;
1622- config.allowPatternRollback = allowPatternRollback;
16231619 config.legalizableOps = &legalizedOps;
16241620 if (failed (applyAnalysisConversion (getOperation (), target,
16251621 std::move (patterns), config)))
@@ -1658,6 +1654,16 @@ struct TestLegalizePatternDriver
16581654 Option<bool > allowPatternRollback{*this , " allow-pattern-rollback" ,
16591655 llvm::cl::desc (" Allow pattern rollback" ),
16601656 llvm::cl::init (true )};
1657+ Option<bool > attachDebugMaterializationKind{
1658+ *this , " attach-debug-materialization-kind" ,
1659+ llvm::cl::desc (
1660+ " Attach materialization kind to unrealized_conversion_cast ops" ),
1661+ llvm::cl::init (false )};
1662+ Option<bool > buildMaterializations{
1663+ *this , " build-materializations" ,
1664+ llvm::cl::desc (
1665+ " If set to 'false', leave unrealized_conversion_cast ops in place" ),
1666+ llvm::cl::init (true )};
16611667};
16621668} // namespace
16631669
0 commit comments