Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Analysis / ScalarEvolution / avoid-infinite-recursion-1.ll
blob49b8c88e5e54d74b1ff4dfef7ca2380803d11ec9
1 ; RUN: opt < %s -passes='require<iv-users>'
2 ; PR4538
4 ; ModuleID = 'bugpoint-reduced-simplified.bc'
5 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
6 target triple = "x86_64-unknown-freebsd8.0"
7 module asm ".ident\09\22$FreeBSD: head/sys/kern/vfs_subr.c 195285 2009-07-02 14:19:33Z jamie $\22"
8 module asm ".section set_pcpu, \22aw\22, @progbits"
9 module asm ".previous"
10         %0 = type <{ [40 x i8] }>               ; type %0
11         %1 = type <{ ptr, ptr }>                ; type %1
12         %2 = type <{ ptr }>             ; type %2
13         %3 = type <{ ptr, ptr }>                ; type %3
14         %4 = type <{ ptr, ptr }>                ; type %4
15         %5 = type <{ ptr }>             ; type %5
16         %6 = type <{ ptr, ptr }>                ; type %6
17         %7 = type <{ ptr, ptr }>                ; type %7
18         %8 = type <{ ptr, ptr }>                ; type %8
19         %9 = type <{ ptr, ptr }>                ; type %9
20         %10 = type <{ ptr }>            ; type %10
21         %11 = type <{ ptr }>            ; type %11
22         %12 = type <{ ptr, ptr }>               ; type %12
23         %13 = type <{ ptr }>            ; type %13
24         %14 = type <{ ptr, ptr }>               ; type %14
25         %15 = type <{ ptr, ptr }>               ; type %15
26         %16 = type <{ ptr, ptr }>               ; type %16
27         %17 = type <{ ptr, ptr }>               ; type %17
28         %18 = type <{ ptr, ptr }>               ; type %18
29         %19 = type <{ ptr }>            ; type %19
30         %20 = type <{ ptr }>            ; type %20
31         %21 = type <{ ptr }>            ; type %21
32         %22 = type <{ ptr, ptr }>               ; type %22
33         %23 = type <{ ptr, ptr }>               ; type %23
34         %24 = type <{ ptr, ptr }>               ; type %24
35         %25 = type <{ ptr, ptr }>               ; type %25
36         %struct.__siginfo = type <{ i32, i32, i32, i32, i32, i32, ptr, %union.sigval, %0 }>
37         %struct.__sigset = type <{ [4 x i32] }>
38         %struct.acl = type <{ i32, i32, [4 x i32], [254 x %struct.acl_entry] }>
39         %struct.acl_entry = type <{ i32, i32, i32, i16, i16 }>
40         %struct.au_mask = type <{ i32, i32 }>
41         %struct.au_tid_addr = type <{ i32, i32, [4 x i32] }>
42         %struct.auditinfo_addr = type <{ i32, %struct.au_mask, %struct.au_tid_addr, i32, i64 }>
43         %struct.bintime = type <{ i64, i64 }>
44         %struct.buf = type <{ ptr, i64, ptr, ptr, i32, i8, i8, i8, i8, i64, i64, ptr, i64, i64, %struct.buflists, ptr, ptr, i32, i8, i8, i8, i8, %struct.buflists, i16, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, %struct.lock, i64, i64, ptr, i32, i8, i8, i8, i8, i64, ptr, i32, i32, ptr, ptr, ptr, %union.pager_info, i8, i8, i8, i8, %union.anon, [32 x ptr], i32, i8, i8, i8, i8, %struct.workhead, ptr, ptr, ptr, i32, i8, i8, i8, i8 }>
45         %struct.buf_ops = type <{ ptr, ptr, ptr, ptr, ptr }>
46         %struct.buflists = type <{ ptr, ptr }>
47         %struct.bufobj = type <{ %struct.mtx, %struct.bufv, %struct.bufv, i64, i32, i8, i8, i8, i8, ptr, i32, i8, i8, i8, i8, ptr, %6, ptr, ptr }>
48         %struct.bufv = type <{ %struct.buflists, ptr, i32, i8, i8, i8, i8 }>
49         %struct.callout = type <{ %union.anon, i32, i8, i8, i8, i8, ptr, ptr, ptr, i32, i32 }>
50         %struct.cdev_privdata = type opaque
51         %struct.cluster_save = type <{ i64, i64, ptr, i32, i8, i8, i8, i8, ptr }>
52         %struct.componentname = type <{ i64, i64, ptr, ptr, i32, i8, i8, i8, i8, ptr, ptr, i64, i64 }>
53         %struct.cpuset = type opaque
54         %struct.cv = type <{ ptr, i32, i8, i8, i8, i8 }>
55         %struct.fid = type <{ i16, i16, [16 x i8] }>
56         %struct.file = type <{ ptr, ptr, ptr, ptr, i16, i16, i32, i32, i32, i64, ptr, i64, ptr }>
57         %struct.filedesc = type opaque
58         %struct.filedesc_to_leader = type opaque
59         %struct.fileops = type <{ ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8 }>
60         %struct.filterops = type <{ i32, i8, i8, i8, i8, ptr, ptr, ptr }>
61         %struct.flock = type <{ i64, i64, i32, i16, i16, i32, i8, i8, i8, i8 }>
62         %struct.freelst = type <{ ptr, ptr }>
63         %struct.fsid = type <{ [2 x i32] }>
64         %struct.in6_addr = type opaque
65         %struct.in_addr = type opaque
66         %struct.inode = type opaque
67         %struct.iovec = type <{ ptr, i64 }>
68         %struct.itimers = type opaque
69         %struct.itimerval = type <{ %struct.bintime, %struct.bintime }>
70         %struct.kaioinfo = type opaque
71         %struct.kaudit_record = type opaque
72         %struct.kdtrace_proc = type opaque
73         %struct.kdtrace_thread = type opaque
74         %struct.kevent = type <{ i64, i16, i16, i32, i64, ptr }>
75         %struct.klist = type <{ ptr }>
76         %struct.knlist = type <{ %struct.klist, ptr, ptr, ptr, ptr, ptr }>
77         %struct.knote = type <{ %struct.klist, %struct.klist, ptr, %17, ptr, %struct.kevent, i32, i32, i64, %union.sigval, ptr, ptr }>
78         %struct.kqueue = type opaque
79         %struct.ksiginfo = type <{ %14, %struct.__siginfo, i32, i8, i8, i8, i8, ptr }>
80         %struct.ktr_request = type opaque
81         %struct.label = type opaque
82         %struct.lock = type <{ %struct.lock_object, i64, i32, i32 }>
83         %struct.lock_list_entry = type opaque
84         %struct.lock_object = type <{ ptr, i32, i32, ptr }>
85         %struct.lock_owner = type opaque
86         %struct.lock_profile_object = type opaque
87         %struct.lockf = type <{ %23, %struct.mtx, %struct.lockf_entry_list, %struct.lockf_entry_list, i32, i8, i8, i8, i8 }>
88         %struct.lockf_edge = type <{ %25, %25, ptr, ptr }>
89         %struct.lockf_edge_list = type <{ ptr }>
90         %struct.lockf_entry = type <{ i16, i16, i8, i8, i8, i8, i64, i64, ptr, ptr, ptr, ptr, %24, %struct.lockf_edge_list, %struct.lockf_edge_list, i32, i8, i8, i8, i8 }>
91         %struct.lockf_entry_list = type <{ ptr }>
92         %struct.lpohead = type <{ ptr }>
93         %struct.md_page = type <{ %4 }>
94         %struct.mdproc = type <{ ptr, %struct.system_segment_descriptor }>
95         %struct.mdthread = type <{ i32, i8, i8, i8, i8, i64 }>
96         %struct.mntarg = type opaque
97         %struct.mntlist = type <{ ptr, ptr }>
98         %struct.mount = type <{ %struct.mtx, i32, i8, i8, i8, i8, %struct.mntlist, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8, %struct.freelst, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, i8, i8, i8, i8, %struct.statfs, ptr, ptr, i64, i32, i8, i8, i8, i8, ptr, ptr, i32, i32, i32, i32, ptr, ptr, %struct.lock }>
99         %struct.mqueue_notifier = type opaque
100         %struct.mtx = type <{ %struct.lock_object, i64 }>
101         %struct.namecache = type opaque
102         %struct.netexport = type opaque
103         %struct.nlminfo = type opaque
104         %struct.osd = type <{ i32, i8, i8, i8, i8, ptr, %12 }>
105         %struct.p_sched = type opaque
106         %struct.pargs = type <{ i32, i32, [1 x i8], i8, i8, i8 }>
107         %struct.pcb = type opaque
108         %struct.pgrp = type <{ %16, %13, ptr, %struct.sigiolst, i32, i32, %struct.mtx }>
109         %struct.plimit = type opaque
110         %struct.pmap = type <{ %struct.mtx, ptr, %15, i32, i8, i8, i8, i8, %struct.bintime, ptr }>
111         %struct.prison = type <{ %9, i32, i32, i32, i32, %10, %9, ptr, %struct.mtx, %struct.task, %struct.osd, ptr, ptr, ptr, i32, i32, ptr, ptr, [4 x ptr], i32, i32, i32, i32, i32, [5 x i32], i64, [256 x i8], [1024 x i8], [256 x i8], [256 x i8], [64 x i8] }>
112         %struct.proc = type <{ %7, %8, %struct.mtx, ptr, ptr, ptr, ptr, ptr, %struct.callout, ptr, i32, i32, i32, i8, i8, i8, i8, %7, %7, ptr, %7, %13, %struct.mtx, ptr, %struct.sigqueue, i32, i8, i8, i8, i8, ptr, i32, i8, i8, i8, i8, %struct.itimerval, %struct.rusage, %struct.rusage_ext, %struct.rusage_ext, i32, i32, i32, i8, i8, i8, i8, ptr, ptr, ptr, i32, i8, i8, i8, i8, %struct.sigiolst, i32, i32, i64, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr, ptr, i32, i8, i8, i8, i8, ptr, i32, i32, ptr, i32, i32, [20 x i8], i8, i8, i8, i8, ptr, ptr, ptr, i64, i8, i8, i8, i8, i32, i16, i8, i8, i8, i8, i8, i8, %struct.knlist, i32, i8, i8, i8, i8, %struct.mdproc, %struct.callout, i16, i8, i8, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, %18, %19, ptr, %struct.cv }>
113         %struct.pstats = type opaque
114         %struct.pv_chunk = type <{ ptr, %15, [3 x i64], [2 x i64], [168 x %struct.pv_entry] }>
115         %struct.pv_entry = type <{ i64, %4 }>
116         %struct.rusage = type <{ %struct.bintime, %struct.bintime, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64 }>
117         %struct.rusage_ext = type <{ i64, i64, i64, i64, i64, i64, i64 }>
118         %struct.selfd = type opaque
119         %struct.selfdlist = type <{ ptr, ptr }>
120         %struct.selinfo = type <{ %struct.selfdlist, %struct.knlist, ptr }>
121         %struct.seltd = type opaque
122         %struct.session = type <{ i32, i8, i8, i8, i8, ptr, ptr, ptr, i32, [24 x i8], i8, i8, i8, i8, %struct.mtx }>
123         %struct.shmmap_state = type opaque
124         %struct.sigacts = type <{ [128 x ptr], [128 x %struct.__sigset], %struct.__sigset, %struct.__sigset, %struct.__sigset, %struct.__sigset, %struct.__sigset, %struct.__sigset, %struct.__sigset, %struct.__sigset, %struct.__sigset, %struct.__sigset, i32, i32, %struct.mtx }>
125         %struct.sigaltstack = type <{ ptr, i64, i32, i8, i8, i8, i8 }>
126         %struct.sigio = type <{ %union.sigval, %struct.sigiolst, ptr, ptr, i32, i8, i8, i8, i8 }>
127         %struct.sigiolst = type <{ ptr }>
128         %struct.sigqueue = type <{ %struct.__sigset, %struct.__sigset, %14, ptr, i32, i8, i8, i8, i8 }>
129         %struct.sleepqueue = type opaque
130         %struct.sockaddr = type opaque
131         %struct.stat = type <{ i32, i32, i16, i16, i32, i32, i32, %struct.bintime, %struct.bintime, %struct.bintime, i64, i64, i32, i32, i32, i32, %struct.bintime }>
132         %struct.statfs = type <{ i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, [10 x i64], i32, i32, %struct.fsid, [80 x i8], [16 x i8], [88 x i8], [88 x i8] }>
133         %struct.sysctl_req = type <{ ptr, i32, i8, i8, i8, i8, ptr, i64, i64, ptr, ptr, i64, i64, ptr, i64, i32, i8, i8, i8, i8 }>
134         %struct.sysentvec = type opaque
135         %struct.system_segment_descriptor = type <{ i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }>
136         %struct.task = type <{ %11, i16, i16, i8, i8, i8, i8, ptr, ptr }>
137         %struct.td_sched = type opaque
138         %struct.thread = type <{ ptr, ptr, %8, %8, %8, %8, ptr, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8, %struct.sigqueue, i32, i32, i32, i32, i32, i8, i8, i8, i8, ptr, ptr, i8, i8, i8, i8, i16, i16, i16, i8, i8, i8, i8, i8, i8, ptr, ptr, %20, ptr, i32, i32, ptr, i32, i32, %struct.rusage, i64, i64, i32, i32, i32, i32, i32, %struct.__sigset, %struct.__sigset, i32, %struct.sigaltstack, i32, i8, i8, i8, i8, i64, i32, [20 x i8], ptr, i32, i32, %struct.osd, i8, i8, i8, i8, i8, i8, i8, i8, ptr, i32, i8, i8, i8, i8, [2 x i64], %struct.callout, ptr, ptr, i64, i32, i8, i8, i8, i8, ptr, i64, i32, i32, %struct.mdthread, ptr, ptr, i32, i8, i8, i8, i8, [2 x %struct.lpohead], ptr, i32, i8, i8, i8, i8, ptr, ptr }>
139         %struct.trapframe = type <{ i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i16, i16, i64, i32, i16, i16, i64, i64, i64, i64, i64, i64 }>
140         %struct.tty = type opaque
141         %struct.turnstile = type opaque
142         %struct.ucred = type <{ i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8, [2 x ptr], ptr, %struct.auditinfo_addr, ptr, i32, i8, i8, i8, i8 }>
143         %struct.uidinfo = type opaque
144         %struct.uio = type <{ ptr, i32, i8, i8, i8, i8, i64, i64, i32, i32, ptr }>
145         %struct.umtx_q = type opaque
146         %struct.vattr = type <{ i32, i16, i16, i32, i32, i32, i8, i8, i8, i8, i64, i64, i64, %struct.bintime, %struct.bintime, %struct.bintime, %struct.bintime, i64, i64, i32, i8, i8, i8, i8, i64, i64, i32, i8, i8, i8, i8, i64 }>
147         %struct.vfsconf = type <{ i32, [16 x i8], i8, i8, i8, i8, ptr, i32, i32, i32, i8, i8, i8, i8, ptr, %struct.vfsconfhead }>
148         %struct.vfsconfhead = type <{ ptr, ptr }>
149         %struct.vfsops = type <{ ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }>
150         %struct.vfsopt = type <{ %struct.vfsoptlist, ptr, ptr, i32, i32, i32, i8, i8, i8, i8 }>
151         %struct.vfsoptdecl = type opaque
152         %struct.vfsoptlist = type <{ ptr, ptr }>
153         %struct.vimage = type opaque
154         %struct.vm_map = type <{ %struct.vm_map_entry, %struct.mtx, %struct.mtx, i32, i8, i8, i8, i8, i64, i32, i8, i8, i8, i8, ptr, ptr, ptr }>
155         %struct.vm_map_entry = type <{ ptr, ptr, ptr, ptr, i64, i64, i64, i64, i64, %union.sigval, i64, i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i64, ptr }>
156         %struct.vm_object = type <{ %struct.mtx, %1, %2, %1, %3, ptr, i64, i32, i32, i32, i8, i8, i16, i16, i16, i32, ptr, i64, %1, %5, ptr, ptr, %union.anon, ptr, i64 }>
157         %struct.vm_page = type <{ %3, %3, ptr, ptr, ptr, i64, i64, %struct.md_page, i8, i8, i16, i8, i8, i16, i32, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8 }>
158         %struct.vm_reserv = type opaque
159         %struct.vmspace = type <{ %struct.vm_map, ptr, i64, i64, i64, i64, ptr, ptr, ptr, i32, i8, i8, i8, i8, %struct.pmap }>
160         %struct.vnet = type opaque
161         %struct.vnode = type <{ i32, i8, i8, i8, i8, ptr, ptr, ptr, ptr, %struct.freelst, %union.sigval, %struct.freelst, i32, i8, i8, i8, i8, %21, %22, ptr, i64, i64, i64, i32, i8, i8, i8, i8, %struct.lock, %struct.mtx, ptr, i32, i32, i64, i64, i32, i8, i8, i8, i8, %struct.freelst, %struct.bufobj, ptr, ptr, ptr }>
162         %struct.vnodeop_desc = type <{ ptr, i32, i8, i8, i8, i8, ptr, ptr, i32, i32, i32, i32 }>
163         %struct.vop_access_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr, ptr }>
164         %struct.vop_aclcheck_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr, ptr, ptr }>
165         %struct.vop_advlock_args = type <{ %struct.vop_generic_args, ptr, ptr, i32, i8, i8, i8, i8, ptr, i32, i8, i8, i8, i8 }>
166         %struct.vop_advlockasync_args = type <{ %struct.vop_generic_args, ptr, ptr, i32, i8, i8, i8, i8, ptr, i32, i8, i8, i8, i8, ptr, ptr }>
167         %struct.vop_bmap_args = type <{ %struct.vop_generic_args, ptr, i64, ptr, ptr, ptr, ptr }>
168         %struct.vop_cachedlookup_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr }>
169         %struct.vop_create_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr, ptr }>
170         %struct.vop_deleteextattr_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr, ptr, ptr }>
171         %struct.vop_fsync_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr }>
172         %struct.vop_generic_args = type <{ ptr }>
173         %struct.vop_getattr_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr }>
174         %struct.vop_getextattr_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr }>
175         %struct.vop_getpages_args = type <{ %struct.vop_generic_args, ptr, ptr, i32, i32, i64 }>
176         %struct.vop_getwritemount_args = type <{ %struct.vop_generic_args, ptr, ptr }>
177         %struct.vop_inactive_args = type <{ %struct.vop_generic_args, ptr, ptr }>
178         %struct.vop_ioctl_args = type <{ %struct.vop_generic_args, ptr, i64, ptr, i32, i8, i8, i8, i8, ptr, ptr }>
179         %struct.vop_islocked_args = type <{ %struct.vop_generic_args, ptr }>
180         %struct.vop_kqfilter_args = type <{ %struct.vop_generic_args, ptr, ptr }>
181         %struct.vop_link_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr }>
182         %struct.vop_listextattr_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr, ptr, ptr, ptr }>
183         %struct.vop_lock1_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr, i32, i8, i8, i8, i8 }>
184         %struct.vop_open_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr, ptr, ptr }>
185         %struct.vop_openextattr_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr }>
186         %struct.vop_pathconf_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr }>
187         %struct.vop_putpages_args = type <{ %struct.vop_generic_args, ptr, ptr, i32, i32, ptr, i64 }>
188         %struct.vop_read_args = type <{ %struct.vop_generic_args, ptr, ptr, i32, i8, i8, i8, i8, ptr }>
189         %struct.vop_readdir_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr, ptr, ptr, ptr }>
190         %struct.vop_readlink_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr }>
191         %struct.vop_reallocblks_args = type <{ %struct.vop_generic_args, ptr, ptr }>
192         %struct.vop_rename_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr, ptr, ptr, ptr }>
193         %struct.vop_revoke_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8 }>
194         %struct.vop_setextattr_args = type <{ %struct.vop_generic_args, ptr, i32, i8, i8, i8, i8, ptr, ptr, ptr, ptr }>
195         %struct.vop_setlabel_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr, ptr }>
196         %struct.vop_strategy_args = type <{ %struct.vop_generic_args, ptr, ptr }>
197         %struct.vop_symlink_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr, ptr, ptr }>
198         %struct.vop_vector = type <{ ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }>
199         %struct.vop_vptocnp_args = type <{ %struct.vop_generic_args, ptr, ptr, ptr, ptr, ptr }>
200         %struct.vop_vptofh_args = type <{ %struct.vop_generic_args, ptr, ptr }>
201         %struct.vop_whiteout_args = type <{ %struct.vop_generic_args, ptr, ptr, i32, i8, i8, i8, i8 }>
202         %struct.vpollinfo = type <{ %struct.mtx, %struct.selinfo, i16, i16, i8, i8, i8, i8 }>
203         %struct.witness = type opaque
204         %struct.workhead = type <{ ptr }>
205         %struct.worklist = type opaque
206         %union.anon = type <{ [16 x i8] }>
207         %union.pager_info = type <{ [4 x i8] }>
208         %union.sigval = type <{ [8 x i8] }>
210 define i32 @vlrureclaim(ptr %mp) nounwind {
211 entry:
212         br i1 undef, label %if.then11, label %do.end
214 if.then11:              ; preds = %entry
215         br label %do.end
217 do.end:         ; preds = %if.then11, %entry
218         br label %while.cond.outer
220 while.cond.outer:               ; preds = %while.cond.outer.backedge, %do.end
221         %count.0.ph = phi i32 [ undef, %do.end ], [ undef, %while.cond.outer.backedge ]         ; <i32> [#uses=1]
222         br label %while.cond
224 while.cond:             ; preds = %next_iter, %while.cond.outer
225         %count.0 = phi i32 [ %dec, %next_iter ], [ %count.0.ph, %while.cond.outer ]             ; <i32> [#uses=2]
226         %cmp21 = icmp eq i32 %count.0, 0                ; <i1> [#uses=1]
227         br i1 %cmp21, label %do.body288.loopexit4, label %while.body
229 while.body:             ; preds = %while.cond
230         br label %while.cond27
232 while.cond27:           ; preds = %while.body36, %while.body
233         br i1 undef, label %do.body288.loopexit, label %land.rhs
235 land.rhs:               ; preds = %while.cond27
236         br i1 undef, label %while.body36, label %while.end
238 while.body36:           ; preds = %land.rhs
239         br label %while.cond27
241 while.end:              ; preds = %land.rhs
242         br i1 undef, label %do.body288.loopexit4, label %do.body46
244 do.body46:              ; preds = %while.end
245         br i1 undef, label %if.else64, label %if.then53
247 if.then53:              ; preds = %do.body46
248         br label %if.end72
250 if.else64:              ; preds = %do.body46
251         br label %if.end72
253 if.end72:               ; preds = %if.else64, %if.then53
254         %dec = add i32 %count.0, -1             ; <i32> [#uses=2]
255         br i1 undef, label %next_iter, label %if.end111
257 if.end111:              ; preds = %if.end72
258         br i1 undef, label %lor.lhs.false, label %do.body145
260 lor.lhs.false:          ; preds = %if.end111
261         br i1 undef, label %lor.lhs.false122, label %do.body145
263 lor.lhs.false122:               ; preds = %lor.lhs.false
264         br i1 undef, label %lor.lhs.false128, label %do.body145
266 lor.lhs.false128:               ; preds = %lor.lhs.false122
267         br i1 undef, label %do.body162, label %land.lhs.true
269 land.lhs.true:          ; preds = %lor.lhs.false128
270         br i1 undef, label %do.body145, label %do.body162
272 do.body145:             ; preds = %land.lhs.true, %lor.lhs.false122, %lor.lhs.false, %if.end111
273         br i1 undef, label %if.then156, label %next_iter
275 if.then156:             ; preds = %do.body145
276         br label %next_iter
278 do.body162:             ; preds = %land.lhs.true, %lor.lhs.false128
279         br i1 undef, label %if.then173, label %do.end177
281 if.then173:             ; preds = %do.body162
282         br label %do.end177
284 do.end177:              ; preds = %if.then173, %do.body162
285         br i1 undef, label %do.body185, label %if.then182
287 if.then182:             ; preds = %do.end177
288         br label %next_iter_mntunlocked
290 do.body185:             ; preds = %do.end177
291         br i1 undef, label %if.then196, label %do.end202
293 if.then196:             ; preds = %do.body185
294         br label %do.end202
296 do.end202:              ; preds = %if.then196, %do.body185
297         br i1 undef, label %lor.lhs.false207, label %if.then231
299 lor.lhs.false207:               ; preds = %do.end202
300         br i1 undef, label %lor.lhs.false214, label %if.then231
302 lor.lhs.false214:               ; preds = %lor.lhs.false207
303         br i1 undef, label %do.end236, label %land.lhs.true221
305 land.lhs.true221:               ; preds = %lor.lhs.false214
306         br i1 undef, label %if.then231, label %do.end236
308 if.then231:             ; preds = %land.lhs.true221, %lor.lhs.false207, %do.end202
309         br label %next_iter_mntunlocked
311 do.end236:              ; preds = %land.lhs.true221, %lor.lhs.false214
312         br label %next_iter_mntunlocked
314 next_iter_mntunlocked:          ; preds = %do.end236, %if.then231, %if.then182
315         br i1 undef, label %yield, label %do.body269
317 next_iter:              ; preds = %if.then156, %do.body145, %if.end72
318         %rem2482 = and i32 %dec, 255            ; <i32> [#uses=1]
319         %cmp249 = icmp eq i32 %rem2482, 0               ; <i1> [#uses=1]
320         br i1 %cmp249, label %do.body253, label %while.cond
322 do.body253:             ; preds = %next_iter
323         br i1 undef, label %if.then264, label %yield
325 if.then264:             ; preds = %do.body253
326         br label %yield
328 yield:          ; preds = %if.then264, %do.body253, %next_iter_mntunlocked
329         br label %do.body269
331 do.body269:             ; preds = %yield, %next_iter_mntunlocked
332         br i1 undef, label %if.then280, label %while.cond.outer.backedge
334 if.then280:             ; preds = %do.body269
335         br label %while.cond.outer.backedge
337 while.cond.outer.backedge:              ; preds = %if.then280, %do.body269
338         br label %while.cond.outer
340 do.body288.loopexit:            ; preds = %while.cond27
341         br label %do.body288
343 do.body288.loopexit4:           ; preds = %while.end, %while.cond
344         br label %do.body288
346 do.body288:             ; preds = %do.body288.loopexit4, %do.body288.loopexit
347         br i1 undef, label %if.then299, label %do.end303
349 if.then299:             ; preds = %do.body288
350         br label %do.end303
352 do.end303:              ; preds = %if.then299, %do.body288
353         ret i32 undef