Index: mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp =================================================================== --- mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp +++ mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp @@ -371,6 +371,7 @@ llvm::Type *ty = moduleTranslation.convertType(lpOp.getType()); llvm::LandingPadInst *lpi = builder.CreateLandingPad(ty, lpOp.getNumOperands()); + lpi->setCleanup(lpOp.getCleanup()); // Add clauses for (llvm::Value *operand : Index: mlir/test/Target/LLVMIR/llvmir.mlir =================================================================== --- mlir/test/Target/LLVMIR/llvmir.mlir +++ mlir/test/Target/LLVMIR/llvmir.mlir @@ -1298,31 +1298,29 @@ // ----- -llvm.mlir.global external constant @_ZTIi() : !llvm.ptr llvm.func @foo() -> i8 llvm.func @__gxx_personality_v0(...) -> i32 // CHECK-LABEL: @invoke_result // CHECK-SAME: %[[a0:[0-9]+]] llvm.func @invoke_result(%arg0 : !llvm.ptr) attributes { personality = @__gxx_personality_v0 } { - %0 = llvm.mlir.addressof @_ZTIi : !llvm.ptr> // CHECK: %[[a1:[0-9]+]] = invoke i8 @foo() // CHECK-NEXT: to label %[[normal:[0-9]+]] unwind label %[[unwind:[0-9]+]] - %1 = llvm.invoke @foo() to ^bb1 unwind ^bb2 : () -> i8 + %0 = llvm.invoke @foo() to ^bb1 unwind ^bb2 : () -> i8 // CHECK: [[normal]]: // CHECK-NEXT: store i8 %[[a1]], i8* %[[a0]] // CHECK-NEXT: ret void ^bb1: - llvm.store %1, %arg0 : !llvm.ptr + llvm.store %0, %arg0 : !llvm.ptr llvm.return // CHECK: [[unwind]]: // CHECK-NEXT: landingpad { i8*, i32 } -// CHECK-NEXT: catch i8** @_ZTIi +// CHECK-NEXT: cleanup // CHECK-NEXT: ret void ^bb2: - %7 = llvm.landingpad (catch %0 : !llvm.ptr>) : !llvm.struct<(ptr, i32)> + %7 = llvm.landingpad cleanup : !llvm.struct<(ptr, i32)> llvm.return }