14
14
15
15
; See also: libstd/rt/unwind/mod.rs
16
16
17
- define i8* @rust_try (void (i8* )* %f , i8* %env ) {
17
+ define i8* @rust_try (void (i8* )* %f , i8* %env )
18
+ personality i8* bitcast (i32 (...)* @rust_eh_personality_catch to i8* )
19
+ {
18
20
19
21
%1 = invoke i8* @rust_try_inner (void (i8* )* %f , i8* %env )
20
22
to label %normal
@@ -24,13 +26,15 @@ normal:
24
26
ret i8* %1
25
27
26
28
catch:
27
- landingpad { i8* , i32 } personality i8* bitcast ( i32 (...)* @rust_eh_personality_catch to i8* )
28
- catch i8* null
29
- ; rust_try_inner's landing pad does not resume unwinds, so execution will never reach here
29
+ landingpad { i8* , i32 } catch i8* null
30
+ ; rust_try_inner's landing pad does not resume unwinds, so execution will
31
+ ; never reach here
30
32
ret i8* null
31
33
}
32
34
33
- define internal i8* @rust_try_inner (void (i8* )* %f , i8* %env ) {
35
+ define internal i8* @rust_try_inner (void (i8* )* %f , i8* %env )
36
+ personality i8* bitcast (i32 (...)* @rust_eh_personality to i8* )
37
+ {
34
38
35
39
invoke void %f (i8* %env )
36
40
to label %normal
@@ -40,8 +44,7 @@ normal:
40
44
ret i8* null
41
45
42
46
catch:
43
- %1 = landingpad { i8* , i32 } personality i8* bitcast (i32 (...)* @rust_eh_personality to i8* )
44
- catch i8* null
47
+ %1 = landingpad { i8* , i32 } catch i8* null
45
48
; extract and return pointer to the exception object
46
49
%2 = extractvalue { i8* , i32 } %1 , 0
47
50
ret i8* %2
0 commit comments