• Home
  • Raw
  • Download

Lines Matching refs:unwind

7 ;;; when inlined because the funclet doesn't unwind to caller.
13 to label %exit unwind label %cleanup
17 cleanupret from %pad unwind to caller
25 to label %exit unwind label %cleanup.inner
27 ; CHECK-NEXT: unwind label %[[cleanup_inner:.+]]
32 cleanupret from %pad.inner unwind label %cleanup.outer
38 ; CHECK-NEXT: cleanupret from %[[pad_inner]] unwind label %[[cleanup_outer:.+]]
43 cleanupret from %pad.outer unwind to caller
48 ; CHECK-NEXT: unwind label %cleanup
49 ; CHECK: cleanupret from %[[pad_outer]] unwind label %cleanup{{$}}
57 ;;; Test with an "unwind to caller" catchswitch in a parent funclet
58 ;;; that needs to remain "unwind to caller" because the parent
59 ;;; doesn't unwind to caller.
65 to label %exit unwind label %cleanup
69 cleanupret from %pad unwind to caller
77 to label %exit unwind label %cleanup1
79 ; CHECK-NEXT: unwind label %[[cleanup1:.+]]
84 to label %ret1 unwind label %catchswitch
88 ; CHECK-NEXT: unwind label %[[catchswitch:.+]]
91 %cs = catchswitch within %outer [label %catch] unwind to caller
93 ; The catchswitch here needs to remain "unwind to caller" since %outer
95 ; CHECK-NEXT: %[[cs:[^ ]+]] = catchswitch within %[[outer]] [label %[[catch:.+]]] unwind to caller
107 cleanupret from %outer unwind label %cleanup2
108 ; CHECK: cleanupret from %[[outer]] unwind label %[[cleanup2:.+]]
112 cleanupret from %later unwind to caller
116 ; CHECK-NEXT: cleanupret from %[[later]] unwind label %cleanup{{$}}
123 ;;; Test with a call in a cleanup that has no definitive unwind
130 to label %exit unwind label %cleanup
134 cleanupret from %pad unwind to caller
142 to label %exit unwind label %cleanup
144 ; CHECK-NEXT: unwind label %[[cleanup:.+]]
152 ; because it may well unwind to there.
155 ; CHECK-NEXT: unwind label %cleanup{{$}}
163 ;;; unwind destination, that must be rewritten to unwind to the
164 ;;; inlined invoke's unwind dest
170 to label %exit unwind label %cleanup
174 cleanupret from %pad unwind to caller
182 to label %exit unwind label %cleanup
184 ; CHECK-NEXT: unwind label %[[cleanup:.+]]
189 to label %unreachable unwind label %dispatch
193 ; CHECK-NEXT: unwind label %[[dispatch:.+]]
196 %cs = catchswitch within %clean [label %catch] unwind to caller
198 ; The catchswitch must be rewritten to unwind to %cleanup in the caller
199 ; because it may well unwind to there.
200 ; CHECK-NEXT: %[[cs:[^ ]+]] = catchswitch within %[[clean]] [label %[[catch:.+]]] unwind label %cle…
212 ;;; Test with multiple levels of nesting, and unwind dests
220 to label %exit unwind label %cleanup
224 cleanupret from %pad unwind to caller
232 to label %cont unwind label %noinfo.root
234 ; CHECK-NEXT: to label %[[cont:[^ ]+]] unwind label %[[noinfo_root:.+]]
240 to label %noinfo.root.cont unwind label %noinfo.left
242 ; Nothing under "noinfo.root" has a definitive unwind destination, so
243 ; we must assume all of it may actually unwind, and redirect unwinds
247 ; CHECK-NEXT: to label %[[next:[^ ]+]] unwind label %cleanup{{$}}
250 ; CHECK-NEXT: to label %[[noinfo_root_cont:[^ ]+]] unwind label %[[noinfo_left:.+]]
255 to label %unreachable unwind label %noinfo.left.child
259 ; CHECK-NEXT: unwind label %[[noinfo_left_child:.+]]
262 …ft.child.cs = catchswitch within %noinfo.left.pad [label %noinfo.left.child.catch] unwind to caller
264 …h within %[[noinfo_left_pad]] [label %[[noinfo_left_child_catch:[^ ]+]]] unwind label %cleanup{{$}}
273 ; CHECK-NEXT: unwind label %cleanup{{$}}
277 to label %unreachable unwind label %noinfo.right
280 ; CHECK-NEXT: unwind label %[[noinfo_right:.+]]
283 …%noinfo.right.cs = catchswitch within %noinfo.root.pad [label %noinfo.right.catch] unwind to caller
285 …switch within %[[noinfo_root_pad]] [label %[[noinfo_right_catch:[^ ]+]]] unwind label %cleanup{{$}}
290 to label %unreachable unwind label %noinfo.right.child
294 ; CHECK-NEXT: unwind label %[[noinfo_right_child:.+]]
303 ; CHECK-NEXT: unwind label %cleanup{{$}}
307 to label %exit unwind label %implicit.root
310 ; CHECK-NEXT: unwind label %[[implicit_root:.+]]
316 to label %implicit.root.cont unwind label %implicit.left
318 ; There's an unwind edge to %internal in implicit.right, and we need to propagate that
320 ; implicit.left.child.catch, leaving all calls and "unwind to caller" catchswitches
321 ; alone to so they don't conflict with the unwind edge in implicit.right
325 ; CHECK-NEXT: to label %[[implicit_root_cont:[^ ]+]] unwind label %[[implicit_left:.+]]
330 to label %unreachable unwind label %implicit.left.child
334 ; CHECK-NEXT: unwind label %[[implicit_left_child:.+]]
337 …hild.cs = catchswitch within %implicit.left.pad [label %implicit.left.child.catch] unwind to caller
339 …hswitch within %[[implicit_left_pad]] [label %[[implicit_left_child_catch:[^ ]+]]] unwind to caller
351 to label %unreachable unwind label %implicit.right
354 ; CHECK-NEXT: unwind label %[[implicit_right:.+]]
357 …%implicit.right.cs = catchswitch within %implicit.root.pad [label %implicit.right.catch] unwind la…
359 ; This is the unwind edge (to %internal) whose existence needs to get propagated around the "implic…
360 …ch within %[[implicit_root_pad]] [label %[[implicit_right_catch:[^ ]+]]] unwind label %[[internal:…
365 to label %unreachable unwind label %implicit.right.child
369 ; CHECK-NEXT: unwind label %[[implicit_right_child:.+]]
374 to label %unreachable unwind label %implicit.right.grandchild
378 ; CHECK-NEXT: unwind label %[[implicit_right_grandchild:.+]]
381 …chswitch within %implicit.right.child.pad [label %implicit.right.grandchild.catch] unwind to caller
383 …n %[[implicit_right_child_pad]] [label %[[implicit_right_grandchild_catch:[^ ]+]]] unwind to caller
396 cleanupret from %internal.pad unwind to caller
402 ; CHECK-NEXT: to label %[[next:[^ ]+]] unwind label %cleanup{{$}}
404 ; CHECK-NEXT: cleanupret from %[[internal_pad]] unwind label %cleanup{{$}}
421 to label %exit unwind label %callsite_parent
426 to label %ret unwind label %cleanup
428 cleanupret from %callsite_parent.pad unwind label %cleanup
432 cleanupret from %pad unwind to caller
440 to label %exit unwind label %inlinee_cleanup
442 ; CHECK-NEXT: unwind label %[[inlinee_cleanup:.+]]
451 ; CHECK-NEXT: unwind label %cleanup{{$}}