@@ -69,6 +69,8 @@ class CIRReturnLowering : public mlir::OpConversionPattern<cir::ReturnOp> {
69
69
mlir::LogicalResult
70
70
matchAndRewrite (cir::ReturnOp op, OpAdaptor adaptor,
71
71
mlir::ConversionPatternRewriter &rewriter) const override {
72
+ assert (isa<mlir::FunctionOpInterface>(op->getParentOp ()) &&
73
+ " 'func.return' op expects parent op 'func.func'" );
72
74
rewriter.replaceOpWithNewOp <mlir::func::ReturnOp>(op,
73
75
adaptor.getOperands ());
74
76
return mlir::LogicalResult::success ();
@@ -660,10 +662,13 @@ class CIRFuncOpLowering : public mlir::OpConversionPattern<cir::FuncOp> {
660
662
resultType ? mlir::TypeRange (resultType)
661
663
: mlir::TypeRange ()));
662
664
663
- if (failed (rewriter.convertRegionTypes (&op.getBody (), *typeConverter,
664
- &signatureConversion)))
665
- return mlir::failure ();
666
- rewriter.inlineRegionBefore (op.getBody (), fn.getBody (), fn.end ());
665
+ if (!op.getBody ().empty ()) {
666
+ if (failed (rewriter.convertRegionTypes (&op.getBody (), *typeConverter,
667
+ &signatureConversion)))
668
+ return mlir::failure ();
669
+ rewriter.inlineRegionBefore (op.getBody (), fn.getBody (), fn.end ());
670
+ } else
671
+ fn.setPrivate ();
667
672
668
673
rewriter.eraseOp (op);
669
674
return mlir::LogicalResult::success ();
@@ -833,14 +838,15 @@ class CIRCmpOpLowering : public mlir::OpConversionPattern<cir::CmpOp> {
833
838
}
834
839
};
835
840
836
- class CIRBrOpLowering : public mlir ::OpRewritePattern <cir::BrOp> {
841
+ class CIRBrOpLowering : public mlir ::OpConversionPattern <cir::BrOp> {
837
842
public:
838
- using OpRewritePattern <cir::BrOp>::OpRewritePattern ;
843
+ using mlir::OpConversionPattern <cir::BrOp>::OpConversionPattern ;
839
844
840
845
mlir::LogicalResult
841
- matchAndRewrite (cir::BrOp op,
842
- mlir::PatternRewriter &rewriter) const override {
843
- rewriter.replaceOpWithNewOp <mlir::cf::BranchOp>(op, op.getDest ());
846
+ matchAndRewrite (cir::BrOp op, OpAdaptor adaptor,
847
+ mlir::ConversionPatternRewriter &rewriter) const override {
848
+ rewriter.replaceOpWithNewOp <mlir::cf::BranchOp>(op, op.getDest (),
849
+ adaptor.getDestOperands ());
844
850
return mlir::LogicalResult::success ();
845
851
}
846
852
};
@@ -1354,24 +1360,23 @@ class CIRPtrStrideOpLowering
1354
1360
1355
1361
void populateCIRToMLIRConversionPatterns (mlir::RewritePatternSet &patterns,
1356
1362
mlir::TypeConverter &converter) {
1357
- patterns.add <CIRReturnLowering, CIRBrOpLowering>(patterns.getContext ());
1358
-
1359
- patterns.add <
1360
- CIRCmpOpLowering, CIRCallOpLowering, CIRUnaryOpLowering, CIRBinOpLowering,
1361
- CIRLoadOpLowering, CIRConstantOpLowering, CIRStoreOpLowering,
1362
- CIRAllocaOpLowering, CIRFuncOpLowering, CIRScopeOpLowering,
1363
- CIRBrCondOpLowering, CIRTernaryOpLowering, CIRYieldOpLowering,
1364
- CIRCosOpLowering, CIRGlobalOpLowering, CIRGetGlobalOpLowering,
1365
- CIRCastOpLowering, CIRPtrStrideOpLowering, CIRSqrtOpLowering,
1366
- CIRCeilOpLowering, CIRExp2OpLowering, CIRExpOpLowering, CIRFAbsOpLowering,
1367
- CIRAbsOpLowering, CIRFloorOpLowering, CIRLog10OpLowering,
1368
- CIRLog2OpLowering, CIRLogOpLowering, CIRRoundOpLowering,
1369
- CIRPtrStrideOpLowering, CIRSinOpLowering, CIRShiftOpLowering,
1370
- CIRBitClzOpLowering, CIRBitCtzOpLowering, CIRBitPopcountOpLowering,
1371
- CIRBitClrsbOpLowering, CIRBitFfsOpLowering, CIRBitParityOpLowering,
1372
- CIRIfOpLowering, CIRVectorCreateLowering, CIRVectorInsertLowering,
1373
- CIRVectorExtractLowering, CIRVectorCmpOpLowering>(converter,
1374
- patterns.getContext ());
1363
+ patterns.add <CIRBrOpLowering, CIRReturnLowering, CIRCmpOpLowering,
1364
+ CIRCallOpLowering, CIRUnaryOpLowering, CIRBinOpLowering,
1365
+ CIRLoadOpLowering, CIRConstantOpLowering, CIRStoreOpLowering,
1366
+ CIRAllocaOpLowering, CIRFuncOpLowering, CIRScopeOpLowering,
1367
+ CIRBrCondOpLowering, CIRTernaryOpLowering, CIRYieldOpLowering,
1368
+ CIRCosOpLowering, CIRGlobalOpLowering, CIRGetGlobalOpLowering,
1369
+ CIRCastOpLowering, CIRPtrStrideOpLowering, CIRSqrtOpLowering,
1370
+ CIRCeilOpLowering, CIRExp2OpLowering, CIRExpOpLowering,
1371
+ CIRFAbsOpLowering, CIRAbsOpLowering, CIRFloorOpLowering,
1372
+ CIRLog10OpLowering, CIRLog2OpLowering, CIRLogOpLowering,
1373
+ CIRRoundOpLowering, CIRPtrStrideOpLowering, CIRSinOpLowering,
1374
+ CIRShiftOpLowering, CIRBitClzOpLowering, CIRBitCtzOpLowering,
1375
+ CIRBitPopcountOpLowering, CIRBitClrsbOpLowering,
1376
+ CIRBitFfsOpLowering, CIRBitParityOpLowering, CIRIfOpLowering,
1377
+ CIRVectorCreateLowering, CIRVectorInsertLowering,
1378
+ CIRVectorExtractLowering, CIRVectorCmpOpLowering>(
1379
+ converter, patterns.getContext ());
1375
1380
}
1376
1381
1377
1382
static mlir::TypeConverter prepareTypeConverter () {
0 commit comments