xref: /llvm-project/clang/test/CodeGenCXX/try-catch-with-address-space.cpp (revision e13cbaca6925629165e3cced90b33777f0fe09fe)
1 // RUN: %clang_cc1 %s -triple=amdgcn-amd-amdhsa -emit-llvm -o - -fcxx-exceptions -fexceptions | FileCheck %s
2 // RUN: %clang_cc1 %s -triple=spirv64-amd-amdhsa -emit-llvm -o - -fcxx-exceptions -fexceptions | FileCheck %s --check-prefix=WITH-NONZERO-DEFAULT-AS
3 
4 struct X { };
5 
6 const X g();
7 
8 void f() {
9   try {
10     throw g();
11     // CHECK: ptr addrspace(1) @_ZTI1X
12   } catch (const X x) {
13     // CHECK: catch ptr addrspace(1) @_ZTI1X
14     // CHECK: call i32 @llvm.eh.typeid.for.p0(ptr addrspacecast (ptr addrspace(1) @_ZTI1X to ptr))
15     // WITH-NONZERO-DEFAULT-AS: call{{.*}} i32 @llvm.eh.typeid.for.p4(ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZTI1X to ptr addrspace(4)))
16   }
17 }
18 
19 void h() {
20   try {
21     throw "ABC";
22     // CHECK: ptr addrspace(1) @_ZTIPKc
23   } catch (char const(&)[4]) {
24     // CHECK: catch ptr addrspace(1) @_ZTIA4_c
25     // CHECK: call i32 @llvm.eh.typeid.for.p0(ptr addrspacecast (ptr addrspace(1) @_ZTIA4_c to ptr))
26     // WITH-NONZERO-DEFAULT-AS: call{{.*}} i32 @llvm.eh.typeid.for.p4(ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZTIA4_c to ptr addrspace(4)))
27   }
28 }
29