@@ -832,11 +832,13 @@ struct ConversionPatternRewriterImpl : public RewriterBase::Listener {
832
832
Block *insertBlock,
833
833
Block::iterator insertPt, Location loc,
834
834
ValueRange inputs, Type outputType,
835
- const TypeConverter *converter);
835
+ const TypeConverter *converter,
836
+ MLIRContext *context);
836
837
837
838
Value buildUnresolvedTargetMaterialization (Location loc, Value input,
838
839
Type outputType,
839
- const TypeConverter *converter);
840
+ const TypeConverter *converter,
841
+ MLIRContext *context);
840
842
841
843
// ===--------------------------------------------------------------------===//
842
844
// Rewriter Notification Hooks
@@ -1185,7 +1187,8 @@ LogicalResult ConversionPatternRewriterImpl::remapValues(
1185
1187
if (currentTypeConverter && desiredType && newOperandType != desiredType) {
1186
1188
Location operandLoc = inputLoc ? *inputLoc : operand.getLoc ();
1187
1189
Value castValue = buildUnresolvedTargetMaterialization (
1188
- operandLoc, newOperand, desiredType, currentTypeConverter);
1190
+ operandLoc, newOperand, desiredType, currentTypeConverter,
1191
+ rewriter.getContext ());
1189
1192
mapping.map (mapping.lookupOrDefault (newOperand), castValue);
1190
1193
newOperand = castValue;
1191
1194
}
@@ -1300,7 +1303,7 @@ Block *ConversionPatternRewriterImpl::applySignatureConversion(
1300
1303
Value repl = buildUnresolvedMaterialization (
1301
1304
MaterializationKind::Source, newBlock, newBlock->begin (),
1302
1305
origArg.getLoc (), /* inputs=*/ ValueRange (),
1303
- /* outputType=*/ origArgType, converter);
1306
+ /* outputType=*/ origArgType, converter, rewriter. getContext () );
1304
1307
mapping.map (origArg, repl);
1305
1308
appendRewrite<ReplaceBlockArgRewrite>(block, origArg);
1306
1309
continue ;
@@ -1324,7 +1327,8 @@ Block *ConversionPatternRewriterImpl::applySignatureConversion(
1324
1327
newBlock->getArguments ().slice (inputMap->inputNo , inputMap->size );
1325
1328
Value argMat = buildUnresolvedMaterialization (
1326
1329
MaterializationKind::Argument, newBlock, newBlock->begin (),
1327
- origArg.getLoc (), /* inputs=*/ replArgs, origArgType, converter);
1330
+ origArg.getLoc (), /* inputs=*/ replArgs, origArgType, converter,
1331
+ rewriter.getContext ());
1328
1332
mapping.map (origArg, argMat);
1329
1333
appendRewrite<ReplaceBlockArgRewrite>(block, origArg);
1330
1334
@@ -1339,7 +1343,8 @@ Block *ConversionPatternRewriterImpl::applySignatureConversion(
1339
1343
legalOutputType = converter->convertType (origArgType);
1340
1344
if (legalOutputType && legalOutputType != origArgType) {
1341
1345
Value targetMat = buildUnresolvedTargetMaterialization (
1342
- origArg.getLoc (), argMat, legalOutputType, converter);
1346
+ origArg.getLoc (), argMat, legalOutputType, converter,
1347
+ rewriter.getContext ());
1343
1348
mapping.map (argMat, targetMat);
1344
1349
}
1345
1350
appendRewrite<ReplaceBlockArgRewrite>(block, origArg);
@@ -1363,30 +1368,32 @@ Block *ConversionPatternRewriterImpl::applySignatureConversion(
1363
1368
Value ConversionPatternRewriterImpl::buildUnresolvedMaterialization (
1364
1369
MaterializationKind kind, Block *insertBlock, Block::iterator insertPt,
1365
1370
Location loc, ValueRange inputs, Type outputType,
1366
- const TypeConverter *converter) {
1371
+ const TypeConverter *converter, MLIRContext *context ) {
1367
1372
// Avoid materializing an unnecessary cast.
1368
1373
if (inputs.size () == 1 && inputs.front ().getType () == outputType)
1369
1374
return inputs.front ();
1370
1375
1371
1376
// Create an unresolved materialization. We use a new OpBuilder to avoid
1372
1377
// tracking the materialization like we do for other operations.
1373
- OpBuilder builder (insertBlock, insertPt);
1378
+ // OpBuilder builder(context, insertBlock, insertPt);
1379
+ OpBuilder builder (context);
1380
+ builder.setInsertionPoint (insertBlock, insertPt);
1374
1381
auto convertOp =
1375
1382
builder.create <UnrealizedConversionCastOp>(loc, outputType, inputs);
1376
1383
appendRewrite<UnresolvedMaterializationRewrite>(convertOp, converter, kind);
1377
1384
return convertOp.getResult (0 );
1378
1385
}
1379
1386
Value ConversionPatternRewriterImpl::buildUnresolvedTargetMaterialization (
1380
- Location loc, Value input, Type outputType,
1381
- const TypeConverter *converter ) {
1387
+ Location loc, Value input, Type outputType, const TypeConverter *converter,
1388
+ MLIRContext *context ) {
1382
1389
Block *insertBlock = input.getParentBlock ();
1383
1390
Block::iterator insertPt = insertBlock->begin ();
1384
1391
if (OpResult inputRes = dyn_cast<OpResult>(input))
1385
1392
insertPt = ++inputRes.getOwner ()->getIterator ();
1386
1393
1387
1394
return buildUnresolvedMaterialization (MaterializationKind::Target,
1388
1395
insertBlock, insertPt, loc, input,
1389
- outputType, converter);
1396
+ outputType, converter, context );
1390
1397
}
1391
1398
1392
1399
// ===----------------------------------------------------------------------===//
0 commit comments