source: icGREP/icgrep-devel/llvm-3.8.0.src/test/Analysis/ScalarEvolution/avoid-infinite-recursion-1.ll @ 5027

Last change on this file since 5027 was 5027, checked in by cameron, 3 years ago

Upgrade to llvm 3.8

File size: 26.8 KB
Line 
1; RUN: opt < %s -iv-users
2; PR4538
3
4; ModuleID = 'bugpoint-reduced-simplified.bc'
5target 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"
6target triple = "x86_64-unknown-freebsd8.0"
7module asm ".ident\09\22$FreeBSD: head/sys/kern/vfs_subr.c 195285 2009-07-02 14:19:33Z jamie $\22"
8module asm ".section set_pcpu, \22aw\22, @progbits"
9module asm ".previous"
10        %0 = type <{ [40 x i8] }>               ; type %0
11        %1 = type <{ %struct.vm_object*, %struct.vm_object** }>         ; type %1
12        %2 = type <{ %struct.vm_object* }>              ; type %2
13        %3 = type <{ %struct.vm_page*, %struct.vm_page** }>             ; type %3
14        %4 = type <{ %struct.pv_entry*, %struct.pv_entry** }>           ; type %4
15        %5 = type <{ %struct.vm_reserv* }>              ; type %5
16        %6 = type <{ %struct.bufobj*, %struct.bufobj** }>               ; type %6
17        %7 = type <{ %struct.proc*, %struct.proc** }>           ; type %7
18        %8 = type <{ %struct.thread*, %struct.thread** }>               ; type %8
19        %9 = type <{ %struct.prison*, %struct.prison** }>               ; type %9
20        %10 = type <{ %struct.prison* }>                ; type %10
21        %11 = type <{ %struct.task* }>          ; type %11
22        %12 = type <{ %struct.osd*, %struct.osd** }>            ; type %12
23        %13 = type <{ %struct.proc* }>          ; type %13
24        %14 = type <{ %struct.ksiginfo*, %struct.ksiginfo** }>          ; type %14
25        %15 = type <{ %struct.pv_chunk*, %struct.pv_chunk** }>          ; type %15
26        %16 = type <{ %struct.pgrp*, %struct.pgrp** }>          ; type %16
27        %17 = type <{ %struct.knote*, %struct.knote** }>                ; type %17
28        %18 = type <{ %struct.ktr_request*, %struct.ktr_request** }>            ; type %18
29        %19 = type <{ %struct.mqueue_notifier* }>               ; type %19
30        %20 = type <{ %struct.turnstile* }>             ; type %20
31        %21 = type <{ %struct.namecache* }>             ; type %21
32        %22 = type <{ %struct.namecache*, %struct.namecache** }>                ; type %22
33        %23 = type <{ %struct.lockf*, %struct.lockf** }>                ; type %23
34        %24 = type <{ %struct.lockf_entry*, %struct.lockf_entry** }>            ; type %24
35        %25 = type <{ %struct.lockf_edge*, %struct.lockf_edge** }>              ; type %25
36        %struct.__siginfo = type <{ i32, i32, i32, i32, i32, i32, i8*, %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 <{ %struct.bufobj*, i64, i8*, i8*, i32, i8, i8, i8, i8, i64, i64, void (%struct.buf*)*, i64, i64, %struct.buflists, %struct.buf*, %struct.buf*, i32, i8, i8, i8, i8, %struct.buflists, i16, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, %struct.lock, i64, i64, i8*, i32, i8, i8, i8, i8, i64, %struct.vnode*, i32, i32, %struct.ucred*, %struct.ucred*, i8*, %union.pager_info, i8, i8, i8, i8, %union.anon, [32 x %struct.vm_page*], i32, i8, i8, i8, i8, %struct.workhead, i8*, i8*, i8*, i32, i8, i8, i8, i8 }>
45        %struct.buf_ops = type <{ i8*, i32 (%struct.buf*)*, void (%struct.bufobj*, %struct.buf*)*, i32 (%struct.bufobj*, i32)*, void (%struct.bufobj*, %struct.buf*)* }>
46        %struct.buflists = type <{ %struct.buf*, %struct.buf** }>
47        %struct.bufobj = type <{ %struct.mtx, %struct.bufv, %struct.bufv, i64, i32, i8, i8, i8, i8, %struct.buf_ops*, i32, i8, i8, i8, i8, %struct.vm_object*, %6, i8*, %struct.vnode* }>
48        %struct.bufv = type <{ %struct.buflists, %struct.buf*, i32, i8, i8, i8, i8 }>
49        %struct.callout = type <{ %union.anon, i32, i8, i8, i8, i8, i8*, void (i8*)*, %struct.lock_object*, i32, i32 }>
50        %struct.cdev_privdata = type opaque
51        %struct.cluster_save = type <{ i64, i64, i8*, i32, i8, i8, i8, i8, %struct.buf** }>
52        %struct.componentname = type <{ i64, i64, %struct.thread*, %struct.ucred*, i32, i8, i8, i8, i8, i8*, i8*, i64, i64 }>
53        %struct.cpuset = type opaque
54        %struct.cv = type <{ i8*, i32, i8, i8, i8, i8 }>
55        %struct.fid = type <{ i16, i16, [16 x i8] }>
56        %struct.file = type <{ i8*, %struct.fileops*, %struct.ucred*, %struct.vnode*, i16, i16, i32, i32, i32, i64, %struct.cdev_privdata*, i64, i8* }>
57        %struct.filedesc = type opaque
58        %struct.filedesc_to_leader = type opaque
59        %struct.fileops = type <{ i32 (%struct.file*, %struct.uio*, %struct.ucred*, i32, %struct.thread*)*, i32 (%struct.file*, %struct.uio*, %struct.ucred*, i32, %struct.thread*)*, i32 (%struct.file*, i64, %struct.ucred*, %struct.thread*)*, i32 (%struct.file*, i64, i8*, %struct.ucred*, %struct.thread*)*, i32 (%struct.file*, i32, %struct.ucred*, %struct.thread*)*, i32 (%struct.file*, %struct.knote*)*, i32 (%struct.file*, %struct.stat*, %struct.ucred*, %struct.thread*)*, i32 (%struct.file*, %struct.thread*)*, i32, i8, i8, i8, i8 }>
60        %struct.filterops = type <{ i32, i8, i8, i8, i8, i32 (%struct.knote*)*, void (%struct.knote*)*, i32 (%struct.knote*, i64)* }>
61        %struct.flock = type <{ i64, i64, i32, i16, i16, i32, i8, i8, i8, i8 }>
62        %struct.freelst = type <{ %struct.vnode*, %struct.vnode** }>
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 <{ i8*, 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, i8* }>
75        %struct.klist = type <{ %struct.knote* }>
76        %struct.knlist = type <{ %struct.klist, void (i8*)*, void (i8*)*, void (i8*)*, void (i8*)*, i8* }>
77        %struct.knote = type <{ %struct.klist, %struct.klist, %struct.knlist*, %17, %struct.kqueue*, %struct.kevent, i32, i32, i64, %union.sigval, %struct.filterops*, i8* }>
78        %struct.kqueue = type opaque
79        %struct.ksiginfo = type <{ %14, %struct.__siginfo, i32, i8, i8, i8, i8, %struct.sigqueue* }>
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 <{ i8*, i32, i32, %struct.witness* }>
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, %struct.lockf_entry*, %struct.lockf_entry* }>
89        %struct.lockf_edge_list = type <{ %struct.lockf_edge* }>
90        %struct.lockf_entry = type <{ i16, i16, i8, i8, i8, i8, i64, i64, %struct.lock_owner*, %struct.vnode*, %struct.inode*, %struct.task*, %24, %struct.lockf_edge_list, %struct.lockf_edge_list, i32, i8, i8, i8, i8 }>
91        %struct.lockf_entry_list = type <{ %struct.lockf_entry* }>
92        %struct.lpohead = type <{ %struct.lock_profile_object* }>
93        %struct.md_page = type <{ %4 }>
94        %struct.mdproc = type <{ %struct.cv*, %struct.system_segment_descriptor }>
95        %struct.mdthread = type <{ i32, i8, i8, i8, i8, i64 }>
96        %struct.mntarg = type opaque
97        %struct.mntlist = type <{ %struct.mount*, %struct.mount** }>
98        %struct.mount = type <{ %struct.mtx, i32, i8, i8, i8, i8, %struct.mntlist, %struct.vfsops*, %struct.vfsconf*, %struct.vnode*, %struct.vnode*, i32, i8, i8, i8, i8, %struct.freelst, i32, i32, i32, i32, i32, i32, %struct.vfsoptlist*, %struct.vfsoptlist*, i32, i8, i8, i8, i8, %struct.statfs, %struct.ucred*, i8*, i64, i32, i8, i8, i8, i8, %struct.netexport*, %struct.label*, i32, i32, i32, i32, %struct.thread*, i8*, %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, i8**, %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, %struct.session*, %struct.sigiolst, i32, i32, %struct.mtx }>
109        %struct.plimit = type opaque
110        %struct.pmap = type <{ %struct.mtx, i64*, %15, i32, i8, i8, i8, i8, %struct.bintime, %struct.vm_page* }>
111        %struct.prison = type <{ %9, i32, i32, i32, i32, %10, %9, %struct.prison*, %struct.mtx, %struct.task, %struct.osd, %struct.cpuset*, %struct.vnet*, %struct.vnode*, i32, i32, %struct.in_addr*, %struct.in6_addr*, [4 x i8*], 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, %struct.ucred*, %struct.filedesc*, %struct.filedesc_to_leader*, %struct.pstats*, %struct.plimit*, %struct.callout, %struct.sigacts*, i32, i32, i32, i8, i8, i8, i8, %7, %7, %struct.proc*, %7, %13, %struct.mtx, %struct.ksiginfo*, %struct.sigqueue, i32, i8, i8, i8, i8, %struct.vmspace*, i32, i8, i8, i8, i8, %struct.itimerval, %struct.rusage, %struct.rusage_ext, %struct.rusage_ext, i32, i32, i32, i8, i8, i8, i8, %struct.vnode*, %struct.ucred*, %struct.vnode*, i32, i8, i8, i8, i8, %struct.sigiolst, i32, i32, i64, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, %struct.nlminfo*, %struct.kaioinfo*, %struct.thread*, i32, i8, i8, i8, i8, %struct.thread*, i32, i32, %struct.itimers*, i32, i32, [20 x i8], i8, i8, i8, i8, %struct.pgrp*, %struct.sysentvec*, %struct.pargs*, 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, %struct.proc*, %struct.proc*, i8*, %struct.label*, %struct.p_sched*, %18, %19, %struct.kdtrace_proc*, %struct.cv }>
113        %struct.pstats = type opaque
114        %struct.pv_chunk = type <{ %struct.pmap*, %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 <{ %struct.selfd*, %struct.selfd** }>
120        %struct.selinfo = type <{ %struct.selfdlist, %struct.knlist, %struct.mtx* }>
121        %struct.seltd = type opaque
122        %struct.session = type <{ i32, i8, i8, i8, i8, %struct.proc*, %struct.vnode*, %struct.tty*, i32, [24 x i8], i8, i8, i8, i8, %struct.mtx }>
123        %struct.shmmap_state = type opaque
124        %struct.sigacts = type <{ [128 x void (i32)*], [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 <{ i8*, i64, i32, i8, i8, i8, i8 }>
126        %struct.sigio = type <{ %union.sigval, %struct.sigiolst, %struct.sigio**, %struct.ucred*, i32, i8, i8, i8, i8 }>
127        %struct.sigiolst = type <{ %struct.sigio* }>
128        %struct.sigqueue = type <{ %struct.__sigset, %struct.__sigset, %14, %struct.proc*, 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 <{ %struct.thread*, i32, i8, i8, i8, i8, i8*, i64, i64, i32 (%struct.sysctl_req*, i8*, i64)*, i8*, i64, i64, i32 (%struct.sysctl_req*, i8*, i64)*, 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, void (i8*, i32)*, i8* }>
137        %struct.td_sched = type opaque
138        %struct.thread = type <{ %struct.mtx*, %struct.proc*, %8, %8, %8, %8, %struct.cpuset*, %struct.seltd*, %struct.sleepqueue*, %struct.turnstile*, %struct.umtx_q*, i32, i8, i8, i8, i8, %struct.sigqueue, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8*, i8*, i8, i8, i8, i8, i16, i16, i16, i8, i8, i8, i8, i8, i8, %struct.turnstile*, i8*, %20, %struct.lock_list_entry*, i32, i32, %struct.ucred*, 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], %struct.file*, i32, i32, %struct.osd, i8, i8, i8, i8, i8, i8, i8, i8, %struct.pcb*, i32, i8, i8, i8, i8, [2 x i64], %struct.callout, %struct.trapframe*, %struct.vm_object*, i64, i32, i8, i8, i8, i8, %struct.vm_object*, i64, i32, i32, %struct.mdthread, %struct.td_sched*, %struct.kaudit_record*, i32, i8, i8, i8, i8, [2 x %struct.lpohead], %struct.kdtrace_thread*, i32, i8, i8, i8, i8, %struct.vnet*, i8* }>
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, %struct.uidinfo*, %struct.uidinfo*, %struct.prison*, %struct.vimage*, i32, i8, i8, i8, i8, [2 x i8*], %struct.label*, %struct.auditinfo_addr, i32*, i32, i8, i8, i8, i8 }>
143        %struct.uidinfo = type opaque
144        %struct.uio = type <{ %struct.iovec*, i32, i8, i8, i8, i8, i64, i64, i32, i32, %struct.thread* }>
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, %struct.vfsops*, i32, i32, i32, i8, i8, i8, i8, %struct.vfsoptdecl*, %struct.vfsconfhead }>
148        %struct.vfsconfhead = type <{ %struct.vfsconf*, %struct.vfsconf** }>
149        %struct.vfsops = type <{ i32 (%struct.mount*)*, i32 (%struct.mntarg*, i8*, i32)*, i32 (%struct.mount*, i32)*, i32 (%struct.mount*, i32, %struct.vnode**)*, i32 (%struct.mount*, i32, i32, i8*)*, i32 (%struct.mount*, %struct.statfs*)*, i32 (%struct.mount*, i32)*, i32 (%struct.mount*, i32, i32, %struct.vnode**)*, i32 (%struct.mount*, %struct.fid*, %struct.vnode**)*, i32 (%struct.mount*, %struct.sockaddr*, i32*, %struct.ucred**, i32*, i32**)*, i32 (%struct.vfsconf*)*, i32 (%struct.vfsconf*)*, i32 (%struct.mount*, i32, %struct.vnode*, i32, i8*)*, i32 (%struct.mount*, i32, %struct.sysctl_req*)*, void (%struct.mount*)* }>
150        %struct.vfsopt = type <{ %struct.vfsoptlist, i8*, i8*, i32, i32, i32, i8, i8, i8, i8 }>
151        %struct.vfsoptdecl = type opaque
152        %struct.vfsoptlist = type <{ %struct.vfsopt*, %struct.vfsopt** }>
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, %struct.vm_map_entry*, %struct.pmap*, %struct.vm_map_entry* }>
155        %struct.vm_map_entry = type <{ %struct.vm_map_entry*, %struct.vm_map_entry*, %struct.vm_map_entry*, %struct.vm_map_entry*, i64, i64, i64, i64, i64, %union.sigval, i64, i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i64, %struct.uidinfo* }>
156        %struct.vm_object = type <{ %struct.mtx, %1, %2, %1, %3, %struct.vm_page*, i64, i32, i32, i32, i8, i8, i16, i16, i16, i32, %struct.vm_object*, i64, %1, %5, %struct.vm_page*, i8*, %union.anon, %struct.uidinfo*, i64 }>
157        %struct.vm_page = type <{ %3, %3, %struct.vm_page*, %struct.vm_page*, %struct.vm_object*, 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, %struct.shmmap_state*, i64, i64, i64, i64, i8*, i8*, i8*, i32, i8, i8, i8, i8, %struct.pmap }>
160        %struct.vnet = type opaque
161        %struct.vnode = type <{ i32, i8, i8, i8, i8, i8*, %struct.vop_vector*, i8*, %struct.mount*, %struct.freelst, %union.sigval, %struct.freelst, i32, i8, i8, i8, i8, %21, %22, %struct.namecache*, i64, i64, i64, i32, i8, i8, i8, i8, %struct.lock, %struct.mtx, %struct.lock*, i32, i32, i64, i64, i32, i8, i8, i8, i8, %struct.freelst, %struct.bufobj, %struct.vpollinfo*, %struct.label*, %struct.lockf* }>
162        %struct.vnodeop_desc = type <{ i8*, i32, i8, i8, i8, i8, i32 (%struct.vop_generic_args*)*, i32*, i32, i32, i32, i32 }>
163        %struct.vop_access_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, %struct.ucred*, %struct.thread* }>
164        %struct.vop_aclcheck_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, %struct.acl*, %struct.ucred*, %struct.thread* }>
165        %struct.vop_advlock_args = type <{ %struct.vop_generic_args, %struct.vnode*, i8*, i32, i8, i8, i8, i8, %struct.flock*, i32, i8, i8, i8, i8 }>
166        %struct.vop_advlockasync_args = type <{ %struct.vop_generic_args, %struct.vnode*, i8*, i32, i8, i8, i8, i8, %struct.flock*, i32, i8, i8, i8, i8, %struct.task*, i8** }>
167        %struct.vop_bmap_args = type <{ %struct.vop_generic_args, %struct.vnode*, i64, %struct.bufobj**, i64*, i32*, i32* }>
168        %struct.vop_cachedlookup_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.vnode**, %struct.componentname* }>
169        %struct.vop_create_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.vnode**, %struct.componentname*, %struct.vattr* }>
170        %struct.vop_deleteextattr_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, i8*, %struct.ucred*, %struct.thread* }>
171        %struct.vop_fsync_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, %struct.thread* }>
172        %struct.vop_generic_args = type <{ %struct.vnodeop_desc* }>
173        %struct.vop_getattr_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.vattr*, %struct.ucred* }>
174        %struct.vop_getextattr_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, i8*, %struct.uio*, i64*, %struct.ucred*, %struct.thread* }>
175        %struct.vop_getpages_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.vm_page**, i32, i32, i64 }>
176        %struct.vop_getwritemount_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.mount** }>
177        %struct.vop_inactive_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.thread* }>
178        %struct.vop_ioctl_args = type <{ %struct.vop_generic_args, %struct.vnode*, i64, i8*, i32, i8, i8, i8, i8, %struct.ucred*, %struct.thread* }>
179        %struct.vop_islocked_args = type <{ %struct.vop_generic_args, %struct.vnode* }>
180        %struct.vop_kqfilter_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.knote* }>
181        %struct.vop_link_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.vnode*, %struct.componentname* }>
182        %struct.vop_listextattr_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, %struct.uio*, i64*, %struct.ucred*, %struct.thread* }>
183        %struct.vop_lock1_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, i8*, i32, i8, i8, i8, i8 }>
184        %struct.vop_open_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, %struct.ucred*, %struct.thread*, %struct.file* }>
185        %struct.vop_openextattr_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.ucred*, %struct.thread* }>
186        %struct.vop_pathconf_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, i64* }>
187        %struct.vop_putpages_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.vm_page**, i32, i32, i32*, i64 }>
188        %struct.vop_read_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.uio*, i32, i8, i8, i8, i8, %struct.ucred* }>
189        %struct.vop_readdir_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.uio*, %struct.ucred*, i32*, i32*, i64** }>
190        %struct.vop_readlink_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.uio*, %struct.ucred* }>
191        %struct.vop_reallocblks_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.cluster_save* }>
192        %struct.vop_rename_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.vnode*, %struct.componentname*, %struct.vnode*, %struct.vnode*, %struct.componentname* }>
193        %struct.vop_revoke_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8 }>
194        %struct.vop_setextattr_args = type <{ %struct.vop_generic_args, %struct.vnode*, i32, i8, i8, i8, i8, i8*, %struct.uio*, %struct.ucred*, %struct.thread* }>
195        %struct.vop_setlabel_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.label*, %struct.ucred*, %struct.thread* }>
196        %struct.vop_strategy_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.buf* }>
197        %struct.vop_symlink_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.vnode**, %struct.componentname*, %struct.vattr*, i8* }>
198        %struct.vop_vector = type <{ %struct.vop_vector*, i32 (%struct.vop_generic_args*)*, i32 (%struct.vop_islocked_args*)*, i32 (%struct.vop_cachedlookup_args*)*, i32 (%struct.vop_cachedlookup_args*)*, i32 (%struct.vop_create_args*)*, i32 (%struct.vop_whiteout_args*)*, i32 (%struct.vop_create_args*)*, i32 (%struct.vop_open_args*)*, i32 (%struct.vop_access_args*)*, i32 (%struct.vop_access_args*)*, i32 (%struct.vop_access_args*)*, i32 (%struct.vop_getattr_args*)*, i32 (%struct.vop_getattr_args*)*, i32 (%struct.vop_islocked_args*)*, i32 (%struct.vop_read_args*)*, i32 (%struct.vop_read_args*)*, i32 (%struct.vop_ioctl_args*)*, i32 (%struct.vop_access_args*)*, i32 (%struct.vop_kqfilter_args*)*, i32 (%struct.vop_revoke_args*)*, i32 (%struct.vop_fsync_args*)*, i32 (%struct.vop_link_args*)*, i32 (%struct.vop_link_args*)*, i32 (%struct.vop_rename_args*)*, i32 (%struct.vop_create_args*)*, i32 (%struct.vop_link_args*)*, i32 (%struct.vop_symlink_args*)*, i32 (%struct.vop_readdir_args*)*, i32 (%struct.vop_readlink_args*)*, i32 (%struct.vop_inactive_args*)*, i32 (%struct.vop_inactive_args*)*, i32 (%struct.vop_lock1_args*)*, i32 (%struct.vop_revoke_args*)*, i32 (%struct.vop_bmap_args*)*, i32 (%struct.vop_strategy_args*)*, i32 (%struct.vop_getwritemount_args*)*, i32 (%struct.vop_islocked_args*)*, i32 (%struct.vop_pathconf_args*)*, i32 (%struct.vop_advlock_args*)*, i32 (%struct.vop_advlockasync_args*)*, i32 (%struct.vop_reallocblks_args*)*, i32 (%struct.vop_getpages_args*)*, i32 (%struct.vop_putpages_args*)*, i32 (%struct.vop_aclcheck_args*)*, i32 (%struct.vop_aclcheck_args*)*, i32 (%struct.vop_aclcheck_args*)*, i32 (%struct.vop_access_args*)*, i32 (%struct.vop_getextattr_args*)*, i32 (%struct.vop_listextattr_args*)*, i32 (%struct.vop_openextattr_args*)*, i32 (%struct.vop_deleteextattr_args*)*, i32 (%struct.vop_setextattr_args*)*, i32 (%struct.vop_setlabel_args*)*, i32 (%struct.vop_vptofh_args*)*, i32 (%struct.vop_vptocnp_args*)* }>
199        %struct.vop_vptocnp_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.vnode**, %struct.ucred*, i8*, i32* }>
200        %struct.vop_vptofh_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.fid* }>
201        %struct.vop_whiteout_args = type <{ %struct.vop_generic_args, %struct.vnode*, %struct.componentname*, 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 <{ %struct.worklist* }>
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] }>
209
210define i32 @vlrureclaim(%struct.mount* %mp) nounwind {
211entry:
212        br i1 undef, label %if.then11, label %do.end
213
214if.then11:              ; preds = %entry
215        br label %do.end
216
217do.end:         ; preds = %if.then11, %entry
218        br label %while.cond.outer
219
220while.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
223
224while.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
228
229while.body:             ; preds = %while.cond
230        br label %while.cond27
231
232while.cond27:           ; preds = %while.body36, %while.body
233        br i1 undef, label %do.body288.loopexit, label %land.rhs
234
235land.rhs:               ; preds = %while.cond27
236        br i1 undef, label %while.body36, label %while.end
237
238while.body36:           ; preds = %land.rhs
239        br label %while.cond27
240
241while.end:              ; preds = %land.rhs
242        br i1 undef, label %do.body288.loopexit4, label %do.body46
243
244do.body46:              ; preds = %while.end
245        br i1 undef, label %if.else64, label %if.then53
246
247if.then53:              ; preds = %do.body46
248        br label %if.end72
249
250if.else64:              ; preds = %do.body46
251        br label %if.end72
252
253if.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
256
257if.end111:              ; preds = %if.end72
258        br i1 undef, label %lor.lhs.false, label %do.body145
259
260lor.lhs.false:          ; preds = %if.end111
261        br i1 undef, label %lor.lhs.false122, label %do.body145
262
263lor.lhs.false122:               ; preds = %lor.lhs.false
264        br i1 undef, label %lor.lhs.false128, label %do.body145
265
266lor.lhs.false128:               ; preds = %lor.lhs.false122
267        br i1 undef, label %do.body162, label %land.lhs.true
268
269land.lhs.true:          ; preds = %lor.lhs.false128
270        br i1 undef, label %do.body145, label %do.body162
271
272do.body145:             ; preds = %land.lhs.true, %lor.lhs.false122, %lor.lhs.false, %if.end111
273        br i1 undef, label %if.then156, label %next_iter
274
275if.then156:             ; preds = %do.body145
276        br label %next_iter
277
278do.body162:             ; preds = %land.lhs.true, %lor.lhs.false128
279        br i1 undef, label %if.then173, label %do.end177
280
281if.then173:             ; preds = %do.body162
282        br label %do.end177
283
284do.end177:              ; preds = %if.then173, %do.body162
285        br i1 undef, label %do.body185, label %if.then182
286
287if.then182:             ; preds = %do.end177
288        br label %next_iter_mntunlocked
289
290do.body185:             ; preds = %do.end177
291        br i1 undef, label %if.then196, label %do.end202
292
293if.then196:             ; preds = %do.body185
294        br label %do.end202
295
296do.end202:              ; preds = %if.then196, %do.body185
297        br i1 undef, label %lor.lhs.false207, label %if.then231
298
299lor.lhs.false207:               ; preds = %do.end202
300        br i1 undef, label %lor.lhs.false214, label %if.then231
301
302lor.lhs.false214:               ; preds = %lor.lhs.false207
303        br i1 undef, label %do.end236, label %land.lhs.true221
304
305land.lhs.true221:               ; preds = %lor.lhs.false214
306        br i1 undef, label %if.then231, label %do.end236
307
308if.then231:             ; preds = %land.lhs.true221, %lor.lhs.false207, %do.end202
309        br label %next_iter_mntunlocked
310
311do.end236:              ; preds = %land.lhs.true221, %lor.lhs.false214
312        br label %next_iter_mntunlocked
313
314next_iter_mntunlocked:          ; preds = %do.end236, %if.then231, %if.then182
315        br i1 undef, label %yield, label %do.body269
316
317next_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
321
322do.body253:             ; preds = %next_iter
323        br i1 undef, label %if.then264, label %yield
324
325if.then264:             ; preds = %do.body253
326        br label %yield
327
328yield:          ; preds = %if.then264, %do.body253, %next_iter_mntunlocked
329        br label %do.body269
330
331do.body269:             ; preds = %yield, %next_iter_mntunlocked
332        br i1 undef, label %if.then280, label %while.cond.outer.backedge
333
334if.then280:             ; preds = %do.body269
335        br label %while.cond.outer.backedge
336
337while.cond.outer.backedge:              ; preds = %if.then280, %do.body269
338        br label %while.cond.outer
339
340do.body288.loopexit:            ; preds = %while.cond27
341        br label %do.body288
342
343do.body288.loopexit4:           ; preds = %while.end, %while.cond
344        br label %do.body288
345
346do.body288:             ; preds = %do.body288.loopexit4, %do.body288.loopexit
347        br i1 undef, label %if.then299, label %do.end303
348
349if.then299:             ; preds = %do.body288
350        br label %do.end303
351
352do.end303:              ; preds = %if.then299, %do.body288
353        ret i32 undef
354}
Note: See TracBrowser for help on using the repository browser.