@@ -23,22 +23,20 @@ namespace mlir {
2323
2424using namespace mlir ;
2525
26- namespace {
26+ // ===----------------------------------------------------------------------===//
27+ // PoisonOpLowering
28+ // ===----------------------------------------------------------------------===//
2729
30+ namespace {
2831struct PoisonOpLowering : public ConvertOpToLLVMPattern <ub::PoisonOp> {
2932 using ConvertOpToLLVMPattern::ConvertOpToLLVMPattern;
3033
3134 LogicalResult
3235 matchAndRewrite (ub::PoisonOp op, OpAdaptor adaptor,
3336 ConversionPatternRewriter &rewriter) const override ;
3437};
35-
3638} // namespace
3739
38- // ===----------------------------------------------------------------------===//
39- // PoisonOpLowering
40- // ===----------------------------------------------------------------------===//
41-
4240LogicalResult
4341PoisonOpLowering::matchAndRewrite (ub::PoisonOp op, OpAdaptor adaptor,
4442 ConversionPatternRewriter &rewriter) const {
@@ -60,6 +58,29 @@ PoisonOpLowering::matchAndRewrite(ub::PoisonOp op, OpAdaptor adaptor,
6058 return success ();
6159}
6260
61+ // ===----------------------------------------------------------------------===//
62+ // UnreachableOpLowering
63+ // ===----------------------------------------------------------------------===//
64+
65+ namespace {
66+ struct UnreachableOpLowering
67+ : public ConvertOpToLLVMPattern<ub::UnreachableOp> {
68+ using ConvertOpToLLVMPattern::ConvertOpToLLVMPattern;
69+
70+ LogicalResult
71+ matchAndRewrite (ub::UnreachableOp op, OpAdaptor adaptor,
72+ ConversionPatternRewriter &rewriter) const override ;
73+ };
74+ } // namespace
75+ LogicalResult
76+
77+ UnreachableOpLowering::matchAndRewrite (
78+ ub::UnreachableOp op, OpAdaptor adaptor,
79+ ConversionPatternRewriter &rewriter) const {
80+ rewriter.replaceOpWithNewOp <LLVM::UnreachableOp>(op);
81+ return success ();
82+ }
83+
6384// ===----------------------------------------------------------------------===//
6485// Pass Definition
6586// ===----------------------------------------------------------------------===//
@@ -93,7 +114,7 @@ struct UBToLLVMConversionPass
93114
94115void mlir::ub::populateUBToLLVMConversionPatterns (
95116 const LLVMTypeConverter &converter, RewritePatternSet &patterns) {
96- patterns.add <PoisonOpLowering>(converter);
117+ patterns.add <PoisonOpLowering, UnreachableOpLowering >(converter);
97118}
98119
99120// ===----------------------------------------------------------------------===//
0 commit comments