Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/SPARC/exception.ll @ 0:95c75e76d11b LLVM3.4
LLVM 3.4
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 12 Dec 2013 13:56:28 +0900 |
parents | |
children | 54457678186b |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:95c75e76d11b |
---|---|
1 ; RUN: llc < %s -march=sparc | FileCheck %s | |
2 | |
3 | |
4 %struct.__fundamental_type_info_pseudo = type { %struct.__type_info_pseudo } | |
5 %struct.__type_info_pseudo = type { i8*, i8* } | |
6 | |
7 @_ZTIi = external constant %struct.__fundamental_type_info_pseudo | |
8 @_ZTIf = external constant %struct.__fundamental_type_info_pseudo | |
9 @.cst = linker_private unnamed_addr constant [12 x i8] c"catched int\00", align 64 | |
10 @.cst1 = linker_private unnamed_addr constant [14 x i8] c"catched float\00", align 64 | |
11 | |
12 ; CHECK-LABEL: main: | |
13 ; CHECK: .cfi_startproc | |
14 ; CHECK: .cfi_def_cfa_register 30 | |
15 ; CHECK: .cfi_window_save | |
16 ; CHECK: .cfi_register 15, 31 | |
17 | |
18 ; CHECK: call __cxa_throw | |
19 ; CHECK: call __cxa_throw | |
20 | |
21 ; CHECK: call __cxa_begin_catch | |
22 ; CHECK: call __cxa_end_catch | |
23 | |
24 ; CHECK: call __cxa_begin_catch | |
25 ; CHECK: call __cxa_end_catch | |
26 | |
27 ; CHECK: .cfi_endproc | |
28 | |
29 define i32 @main(i32 %argc, i8** nocapture readnone %argv) unnamed_addr #0 { | |
30 entry: | |
31 %0 = icmp eq i32 %argc, 2 | |
32 %1 = tail call i8* @__cxa_allocate_exception(i32 4) #1 | |
33 br i1 %0, label %"3", label %"4" | |
34 | |
35 "3": ; preds = %entry | |
36 %2 = bitcast i8* %1 to i32* | |
37 store i32 0, i32* %2, align 4 | |
38 invoke void @__cxa_throw(i8* %1, i8* bitcast (%struct.__fundamental_type_info_pseudo* @_ZTIi to i8*), void (i8*)* null) #2 | |
39 to label %3 unwind label %"8" | |
40 | |
41 ; <label>:3 ; preds = %"3" | |
42 unreachable | |
43 | |
44 "4": ; preds = %entry | |
45 %4 = bitcast i8* %1 to float* | |
46 store float 1.000000e+00, float* %4, align 4 | |
47 | |
48 | |
49 invoke void @__cxa_throw(i8* %1, i8* bitcast (%struct.__fundamental_type_info_pseudo* @_ZTIf to i8*), void (i8*)* null) #2 | |
50 to label %5 unwind label %"8" | |
51 | |
52 ; <label>:5 ; preds = %"4" | |
53 unreachable | |
54 | |
55 "5": ; preds = %"13", %"11" | |
56 %6 = phi i32 [ 2, %"13" ], [ 0, %"11" ] | |
57 ret i32 %6 | |
58 | |
59 "8": ; preds = %"4", %"3" | |
60 %exc = landingpad { i8*, i32 } personality i32 (i32, i64, i8*, i8*)* @__gxx_personality_v0 | |
61 catch %struct.__fundamental_type_info_pseudo* @_ZTIi | |
62 catch %struct.__fundamental_type_info_pseudo* @_ZTIf | |
63 %exc_ptr12 = extractvalue { i8*, i32 } %exc, 0 | |
64 %filter13 = extractvalue { i8*, i32 } %exc, 1 | |
65 %typeid = tail call i32 @llvm.eh.typeid.for(i8* bitcast (%struct.__fundamental_type_info_pseudo* @_ZTIi to i8*)) | |
66 %7 = icmp eq i32 %filter13, %typeid | |
67 br i1 %7, label %"11", label %8 | |
68 | |
69 ; <label>:8 ; preds = %"8" | |
70 %typeid8 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (%struct.__fundamental_type_info_pseudo* @_ZTIf to i8*)) | |
71 %9 = icmp eq i32 %filter13, %typeid8 | |
72 br i1 %9, label %"13", label %"9" | |
73 | |
74 "9": ; preds = %8 | |
75 resume { i8*, i32 } %exc | |
76 | |
77 "11": ; preds = %"8" | |
78 %10 = tail call i8* @__cxa_begin_catch(i8* %exc_ptr12) #1 | |
79 %11 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @.cst, i32 0, i32 0)) | |
80 tail call void @__cxa_end_catch() #1 | |
81 br label %"5" | |
82 | |
83 "13": ; preds = %8 | |
84 %12 = tail call i8* @__cxa_begin_catch(i8* %exc_ptr12) #1 | |
85 %13 = tail call i32 @puts(i8* getelementptr inbounds ([14 x i8]* @.cst1, i32 0, i32 0)) | |
86 tail call void @__cxa_end_catch() #1 | |
87 br label %"5" | |
88 } | |
89 | |
90 ; Function Attrs: nounwind | |
91 declare i8* @__cxa_allocate_exception(i32) #1 | |
92 | |
93 ; Function Attrs: noreturn | |
94 declare void @__cxa_throw(i8*, i8*, void (i8*)*) #2 | |
95 | |
96 declare void @__cxa_end_catch() | |
97 | |
98 ; Function Attrs: nounwind readnone | |
99 declare i32 @llvm.eh.typeid.for(i8*) #3 | |
100 | |
101 ; Function Attrs: nounwind | |
102 declare i8* @__cxa_begin_catch(i8*) #1 | |
103 | |
104 ; Function Attrs: nounwind | |
105 declare i32 @puts(i8* nocapture readonly) #1 | |
106 | |
107 declare i32 @__gxx_personality_v0(i32, i64, i8*, i8*) | |
108 | |
109 attributes #0 = { "no-frame-pointer-elim-non-leaf"="false" } | |
110 attributes #1 = { nounwind } | |
111 attributes #2 = { noreturn } | |
112 attributes #3 = { nounwind readnone } |