================
@@ -212,6 +119,70 @@ void call_function_inside_try_catch_with_exception_type() {
// OGCG: %[[EXCEPTION_INFO:.*]] = insertvalue { ptr, i32 }
%[[TMP_EXCEPTION_INFO]], i32 %[[TMP_EH_TYPE_ID]], 1
// OGCG: resume { ptr, i32 } %[[EXCEPTION_INFO]]
+void call_function_inside_try_catch_with_ref_exception_type() {
+ try {
+ division();
+ } catch (int &ref) {
+ }
+}
+
+// CIR: cir.func {{.*}}
@_Z54call_function_inside_try_catch_with_ref_exception_typev()
personality(@__gxx_personality_v0)
+// CIR: cir.scope {
+// CIR: %[[EXCEPTION_ADDR:.*]] = cir.alloca !cir.ptr<!s32i>,
!cir.ptr<!cir.ptr<!s32i>>, ["ref", const]
+// CIR: cir.try {
+// CIR: %[[CALL:.*]] = cir.call @_Z8divisionv()
+// CIR: cir.yield
+// CIR: } catch [type #cir.global_view<@_ZTIi> : !cir.ptr<!u8i>] (%{{.*}}:
!cir.eh_token {{.*}}) {
+// CIR: %[[CATCH_TOKEN:.*]], %[[EXN_PTR:.*]] = cir.begin_catch %{{.*}} :
!cir.eh_token -> (!cir.catch_token, !cir.ptr<!s32i>)
+// CIR: cir.cleanup.scope {
+// CIR: cir.store {{.*}} %[[EXN_PTR]], %[[EXCEPTION_ADDR]] :
!cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>
+// CIR: cir.yield
+// CIR: } cleanup all {
+// CIR: cir.end_catch %[[CATCH_TOKEN]] : !cir.catch_token
+// CIR: cir.yield
+// CIR: }
+// CIR: cir.yield
+// CIR: } unwind (%{{.*}}: !cir.eh_token {{.*}}) {
+// CIR: cir.resume %{{.*}} : !cir.eh_token
+// CIR: }
+// CIR: }
+
----------------
AmrDeveloper wrote:
Done 🫡
https://github.com/llvm/llvm-project/pull/184442
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits