Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/X86/statepoint-invoke.ll @ 100:7d135dc70f03 LLVM 3.9
LLVM 3.9
author | Miyagi Mitsuki <e135756@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2016 22:53:40 +0900 |
parents | afa8332a0e37 |
children | 803732b1fca8 |
comparison
equal
deleted
inserted
replaced
96:6418606d0ead | 100:7d135dc70f03 |
---|---|
12 gc "statepoint-example" personality i32 ()* @"personality_function" { | 12 gc "statepoint-example" personality i32 ()* @"personality_function" { |
13 entry: | 13 entry: |
14 ; CHECK: Ltmp{{[0-9]+}}: | 14 ; CHECK: Ltmp{{[0-9]+}}: |
15 ; CHECK: callq some_call | 15 ; CHECK: callq some_call |
16 ; CHECK: Ltmp{{[0-9]+}}: | 16 ; CHECK: Ltmp{{[0-9]+}}: |
17 %0 = invoke i32 (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %obj, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* %obj, i64 addrspace(1)* %obj1) | 17 %0 = invoke token (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %obj, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* %obj, i64 addrspace(1)* %obj1) |
18 to label %invoke_safepoint_normal_dest unwind label %exceptional_return | 18 to label %invoke_safepoint_normal_dest unwind label %exceptional_return |
19 | 19 |
20 invoke_safepoint_normal_dest: | 20 invoke_safepoint_normal_dest: |
21 ; CHECK: movq | 21 ; CHECK: movq |
22 %obj.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %0, i32 13, i32 13) | 22 %obj.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %0, i32 13, i32 13) |
23 %obj1.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %0, i32 14, i32 14) | 23 %obj1.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %0, i32 14, i32 14) |
24 br label %normal_return | 24 br label %normal_return |
25 | 25 |
26 normal_return: | 26 normal_return: |
27 ; CHECK: retq | 27 ; CHECK: retq |
28 ret i64 addrspace(1)* %obj.relocated | 28 ret i64 addrspace(1)* %obj.relocated |
29 | 29 |
30 exceptional_return: | 30 exceptional_return: |
31 ; CHECK: Ltmp{{[0-9]+}}: | 31 ; CHECK: Ltmp{{[0-9]+}}: |
32 ; CHECK: movq | 32 ; CHECK: movq |
33 ; CHECK: retq | 33 ; CHECK: retq |
34 %landing_pad = landingpad { i8*, i32 } | 34 %landing_pad = landingpad token |
35 cleanup | 35 cleanup |
36 %relocate_token = extractvalue { i8*, i32 } %landing_pad, 1 | 36 %obj.relocated1 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad, i32 13, i32 13) |
37 %obj.relocated1 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %relocate_token, i32 13, i32 13) | 37 %obj1.relocated1 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad, i32 14, i32 14) |
38 %obj1.relocated1 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %relocate_token, i32 14, i32 14) | |
39 ret i64 addrspace(1)* %obj1.relocated1 | 38 ret i64 addrspace(1)* %obj1.relocated1 |
40 } | 39 } |
41 ; CHECK-LABEL: GCC_except_table{{[0-9]+}}: | 40 ; CHECK-LABEL: GCC_except_table{{[0-9]+}}: |
42 ; CHECK: .long .Ltmp{{[0-9]+}}-.Ltmp{{[0-9]+}} | 41 ; CHECK: .long .Ltmp{{[0-9]+}}-.Ltmp{{[0-9]+}} |
43 ; CHECK: .long .Ltmp{{[0-9]+}}-.Lfunc_begin{{[0-9]+}} | 42 ; CHECK: .long .Ltmp{{[0-9]+}}-.Lfunc_begin{{[0-9]+}} |
44 ; CHECK: .byte 0 | 43 ; CHECK: .byte 0 |
45 ; CHECK: .align 4 | 44 ; CHECK: .p2align 4 |
46 | 45 |
47 define i64 addrspace(1)* @test_result(i64 addrspace(1)* %obj, | 46 define i64 addrspace(1)* @test_result(i64 addrspace(1)* %obj, |
48 i64 addrspace(1)* %obj1) | 47 i64 addrspace(1)* %obj1) |
49 gc "statepoint-example" personality i32 ()* @personality_function { | 48 gc "statepoint-example" personality i32 ()* @personality_function { |
50 entry: | 49 entry: |
51 ; CHECK: .Ltmp{{[0-9]+}}: | 50 ; CHECK: .Ltmp{{[0-9]+}}: |
52 ; CHECK: callq some_other_call | 51 ; CHECK: callq some_other_call |
53 ; CHECK: .Ltmp{{[0-9]+}}: | 52 ; CHECK: .Ltmp{{[0-9]+}}: |
54 %0 = invoke i32 (i64, i32, i64 addrspace(1)* (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_p1i64p1i64f(i64 0, i32 0, i64 addrspace(1)* (i64 addrspace(1)*)* @some_other_call, i32 1, i32 0, i64 addrspace(1)* %obj, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* %obj, i64 addrspace(1)* %obj1) | 53 %0 = invoke token (i64, i32, i64 addrspace(1)* (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_p1i64p1i64f(i64 0, i32 0, i64 addrspace(1)* (i64 addrspace(1)*)* @some_other_call, i32 1, i32 0, i64 addrspace(1)* %obj, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* %obj, i64 addrspace(1)* %obj1) |
55 to label %normal_return unwind label %exceptional_return | 54 to label %normal_return unwind label %exceptional_return |
56 | 55 |
57 normal_return: | 56 normal_return: |
58 ; CHECK: popq | 57 ; CHECK: popq |
59 ; CHECK: retq | 58 ; CHECK: retq |
60 %ret_val = call i64 addrspace(1)* @llvm.experimental.gc.result.p1i64(i32 %0) | 59 %ret_val = call i64 addrspace(1)* @llvm.experimental.gc.result.p1i64(token %0) |
61 ret i64 addrspace(1)* %ret_val | 60 ret i64 addrspace(1)* %ret_val |
62 | 61 |
63 exceptional_return: | 62 exceptional_return: |
64 ; CHECK: .Ltmp{{[0-9]+}}: | 63 ; CHECK: .Ltmp{{[0-9]+}}: |
65 ; CHECK: movq | 64 ; CHECK: movq |
66 %landing_pad = landingpad { i8*, i32 } | 65 %landing_pad = landingpad token |
67 cleanup | 66 cleanup |
68 %relocate_token = extractvalue { i8*, i32 } %landing_pad, 1 | 67 %obj.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad, i32 13, i32 13) |
69 %obj.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %relocate_token, i32 13, i32 13) | |
70 ret i64 addrspace(1)* %obj.relocated | 68 ret i64 addrspace(1)* %obj.relocated |
71 } | 69 } |
72 ; CHECK-LABEL: GCC_except_table{{[0-9]+}}: | 70 ; CHECK-LABEL: GCC_except_table{{[0-9]+}}: |
73 ; CHECK: .long .Ltmp{{[0-9]+}}-.Ltmp{{[0-9]+}} | 71 ; CHECK: .long .Ltmp{{[0-9]+}}-.Ltmp{{[0-9]+}} |
74 ; CHECK: .long .Ltmp{{[0-9]+}}-.Lfunc_begin{{[0-9]+}} | 72 ; CHECK: .long .Ltmp{{[0-9]+}}-.Lfunc_begin{{[0-9]+}} |
75 ; CHECK: .byte 0 | 73 ; CHECK: .byte 0 |
76 ; CHECK: .align 4 | 74 ; CHECK: .p2align 4 |
77 | 75 |
78 define i64 addrspace(1)* @test_same_val(i1 %cond, i64 addrspace(1)* %val1, i64 addrspace(1)* %val2, i64 addrspace(1)* %val3) | 76 define i64 addrspace(1)* @test_same_val(i1 %cond, i64 addrspace(1)* %val1, i64 addrspace(1)* %val2, i64 addrspace(1)* %val3) |
79 gc "statepoint-example" personality i32 ()* @"personality_function" { | 77 gc "statepoint-example" personality i32 ()* @"personality_function" { |
80 entry: | 78 entry: |
81 br i1 %cond, label %left, label %right | 79 br i1 %cond, label %left, label %right |
83 left: | 81 left: |
84 ; CHECK-LABEL: %left | 82 ; CHECK-LABEL: %left |
85 ; CHECK: movq %rdx, 8(%rsp) | 83 ; CHECK: movq %rdx, 8(%rsp) |
86 ; CHECK: movq | 84 ; CHECK: movq |
87 ; CHECK: callq some_call | 85 ; CHECK: callq some_call |
88 %sp1 = invoke i32 (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %val1, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* %val1, i64 addrspace(1)* %val2) | 86 %sp1 = invoke token (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %val1, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* %val1, i64 addrspace(1)* %val2) |
89 to label %left.relocs unwind label %exceptional_return.left | 87 to label %left.relocs unwind label %exceptional_return.left |
90 | 88 |
91 left.relocs: | 89 left.relocs: |
92 ; CHECK: movq (%rsp), | 90 ; CHECK: movq (%rsp), |
93 ; CHECK: movq 8(%rsp), [[REGVAL2:%[a-z]+]] | 91 ; CHECK: movq 8(%rsp), [[REGVAL2:%[a-z]+]] |
94 %val1.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %sp1, i32 13, i32 13) | 92 %val1.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %sp1, i32 13, i32 13) |
95 %val2.relocated_left = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %sp1, i32 14, i32 14) | 93 %val2.relocated_left = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %sp1, i32 14, i32 14) |
96 br label %normal_return | 94 br label %normal_return |
97 | 95 |
98 right: | 96 right: |
99 ; CHECK-LABEL: %right | 97 ; CHECK-LABEL: %right |
100 ; CHECK: movq | 98 ; CHECK: movq |
101 ; CHECK: movq %rdx, (%rsp) | 99 ; CHECK: movq %rdx, (%rsp) |
102 ; CHECK: callq some_call | 100 ; CHECK: callq some_call |
103 %sp2 = invoke i32 (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %val1, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* %val2, i64 addrspace(1)* %val3) | 101 %sp2 = invoke token (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %val1, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* %val2, i64 addrspace(1)* %val3) |
104 to label %right.relocs unwind label %exceptional_return.right | 102 to label %right.relocs unwind label %exceptional_return.right |
105 | 103 |
106 right.relocs: | 104 right.relocs: |
107 ; CHECK: movq (%rsp), [[REGVAL2]] | 105 ; CHECK: movq (%rsp), [[REGVAL2]] |
108 ; CHECK: movq | 106 ; CHECK: movq |
109 %val2.relocated_right = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %sp2, i32 13, i32 13) | 107 %val2.relocated_right = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %sp2, i32 13, i32 13) |
110 %val3.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %sp2, i32 14, i32 14) | 108 %val3.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %sp2, i32 14, i32 14) |
111 br label %normal_return | 109 br label %normal_return |
112 | 110 |
113 normal_return: | 111 normal_return: |
114 ; CHECK-LABEL: %normal_return | 112 ; CHECK-LABEL: %normal_return |
115 ; CHECK: cmoveq {{.*}}[[REGVAL2]]{{.*}} | 113 ; CHECK: cmoveq {{.*}}[[REGVAL2]]{{.*}} |
118 %a2 = phi i64 addrspace(1)* [%val2.relocated_left, %left.relocs], [%val2.relocated_right, %right.relocs] | 116 %a2 = phi i64 addrspace(1)* [%val2.relocated_left, %left.relocs], [%val2.relocated_right, %right.relocs] |
119 %ret = select i1 %cond, i64 addrspace(1)* %a1, i64 addrspace(1)* %a2 | 117 %ret = select i1 %cond, i64 addrspace(1)* %a1, i64 addrspace(1)* %a2 |
120 ret i64 addrspace(1)* %ret | 118 ret i64 addrspace(1)* %ret |
121 | 119 |
122 exceptional_return.left: | 120 exceptional_return.left: |
123 %landing_pad = landingpad { i8*, i32 } | 121 %landing_pad = landingpad token |
124 cleanup | 122 cleanup |
125 %relocate_token = extractvalue { i8*, i32 } %landing_pad, 1 | 123 %val.relocated2 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad, i32 13, i32 13) |
126 %val.relocated2 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %relocate_token, i32 13, i32 13) | |
127 ret i64 addrspace(1)* %val.relocated2 | 124 ret i64 addrspace(1)* %val.relocated2 |
128 | 125 |
129 exceptional_return.right: | 126 exceptional_return.right: |
130 %landing_pad1 = landingpad { i8*, i32 } | 127 %landing_pad1 = landingpad token |
131 cleanup | 128 cleanup |
132 %relocate_token1 = extractvalue { i8*, i32 } %landing_pad1, 1 | 129 %val.relocated3 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad1, i32 13, i32 13) |
133 %val.relocated3 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %relocate_token1, i32 13, i32 13) | |
134 ret i64 addrspace(1)* %val.relocated3 | 130 ret i64 addrspace(1)* %val.relocated3 |
135 } | 131 } |
136 | 132 |
137 define i64 addrspace(1)* @test_null_undef(i64 addrspace(1)* %val1) | 133 define i64 addrspace(1)* @test_null_undef(i64 addrspace(1)* %val1) |
138 gc "statepoint-example" personality i32 ()* @"personality_function" { | 134 gc "statepoint-example" personality i32 ()* @"personality_function" { |
139 ; CHECK-LABEL: test_null_undef: | 135 ; CHECK-LABEL: test_null_undef: |
140 entry: | 136 entry: |
141 ; CHECK: callq some_call | 137 ; CHECK: callq some_call |
142 %sp1 = invoke i32 (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %val1, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* null, i64 addrspace(1)* undef) | 138 %sp1 = invoke token (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %val1, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i64 addrspace(1)* null, i64 addrspace(1)* undef) |
143 to label %normal_return unwind label %exceptional_return | 139 to label %normal_return unwind label %exceptional_return |
144 | 140 |
145 normal_return: | 141 normal_return: |
146 ; CHECK-LABEL: %normal_return | 142 ; CHECK-LABEL: %normal_return |
147 ; CHECK: xorl %eax, %eax | 143 ; CHECK: xorl %eax, %eax |
148 ; CHECK-NEXT: popq | 144 ; CHECK-NEXT: popq |
149 ; CHECK-NEXT: retq | 145 ; CHECK-NEXT: retq |
150 %null.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %sp1, i32 13, i32 13) | 146 %null.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %sp1, i32 13, i32 13) |
151 %undef.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %sp1, i32 14, i32 14) | 147 %undef.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %sp1, i32 14, i32 14) |
152 ret i64 addrspace(1)* %null.relocated | 148 ret i64 addrspace(1)* %null.relocated |
153 | 149 |
154 exceptional_return: | 150 exceptional_return: |
155 %landing_pad = landingpad { i8*, i32 } | 151 %landing_pad = landingpad token |
156 cleanup | 152 cleanup |
157 %relocate_token = extractvalue { i8*, i32 } %landing_pad, 1 | 153 %null.relocated2 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad, i32 13, i32 13) |
158 %null.relocated2 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %relocate_token, i32 13, i32 13) | 154 %undef.relocated2 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad, i32 14, i32 14) |
159 %undef.relocated2 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %relocate_token, i32 14, i32 14) | |
160 ret i64 addrspace(1)* %null.relocated2 | 155 ret i64 addrspace(1)* %null.relocated2 |
161 } | 156 } |
162 | 157 |
163 define i64 addrspace(1)* @test_alloca_and_const(i64 addrspace(1)* %val1) | 158 define i64 addrspace(1)* @test_alloca_and_const(i64 addrspace(1)* %val1) |
164 gc "statepoint-example" personality i32 ()* @"personality_function" { | 159 gc "statepoint-example" personality i32 ()* @"personality_function" { |
166 entry: | 161 entry: |
167 %a = alloca i32 | 162 %a = alloca i32 |
168 %aa = addrspacecast i32* %a to i32 addrspace(1)* | 163 %aa = addrspacecast i32* %a to i32 addrspace(1)* |
169 %c = inttoptr i64 15 to i64 addrspace(1)* | 164 %c = inttoptr i64 15 to i64 addrspace(1)* |
170 ; CHECK: callq | 165 ; CHECK: callq |
171 %sp = invoke i32 (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %val1, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i32 addrspace(1)* %aa, i64 addrspace(1)* %c) | 166 %sp = invoke token (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* @some_call, i32 1, i32 0, i64 addrspace(1)* %val1, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0, i32 addrspace(1)* %aa, i64 addrspace(1)* %c) |
172 to label %normal_return unwind label %exceptional_return | 167 to label %normal_return unwind label %exceptional_return |
173 | 168 |
174 normal_return: | 169 normal_return: |
175 ; CHECK: leaq | 170 ; CHECK: leaq |
176 ; CHECK-NEXT: popq | 171 ; CHECK-NEXT: popq |
177 ; CHECK-NEXT: retq | 172 ; CHECK-NEXT: retq |
178 %aa.rel = call coldcc i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32 %sp, i32 13, i32 13) | 173 %aa.rel = call coldcc i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %sp, i32 13, i32 13) |
179 %aa.converted = bitcast i32 addrspace(1)* %aa.rel to i64 addrspace(1)* | 174 %aa.converted = bitcast i32 addrspace(1)* %aa.rel to i64 addrspace(1)* |
180 ret i64 addrspace(1)* %aa.converted | 175 ret i64 addrspace(1)* %aa.converted |
181 | 176 |
182 exceptional_return: | 177 exceptional_return: |
183 ; CHECK: movl $15 | 178 ; CHECK: movl $15 |
184 ; CHECK-NEXT: popq | 179 ; CHECK-NEXT: popq |
185 ; CHECK-NEXT: retq | 180 ; CHECK-NEXT: retq |
186 %landing_pad = landingpad { i8*, i32 } | 181 %landing_pad = landingpad token |
187 cleanup | 182 cleanup |
188 %relocate_token = extractvalue { i8*, i32 } %landing_pad, 1 | 183 %aa.rel2 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad, i32 14, i32 14) |
189 %aa.rel2 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %relocate_token, i32 14, i32 14) | |
190 ret i64 addrspace(1)* %aa.rel2 | 184 ret i64 addrspace(1)* %aa.rel2 |
191 } | 185 } |
192 | 186 |
193 declare i32 @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) | 187 declare token @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) |
194 declare i32 @llvm.experimental.gc.statepoint.p0f_p1i64p1i64f(i64, i32, i64 addrspace(1)* (i64 addrspace(1)*)*, i32, i32, ...) | 188 declare token @llvm.experimental.gc.statepoint.p0f_p1i64p1i64f(i64, i32, i64 addrspace(1)* (i64 addrspace(1)*)*, i32, i32, ...) |
195 | 189 |
196 declare i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32, i32, i32) | 190 declare i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token, i32, i32) |
197 declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32, i32, i32) | 191 declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token, i32, i32) |
198 declare i64 addrspace(1)* @llvm.experimental.gc.result.p1i64(i32) | 192 declare i64 addrspace(1)* @llvm.experimental.gc.result.p1i64(token) |