Skip to content

Commit ec18101

Browse files
experiement
1 parent dbbdd84 commit ec18101

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

flang/lib/Optimizer/CodeGen/CodeGen.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2153,6 +2153,9 @@ struct InsertValueOpConversion
21532153
matchAndRewrite(fir::InsertValueOp insertVal, OpAdaptor adaptor,
21542154
mlir::ConversionPatternRewriter &rewriter) const override {
21552155
mlir::ValueRange operands = adaptor.getOperands();
2156+
llvm::errs() << "InsertValueOpConversion: " << insertVal << "\n";
2157+
llvm::errs() << " -- operand 0: " << operands[0] << "\n";
2158+
llvm::errs() << " -- operand 1: " << operands[1] << "\n";
21562159
auto indices = collectIndices(rewriter, insertVal.getCoor());
21572160
toRowMajor(indices, operands[0].getType());
21582161
rewriter.replaceOpWithNewOp<mlir::LLVM::InsertValueOp>(
@@ -3877,8 +3880,8 @@ void fir::populateFIRToLLVMConversionPatterns(
38773880

38783881
// Patterns that are populated without a type converter do not trigger
38793882
// target materializations for the operands of the root op.
3880-
patterns.insert<InsertValueOpConversion>(
3881-
converter, patterns.getContext());
3882-
patterns.insert<HasValueOpConversion>(
3883+
//patterns.insert<InsertValueOpConversion>(
3884+
// converter, patterns.getContext());
3885+
patterns.insert<HasValueOpConversion, InsertValueOpConversion>(
38833886
patterns.getContext());
38843887
}

mlir/lib/Transforms/Utils/DialectConversion.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1318,9 +1318,13 @@ Block *ConversionPatternRewriterImpl::applySignatureConversion(
13181318
// used as a replacement.
13191319
auto replArgs =
13201320
newBlock->getArguments().slice(inputMap->inputNo, inputMap->size);
1321-
insertNTo1Materialization(
1322-
OpBuilder::InsertPoint(newBlock, newBlock->begin()), origArg.getLoc(),
1323-
/*replacements=*/replArgs, /*outputValue=*/origArg, converter);
1321+
if (replArgs.size() == 1) {
1322+
mapping.map(origArg, replArgs.front());
1323+
} else {
1324+
insertNTo1Materialization(
1325+
OpBuilder::InsertPoint(newBlock, newBlock->begin()), origArg.getLoc(),
1326+
/*replacements=*/replArgs, /*outputValue=*/origArg, converter);
1327+
}
13241328
appendRewrite<ReplaceBlockArgRewrite>(block, origArg, converter);
13251329
}
13261330

0 commit comments

Comments
 (0)