~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/test/CodeGen/ARM/2009-07-18-RewriterBug.ll

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-03-12 11:30:04 UTC
  • mfrom: (0.41.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100312113004-b0fop4bkycszdd0z
Tags: 0.96~rc1+dfsg-0ubuntu1
* New upstream RC - FFE (LP: #537636):
  - Add OfficialDatabaseOnly option to clamav-base.postinst.in
  - Add LocalSocketGroup option to clamav-base.postinst.in
  - Add LocalSocketMode option to clamav-base.postinst.in
  - Add CrossFilesystems option to clamav-base.postinst.in
  - Add ClamukoScannerCount option to clamav-base.postinst.in
  - Add BytecodeSecurity opiton to clamav-base.postinst.in
  - Add DetectionStatsHostID option to clamav-freshclam.postinst.in
  - Add Bytecode option to clamav-freshclam.postinst.in
  - Add MilterSocketGroup option to clamav-milter.postinst.in
  - Add MilterSocketMode option to clamav-milter.postinst.in
  - Add ReportHostname option to clamav-milter.postinst.in
  - Bump libclamav SO version to 6.1.0 in libclamav6.install
  - Drop clamdmon from clamav.examples (no longer shipped by upstream)
  - Drop libclamav.a from libclamav-dev.install (not built by upstream)
  - Update SO version for lintian override for libclamav6
  - Add new Bytecode Testing Tool, usr/bin/clambc, to clamav.install
  - Add build-depends on python and python-setuptools for new test suite
  - Update debian/copyright for the embedded copy of llvm (using the system
    llvm is not currently feasible)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: llc < %s -mtriple=armv6-apple-darwin10 -mattr=+vfp2 | grep vcmpe | count 13
 
2
 
 
3
        %struct.EDGE_PAIR = type { %struct.edge_rec*, %struct.edge_rec* }
 
4
        %struct.VEC2 = type { double, double, double }
 
5
        %struct.VERTEX = type { %struct.VEC2, %struct.VERTEX*, %struct.VERTEX* }
 
6
        %struct.edge_rec = type { %struct.VERTEX*, %struct.edge_rec*, i32, i8* }
 
7
@avail_edge = internal global %struct.edge_rec* null            ; <%struct.edge_rec**> [#uses=6]
 
8
@_2E_str7 = internal constant [21 x i8] c"ERROR: Only 1 point!\00", section "__TEXT,__cstring,cstring_literals", align 1                ; <[21 x i8]*> [#uses=1]
 
9
@llvm.used = appending global [1 x i8*] [i8* bitcast (void (%struct.EDGE_PAIR*, %struct.VERTEX*, %struct.VERTEX*)* @build_delaunay to i8*)], section "llvm.metadata"            ; <[1 x i8*]*> [#uses=0]
 
10
 
 
11
define arm_apcscc void @build_delaunay(%struct.EDGE_PAIR* noalias nocapture sret %agg.result, %struct.VERTEX* %tree, %struct.VERTEX* %extra) nounwind {
 
12
entry:
 
13
        %delright = alloca %struct.EDGE_PAIR, align 8           ; <%struct.EDGE_PAIR*> [#uses=3]
 
14
        %delleft = alloca %struct.EDGE_PAIR, align 8            ; <%struct.EDGE_PAIR*> [#uses=3]
 
15
        %0 = icmp eq %struct.VERTEX* %tree, null                ; <i1> [#uses=1]
 
16
        br i1 %0, label %bb8, label %bb
 
17
 
 
18
bb:             ; preds = %entry
 
19
        %1 = getelementptr %struct.VERTEX* %tree, i32 0, i32 2          ; <%struct.VERTEX**> [#uses=1]
 
20
        %2 = load %struct.VERTEX** %1, align 4          ; <%struct.VERTEX*> [#uses=2]
 
21
        %3 = icmp eq %struct.VERTEX* %2, null           ; <i1> [#uses=1]
 
22
        br i1 %3, label %bb7, label %bb1.i
 
23
 
 
24
bb1.i:          ; preds = %bb1.i, %bb
 
25
        %tree_addr.0.i = phi %struct.VERTEX* [ %5, %bb1.i ], [ %tree, %bb ]             ; <%struct.VERTEX*> [#uses=3]
 
26
        %4 = getelementptr %struct.VERTEX* %tree_addr.0.i, i32 0, i32 1         ; <%struct.VERTEX**> [#uses=1]
 
27
        %5 = load %struct.VERTEX** %4, align 4          ; <%struct.VERTEX*> [#uses=2]
 
28
        %6 = icmp eq %struct.VERTEX* %5, null           ; <i1> [#uses=1]
 
29
        br i1 %6, label %get_low.exit, label %bb1.i
 
30
 
 
31
get_low.exit:           ; preds = %bb1.i
 
32
        call arm_apcscc  void @build_delaunay(%struct.EDGE_PAIR* noalias sret %delright, %struct.VERTEX* %2, %struct.VERTEX* %extra) nounwind
 
33
        %7 = getelementptr %struct.VERTEX* %tree, i32 0, i32 1          ; <%struct.VERTEX**> [#uses=1]
 
34
        %8 = load %struct.VERTEX** %7, align 4          ; <%struct.VERTEX*> [#uses=1]
 
35
        call arm_apcscc  void @build_delaunay(%struct.EDGE_PAIR* noalias sret %delleft, %struct.VERTEX* %8, %struct.VERTEX* %tree) nounwind
 
36
        %9 = getelementptr %struct.EDGE_PAIR* %delleft, i32 0, i32 0            ; <%struct.edge_rec**> [#uses=1]
 
37
        %10 = load %struct.edge_rec** %9, align 8               ; <%struct.edge_rec*> [#uses=2]
 
38
        %11 = getelementptr %struct.EDGE_PAIR* %delleft, i32 0, i32 1           ; <%struct.edge_rec**> [#uses=1]
 
39
        %12 = load %struct.edge_rec** %11, align 4              ; <%struct.edge_rec*> [#uses=1]
 
40
        %13 = getelementptr %struct.EDGE_PAIR* %delright, i32 0, i32 0          ; <%struct.edge_rec**> [#uses=1]
 
41
        %14 = load %struct.edge_rec** %13, align 8              ; <%struct.edge_rec*> [#uses=1]
 
42
        %15 = getelementptr %struct.EDGE_PAIR* %delright, i32 0, i32 1          ; <%struct.edge_rec**> [#uses=1]
 
43
        %16 = load %struct.edge_rec** %15, align 4              ; <%struct.edge_rec*> [#uses=2]
 
44
        br label %bb.i
 
45
 
 
46
bb.i:           ; preds = %bb4.i, %get_low.exit
 
47
        %rdi_addr.0.i = phi %struct.edge_rec* [ %14, %get_low.exit ], [ %72, %bb4.i ]           ; <%struct.edge_rec*> [#uses=2]
 
48
        %ldi_addr.1.i = phi %struct.edge_rec* [ %12, %get_low.exit ], [ %ldi_addr.0.i, %bb4.i ]         ; <%struct.edge_rec*> [#uses=3]
 
49
        %17 = getelementptr %struct.edge_rec* %rdi_addr.0.i, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
50
        %18 = load %struct.VERTEX** %17, align 4                ; <%struct.VERTEX*> [#uses=3]
 
51
        %19 = ptrtoint %struct.edge_rec* %ldi_addr.1.i to i32           ; <i32> [#uses=1]
 
52
        %20 = getelementptr %struct.VERTEX* %18, i32 0, i32 0, i32 0            ; <double*> [#uses=1]
 
53
        %21 = load double* %20, align 4         ; <double> [#uses=3]
 
54
        %22 = getelementptr %struct.VERTEX* %18, i32 0, i32 0, i32 1            ; <double*> [#uses=1]
 
55
        %23 = load double* %22, align 4         ; <double> [#uses=3]
 
56
        br label %bb2.i
 
57
 
 
58
bb1.i1:         ; preds = %bb2.i
 
59
        %24 = ptrtoint %struct.edge_rec* %ldi_addr.0.i to i32           ; <i32> [#uses=2]
 
60
        %25 = add i32 %24, 48           ; <i32> [#uses=1]
 
61
        %26 = and i32 %25, 63           ; <i32> [#uses=1]
 
62
        %27 = and i32 %24, -64          ; <i32> [#uses=1]
 
63
        %28 = or i32 %26, %27           ; <i32> [#uses=1]
 
64
        %29 = inttoptr i32 %28 to %struct.edge_rec*             ; <%struct.edge_rec*> [#uses=1]
 
65
        %30 = getelementptr %struct.edge_rec* %29, i32 0, i32 1         ; <%struct.edge_rec**> [#uses=1]
 
66
        %31 = load %struct.edge_rec** %30, align 4              ; <%struct.edge_rec*> [#uses=1]
 
67
        %32 = ptrtoint %struct.edge_rec* %31 to i32             ; <i32> [#uses=2]
 
68
        %33 = add i32 %32, 16           ; <i32> [#uses=1]
 
69
        %34 = and i32 %33, 63           ; <i32> [#uses=1]
 
70
        %35 = and i32 %32, -64          ; <i32> [#uses=1]
 
71
        %36 = or i32 %34, %35           ; <i32> [#uses=2]
 
72
        %37 = inttoptr i32 %36 to %struct.edge_rec*             ; <%struct.edge_rec*> [#uses=2]
 
73
        br label %bb2.i
 
74
 
 
75
bb2.i:          ; preds = %bb1.i1, %bb.i
 
76
        %ldi_addr.1.pn.i = phi %struct.edge_rec* [ %ldi_addr.1.i, %bb.i ], [ %37, %bb1.i1 ]             ; <%struct.edge_rec*> [#uses=1]
 
77
        %.pn6.in.in.i = phi i32 [ %19, %bb.i ], [ %36, %bb1.i1 ]                ; <i32> [#uses=1]
 
78
        %ldi_addr.0.i = phi %struct.edge_rec* [ %ldi_addr.1.i, %bb.i ], [ %37, %bb1.i1 ]                ; <%struct.edge_rec*> [#uses=4]
 
79
        %.pn6.in.i = xor i32 %.pn6.in.in.i, 32          ; <i32> [#uses=1]
 
80
        %.pn6.i = inttoptr i32 %.pn6.in.i to %struct.edge_rec*          ; <%struct.edge_rec*> [#uses=1]
 
81
        %t1.0.in.i = getelementptr %struct.edge_rec* %ldi_addr.1.pn.i, i32 0, i32 0             ; <%struct.VERTEX**> [#uses=1]
 
82
        %t2.0.in.i = getelementptr %struct.edge_rec* %.pn6.i, i32 0, i32 0              ; <%struct.VERTEX**> [#uses=1]
 
83
        %t1.0.i = load %struct.VERTEX** %t1.0.in.i              ; <%struct.VERTEX*> [#uses=2]
 
84
        %t2.0.i = load %struct.VERTEX** %t2.0.in.i              ; <%struct.VERTEX*> [#uses=2]
 
85
        %38 = getelementptr %struct.VERTEX* %t1.0.i, i32 0, i32 0, i32 0                ; <double*> [#uses=1]
 
86
        %39 = load double* %38, align 4         ; <double> [#uses=3]
 
87
        %40 = getelementptr %struct.VERTEX* %t1.0.i, i32 0, i32 0, i32 1                ; <double*> [#uses=1]
 
88
        %41 = load double* %40, align 4         ; <double> [#uses=3]
 
89
        %42 = getelementptr %struct.VERTEX* %t2.0.i, i32 0, i32 0, i32 0                ; <double*> [#uses=1]
 
90
        %43 = load double* %42, align 4         ; <double> [#uses=1]
 
91
        %44 = getelementptr %struct.VERTEX* %t2.0.i, i32 0, i32 0, i32 1                ; <double*> [#uses=1]
 
92
        %45 = load double* %44, align 4         ; <double> [#uses=1]
 
93
        %46 = fsub double %39, %21              ; <double> [#uses=1]
 
94
        %47 = fsub double %45, %23              ; <double> [#uses=1]
 
95
        %48 = fmul double %46, %47              ; <double> [#uses=1]
 
96
        %49 = fsub double %43, %21              ; <double> [#uses=1]
 
97
        %50 = fsub double %41, %23              ; <double> [#uses=1]
 
98
        %51 = fmul double %49, %50              ; <double> [#uses=1]
 
99
        %52 = fsub double %48, %51              ; <double> [#uses=1]
 
100
        %53 = fcmp ogt double %52, 0.000000e+00         ; <i1> [#uses=1]
 
101
        br i1 %53, label %bb1.i1, label %bb3.i
 
102
 
 
103
bb3.i:          ; preds = %bb2.i
 
104
        %54 = ptrtoint %struct.edge_rec* %rdi_addr.0.i to i32           ; <i32> [#uses=1]
 
105
        %55 = xor i32 %54, 32           ; <i32> [#uses=3]
 
106
        %56 = inttoptr i32 %55 to %struct.edge_rec*             ; <%struct.edge_rec*> [#uses=2]
 
107
        %57 = getelementptr %struct.edge_rec* %56, i32 0, i32 0         ; <%struct.VERTEX**> [#uses=1]
 
108
        %58 = load %struct.VERTEX** %57, align 4                ; <%struct.VERTEX*> [#uses=2]
 
109
        %59 = getelementptr %struct.VERTEX* %58, i32 0, i32 0, i32 0            ; <double*> [#uses=1]
 
110
        %60 = load double* %59, align 4         ; <double> [#uses=1]
 
111
        %61 = getelementptr %struct.VERTEX* %58, i32 0, i32 0, i32 1            ; <double*> [#uses=1]
 
112
        %62 = load double* %61, align 4         ; <double> [#uses=1]
 
113
        %63 = fsub double %60, %39              ; <double> [#uses=1]
 
114
        %64 = fsub double %23, %41              ; <double> [#uses=1]
 
115
        %65 = fmul double %63, %64              ; <double> [#uses=1]
 
116
        %66 = fsub double %21, %39              ; <double> [#uses=1]
 
117
        %67 = fsub double %62, %41              ; <double> [#uses=1]
 
118
        %68 = fmul double %66, %67              ; <double> [#uses=1]
 
119
        %69 = fsub double %65, %68              ; <double> [#uses=1]
 
120
        %70 = fcmp ogt double %69, 0.000000e+00         ; <i1> [#uses=1]
 
121
        br i1 %70, label %bb4.i, label %bb5.i
 
122
 
 
123
bb4.i:          ; preds = %bb3.i
 
124
        %71 = getelementptr %struct.edge_rec* %56, i32 0, i32 1         ; <%struct.edge_rec**> [#uses=1]
 
125
        %72 = load %struct.edge_rec** %71, align 4              ; <%struct.edge_rec*> [#uses=1]
 
126
        br label %bb.i
 
127
 
 
128
bb5.i:          ; preds = %bb3.i
 
129
        %73 = add i32 %55, 48           ; <i32> [#uses=1]
 
130
        %74 = and i32 %73, 63           ; <i32> [#uses=1]
 
131
        %75 = and i32 %55, -64          ; <i32> [#uses=1]
 
132
        %76 = or i32 %74, %75           ; <i32> [#uses=1]
 
133
        %77 = inttoptr i32 %76 to %struct.edge_rec*             ; <%struct.edge_rec*> [#uses=1]
 
134
        %78 = getelementptr %struct.edge_rec* %77, i32 0, i32 1         ; <%struct.edge_rec**> [#uses=1]
 
135
        %79 = load %struct.edge_rec** %78, align 4              ; <%struct.edge_rec*> [#uses=1]
 
136
        %80 = ptrtoint %struct.edge_rec* %79 to i32             ; <i32> [#uses=2]
 
137
        %81 = add i32 %80, 16           ; <i32> [#uses=1]
 
138
        %82 = and i32 %81, 63           ; <i32> [#uses=1]
 
139
        %83 = and i32 %80, -64          ; <i32> [#uses=1]
 
140
        %84 = or i32 %82, %83           ; <i32> [#uses=1]
 
141
        %85 = inttoptr i32 %84 to %struct.edge_rec*             ; <%struct.edge_rec*> [#uses=1]
 
142
        %86 = getelementptr %struct.edge_rec* %ldi_addr.0.i, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
143
        %87 = load %struct.VERTEX** %86, align 4                ; <%struct.VERTEX*> [#uses=1]
 
144
        %88 = call arm_apcscc  %struct.edge_rec* @alloc_edge() nounwind         ; <%struct.edge_rec*> [#uses=6]
 
145
        %89 = getelementptr %struct.edge_rec* %88, i32 0, i32 1         ; <%struct.edge_rec**> [#uses=4]
 
146
        store %struct.edge_rec* %88, %struct.edge_rec** %89, align 4
 
147
        %90 = getelementptr %struct.edge_rec* %88, i32 0, i32 0         ; <%struct.VERTEX**> [#uses=2]
 
148
        store %struct.VERTEX* %18, %struct.VERTEX** %90, align 4
 
149
        %91 = ptrtoint %struct.edge_rec* %88 to i32             ; <i32> [#uses=5]
 
150
        %92 = add i32 %91, 16           ; <i32> [#uses=2]
 
151
        %93 = inttoptr i32 %92 to %struct.edge_rec*             ; <%struct.edge_rec*> [#uses=2]
 
152
        %94 = add i32 %91, 48           ; <i32> [#uses=1]
 
153
        %95 = inttoptr i32 %94 to %struct.edge_rec*             ; <%struct.edge_rec*> [#uses=2]
 
154
        %96 = getelementptr %struct.edge_rec* %93, i32 0, i32 1         ; <%struct.edge_rec**> [#uses=1]
 
155
        store %struct.edge_rec* %95, %struct.edge_rec** %96, align 4
 
156
        %97 = add i32 %91, 32           ; <i32> [#uses=1]
 
157
        %98 = inttoptr i32 %97 to %struct.edge_rec*             ; <%struct.edge_rec*> [#uses=3]
 
158
        %99 = getelementptr %struct.edge_rec* %98, i32 0, i32 1         ; <%struct.edge_rec**> [#uses=1]
 
159
        store %struct.edge_rec* %98, %struct.edge_rec** %99, align 4
 
160
        %100 = getelementptr %struct.edge_rec* %98, i32 0, i32 0                ; <%struct.VERTEX**> [#uses=1]
 
161
        store %struct.VERTEX* %87, %struct.VERTEX** %100, align 4
 
162
        %101 = getelementptr %struct.edge_rec* %95, i32 0, i32 1                ; <%struct.edge_rec**> [#uses=1]
 
163
        store %struct.edge_rec* %93, %struct.edge_rec** %101, align 4
 
164
        %102 = load %struct.edge_rec** %89, align 4             ; <%struct.edge_rec*> [#uses=1]
 
165
        %103 = ptrtoint %struct.edge_rec* %102 to i32           ; <i32> [#uses=2]
 
166
        %104 = add i32 %103, 16         ; <i32> [#uses=1]
 
167
        %105 = and i32 %104, 63         ; <i32> [#uses=1]
 
168
        %106 = and i32 %103, -64                ; <i32> [#uses=1]
 
169
        %107 = or i32 %105, %106                ; <i32> [#uses=1]
 
170
        %108 = inttoptr i32 %107 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
171
        %109 = getelementptr %struct.edge_rec* %85, i32 0, i32 1                ; <%struct.edge_rec**> [#uses=3]
 
172
        %110 = load %struct.edge_rec** %109, align 4            ; <%struct.edge_rec*> [#uses=1]
 
173
        %111 = ptrtoint %struct.edge_rec* %110 to i32           ; <i32> [#uses=2]
 
174
        %112 = add i32 %111, 16         ; <i32> [#uses=1]
 
175
        %113 = and i32 %112, 63         ; <i32> [#uses=1]
 
176
        %114 = and i32 %111, -64                ; <i32> [#uses=1]
 
177
        %115 = or i32 %113, %114                ; <i32> [#uses=1]
 
178
        %116 = inttoptr i32 %115 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
179
        %117 = getelementptr %struct.edge_rec* %116, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
180
        %118 = load %struct.edge_rec** %117, align 4            ; <%struct.edge_rec*> [#uses=1]
 
181
        %119 = getelementptr %struct.edge_rec* %108, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
182
        %120 = load %struct.edge_rec** %119, align 4            ; <%struct.edge_rec*> [#uses=1]
 
183
        store %struct.edge_rec* %118, %struct.edge_rec** %119, align 4
 
184
        store %struct.edge_rec* %120, %struct.edge_rec** %117, align 4
 
185
        %121 = load %struct.edge_rec** %89, align 4             ; <%struct.edge_rec*> [#uses=1]
 
186
        %122 = load %struct.edge_rec** %109, align 4            ; <%struct.edge_rec*> [#uses=1]
 
187
        store %struct.edge_rec* %121, %struct.edge_rec** %109, align 4
 
188
        store %struct.edge_rec* %122, %struct.edge_rec** %89, align 4
 
189
        %123 = xor i32 %91, 32          ; <i32> [#uses=1]
 
190
        %124 = inttoptr i32 %123 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=3]
 
191
        %125 = getelementptr %struct.edge_rec* %124, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
192
        %126 = load %struct.edge_rec** %125, align 4            ; <%struct.edge_rec*> [#uses=1]
 
193
        %127 = ptrtoint %struct.edge_rec* %126 to i32           ; <i32> [#uses=2]
 
194
        %128 = add i32 %127, 16         ; <i32> [#uses=1]
 
195
        %129 = and i32 %128, 63         ; <i32> [#uses=1]
 
196
        %130 = and i32 %127, -64                ; <i32> [#uses=1]
 
197
        %131 = or i32 %129, %130                ; <i32> [#uses=1]
 
198
        %132 = inttoptr i32 %131 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
199
        %133 = getelementptr %struct.edge_rec* %ldi_addr.0.i, i32 0, i32 1              ; <%struct.edge_rec**> [#uses=3]
 
200
        %134 = load %struct.edge_rec** %133, align 4            ; <%struct.edge_rec*> [#uses=1]
 
201
        %135 = ptrtoint %struct.edge_rec* %134 to i32           ; <i32> [#uses=2]
 
202
        %136 = add i32 %135, 16         ; <i32> [#uses=1]
 
203
        %137 = and i32 %136, 63         ; <i32> [#uses=1]
 
204
        %138 = and i32 %135, -64                ; <i32> [#uses=1]
 
205
        %139 = or i32 %137, %138                ; <i32> [#uses=1]
 
206
        %140 = inttoptr i32 %139 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
207
        %141 = getelementptr %struct.edge_rec* %140, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
208
        %142 = load %struct.edge_rec** %141, align 4            ; <%struct.edge_rec*> [#uses=1]
 
209
        %143 = getelementptr %struct.edge_rec* %132, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
210
        %144 = load %struct.edge_rec** %143, align 4            ; <%struct.edge_rec*> [#uses=1]
 
211
        store %struct.edge_rec* %142, %struct.edge_rec** %143, align 4
 
212
        store %struct.edge_rec* %144, %struct.edge_rec** %141, align 4
 
213
        %145 = load %struct.edge_rec** %125, align 4            ; <%struct.edge_rec*> [#uses=1]
 
214
        %146 = load %struct.edge_rec** %133, align 4            ; <%struct.edge_rec*> [#uses=2]
 
215
        store %struct.edge_rec* %145, %struct.edge_rec** %133, align 4
 
216
        store %struct.edge_rec* %146, %struct.edge_rec** %125, align 4
 
217
        %147 = and i32 %92, 63          ; <i32> [#uses=1]
 
218
        %148 = and i32 %91, -64         ; <i32> [#uses=1]
 
219
        %149 = or i32 %147, %148                ; <i32> [#uses=1]
 
220
        %150 = inttoptr i32 %149 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
221
        %151 = getelementptr %struct.edge_rec* %150, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
222
        %152 = load %struct.edge_rec** %151, align 4            ; <%struct.edge_rec*> [#uses=1]
 
223
        %153 = ptrtoint %struct.edge_rec* %152 to i32           ; <i32> [#uses=2]
 
224
        %154 = add i32 %153, 16         ; <i32> [#uses=1]
 
225
        %155 = and i32 %154, 63         ; <i32> [#uses=1]
 
226
        %156 = and i32 %153, -64                ; <i32> [#uses=1]
 
227
        %157 = or i32 %155, %156                ; <i32> [#uses=1]
 
228
        %158 = inttoptr i32 %157 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
229
        %159 = load %struct.VERTEX** %90, align 4               ; <%struct.VERTEX*> [#uses=1]
 
230
        %160 = getelementptr %struct.edge_rec* %124, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
231
        %161 = load %struct.VERTEX** %160, align 4              ; <%struct.VERTEX*> [#uses=1]
 
232
        %162 = getelementptr %struct.edge_rec* %16, i32 0, i32 0                ; <%struct.VERTEX**> [#uses=1]
 
233
        %163 = load %struct.VERTEX** %162, align 4              ; <%struct.VERTEX*> [#uses=1]
 
234
        %164 = icmp eq %struct.VERTEX* %163, %159               ; <i1> [#uses=1]
 
235
        %rdo_addr.0.i = select i1 %164, %struct.edge_rec* %88, %struct.edge_rec* %16            ; <%struct.edge_rec*> [#uses=3]
 
236
        %165 = getelementptr %struct.edge_rec* %10, i32 0, i32 0                ; <%struct.VERTEX**> [#uses=1]
 
237
        %166 = load %struct.VERTEX** %165, align 4              ; <%struct.VERTEX*> [#uses=1]
 
238
        %167 = icmp eq %struct.VERTEX* %166, %161               ; <i1> [#uses=1]
 
239
        %ldo_addr.0.ph.i = select i1 %167, %struct.edge_rec* %124, %struct.edge_rec* %10                ; <%struct.edge_rec*> [#uses=3]
 
240
        br label %bb9.i
 
241
 
 
242
bb9.i:          ; preds = %bb25.i, %bb24.i, %bb5.i
 
243
        %lcand.2.i = phi %struct.edge_rec* [ %146, %bb5.i ], [ %lcand.1.i, %bb24.i ], [ %739, %bb25.i ]         ; <%struct.edge_rec*> [#uses=5]
 
244
        %rcand.2.i = phi %struct.edge_rec* [ %158, %bb5.i ], [ %666, %bb24.i ], [ %rcand.1.i, %bb25.i ]         ; <%struct.edge_rec*> [#uses=5]
 
245
        %basel.0.i = phi %struct.edge_rec* [ %88, %bb5.i ], [ %595, %bb24.i ], [ %716, %bb25.i ]                ; <%struct.edge_rec*> [#uses=2]
 
246
        %168 = getelementptr %struct.edge_rec* %lcand.2.i, i32 0, i32 1         ; <%struct.edge_rec**> [#uses=1]
 
247
        %169 = load %struct.edge_rec** %168, align 4            ; <%struct.edge_rec*> [#uses=3]
 
248
        %170 = getelementptr %struct.edge_rec* %basel.0.i, i32 0, i32 0         ; <%struct.VERTEX**> [#uses=3]
 
249
        %171 = load %struct.VERTEX** %170, align 4              ; <%struct.VERTEX*> [#uses=4]
 
250
        %172 = ptrtoint %struct.edge_rec* %basel.0.i to i32             ; <i32> [#uses=3]
 
251
        %173 = xor i32 %172, 32         ; <i32> [#uses=1]
 
252
        %174 = inttoptr i32 %173 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
253
        %175 = getelementptr %struct.edge_rec* %174, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=3]
 
254
        %176 = load %struct.VERTEX** %175, align 4              ; <%struct.VERTEX*> [#uses=3]
 
255
        %177 = ptrtoint %struct.edge_rec* %169 to i32           ; <i32> [#uses=1]
 
256
        %178 = xor i32 %177, 32         ; <i32> [#uses=1]
 
257
        %179 = inttoptr i32 %178 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
258
        %180 = getelementptr %struct.edge_rec* %179, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
259
        %181 = load %struct.VERTEX** %180, align 4              ; <%struct.VERTEX*> [#uses=2]
 
260
        %182 = getelementptr %struct.VERTEX* %171, i32 0, i32 0, i32 0          ; <double*> [#uses=2]
 
261
        %183 = load double* %182, align 4               ; <double> [#uses=2]
 
262
        %184 = getelementptr %struct.VERTEX* %171, i32 0, i32 0, i32 1          ; <double*> [#uses=2]
 
263
        %185 = load double* %184, align 4               ; <double> [#uses=2]
 
264
        %186 = getelementptr %struct.VERTEX* %181, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
265
        %187 = load double* %186, align 4               ; <double> [#uses=1]
 
266
        %188 = getelementptr %struct.VERTEX* %181, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
267
        %189 = load double* %188, align 4               ; <double> [#uses=1]
 
268
        %190 = getelementptr %struct.VERTEX* %176, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
269
        %191 = load double* %190, align 4               ; <double> [#uses=2]
 
270
        %192 = getelementptr %struct.VERTEX* %176, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
271
        %193 = load double* %192, align 4               ; <double> [#uses=2]
 
272
        %194 = fsub double %183, %191           ; <double> [#uses=1]
 
273
        %195 = fsub double %189, %193           ; <double> [#uses=1]
 
274
        %196 = fmul double %194, %195           ; <double> [#uses=1]
 
275
        %197 = fsub double %187, %191           ; <double> [#uses=1]
 
276
        %198 = fsub double %185, %193           ; <double> [#uses=1]
 
277
        %199 = fmul double %197, %198           ; <double> [#uses=1]
 
278
        %200 = fsub double %196, %199           ; <double> [#uses=1]
 
279
        %201 = fcmp ogt double %200, 0.000000e+00               ; <i1> [#uses=1]
 
280
        br i1 %201, label %bb10.i, label %bb13.i
 
281
 
 
282
bb10.i:         ; preds = %bb9.i
 
283
        %202 = getelementptr %struct.VERTEX* %171, i32 0, i32 0, i32 2          ; <double*> [#uses=1]
 
284
        %avail_edge.promoted25 = load %struct.edge_rec** @avail_edge            ; <%struct.edge_rec*> [#uses=1]
 
285
        br label %bb12.i
 
286
 
 
287
bb11.i:         ; preds = %bb12.i
 
288
        %203 = ptrtoint %struct.edge_rec* %lcand.0.i to i32             ; <i32> [#uses=3]
 
289
        %204 = add i32 %203, 16         ; <i32> [#uses=1]
 
290
        %205 = and i32 %204, 63         ; <i32> [#uses=1]
 
291
        %206 = and i32 %203, -64                ; <i32> [#uses=3]
 
292
        %207 = or i32 %205, %206                ; <i32> [#uses=1]
 
293
        %208 = inttoptr i32 %207 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
294
        %209 = getelementptr %struct.edge_rec* %208, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
295
        %210 = load %struct.edge_rec** %209, align 4            ; <%struct.edge_rec*> [#uses=1]
 
296
        %211 = ptrtoint %struct.edge_rec* %210 to i32           ; <i32> [#uses=2]
 
297
        %212 = add i32 %211, 16         ; <i32> [#uses=1]
 
298
        %213 = and i32 %212, 63         ; <i32> [#uses=1]
 
299
        %214 = and i32 %211, -64                ; <i32> [#uses=1]
 
300
        %215 = or i32 %213, %214                ; <i32> [#uses=1]
 
301
        %216 = inttoptr i32 %215 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
302
        %217 = getelementptr %struct.edge_rec* %lcand.0.i, i32 0, i32 1         ; <%struct.edge_rec**> [#uses=3]
 
303
        %218 = load %struct.edge_rec** %217, align 4            ; <%struct.edge_rec*> [#uses=1]
 
304
        %219 = ptrtoint %struct.edge_rec* %218 to i32           ; <i32> [#uses=2]
 
305
        %220 = add i32 %219, 16         ; <i32> [#uses=1]
 
306
        %221 = and i32 %220, 63         ; <i32> [#uses=1]
 
307
        %222 = and i32 %219, -64                ; <i32> [#uses=1]
 
308
        %223 = or i32 %221, %222                ; <i32> [#uses=1]
 
309
        %224 = inttoptr i32 %223 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
310
        %225 = getelementptr %struct.edge_rec* %216, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
311
        %226 = load %struct.edge_rec** %225, align 4            ; <%struct.edge_rec*> [#uses=1]
 
312
        %227 = ptrtoint %struct.edge_rec* %226 to i32           ; <i32> [#uses=2]
 
313
        %228 = add i32 %227, 16         ; <i32> [#uses=1]
 
314
        %229 = and i32 %228, 63         ; <i32> [#uses=1]
 
315
        %230 = and i32 %227, -64                ; <i32> [#uses=1]
 
316
        %231 = or i32 %229, %230                ; <i32> [#uses=1]
 
317
        %232 = inttoptr i32 %231 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
318
        %233 = getelementptr %struct.edge_rec* %232, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
319
        %234 = load %struct.edge_rec** %233, align 4            ; <%struct.edge_rec*> [#uses=1]
 
320
        %235 = getelementptr %struct.edge_rec* %224, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
321
        %236 = load %struct.edge_rec** %235, align 4            ; <%struct.edge_rec*> [#uses=1]
 
322
        store %struct.edge_rec* %234, %struct.edge_rec** %235, align 4
 
323
        store %struct.edge_rec* %236, %struct.edge_rec** %233, align 4
 
324
        %237 = load %struct.edge_rec** %217, align 4            ; <%struct.edge_rec*> [#uses=1]
 
325
        %238 = load %struct.edge_rec** %225, align 4            ; <%struct.edge_rec*> [#uses=1]
 
326
        store %struct.edge_rec* %237, %struct.edge_rec** %225, align 4
 
327
        store %struct.edge_rec* %238, %struct.edge_rec** %217, align 4
 
328
        %239 = xor i32 %203, 32         ; <i32> [#uses=2]
 
329
        %240 = add i32 %239, 16         ; <i32> [#uses=1]
 
330
        %241 = and i32 %240, 63         ; <i32> [#uses=1]
 
331
        %242 = or i32 %241, %206                ; <i32> [#uses=1]
 
332
        %243 = inttoptr i32 %242 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
333
        %244 = getelementptr %struct.edge_rec* %243, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
334
        %245 = load %struct.edge_rec** %244, align 4            ; <%struct.edge_rec*> [#uses=1]
 
335
        %246 = ptrtoint %struct.edge_rec* %245 to i32           ; <i32> [#uses=2]
 
336
        %247 = add i32 %246, 16         ; <i32> [#uses=1]
 
337
        %248 = and i32 %247, 63         ; <i32> [#uses=1]
 
338
        %249 = and i32 %246, -64                ; <i32> [#uses=1]
 
339
        %250 = or i32 %248, %249                ; <i32> [#uses=1]
 
340
        %251 = inttoptr i32 %250 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
341
        %252 = inttoptr i32 %239 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
342
        %253 = getelementptr %struct.edge_rec* %252, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
343
        %254 = load %struct.edge_rec** %253, align 4            ; <%struct.edge_rec*> [#uses=1]
 
344
        %255 = ptrtoint %struct.edge_rec* %254 to i32           ; <i32> [#uses=2]
 
345
        %256 = add i32 %255, 16         ; <i32> [#uses=1]
 
346
        %257 = and i32 %256, 63         ; <i32> [#uses=1]
 
347
        %258 = and i32 %255, -64                ; <i32> [#uses=1]
 
348
        %259 = or i32 %257, %258                ; <i32> [#uses=1]
 
349
        %260 = inttoptr i32 %259 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
350
        %261 = getelementptr %struct.edge_rec* %251, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
351
        %262 = load %struct.edge_rec** %261, align 4            ; <%struct.edge_rec*> [#uses=1]
 
352
        %263 = ptrtoint %struct.edge_rec* %262 to i32           ; <i32> [#uses=2]
 
353
        %264 = add i32 %263, 16         ; <i32> [#uses=1]
 
354
        %265 = and i32 %264, 63         ; <i32> [#uses=1]
 
355
        %266 = and i32 %263, -64                ; <i32> [#uses=1]
 
356
        %267 = or i32 %265, %266                ; <i32> [#uses=1]
 
357
        %268 = inttoptr i32 %267 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
358
        %269 = getelementptr %struct.edge_rec* %268, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
359
        %270 = load %struct.edge_rec** %269, align 4            ; <%struct.edge_rec*> [#uses=1]
 
360
        %271 = getelementptr %struct.edge_rec* %260, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
361
        %272 = load %struct.edge_rec** %271, align 4            ; <%struct.edge_rec*> [#uses=1]
 
362
        store %struct.edge_rec* %270, %struct.edge_rec** %271, align 4
 
363
        store %struct.edge_rec* %272, %struct.edge_rec** %269, align 4
 
364
        %273 = load %struct.edge_rec** %253, align 4            ; <%struct.edge_rec*> [#uses=1]
 
365
        %274 = load %struct.edge_rec** %261, align 4            ; <%struct.edge_rec*> [#uses=1]
 
366
        store %struct.edge_rec* %273, %struct.edge_rec** %261, align 4
 
367
        store %struct.edge_rec* %274, %struct.edge_rec** %253, align 4
 
368
        %275 = inttoptr i32 %206 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
369
        %276 = getelementptr %struct.edge_rec* %275, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
370
        store %struct.edge_rec* %avail_edge.tmp.026, %struct.edge_rec** %276, align 4
 
371
        %277 = getelementptr %struct.edge_rec* %t.0.i, i32 0, i32 1             ; <%struct.edge_rec**> [#uses=1]
 
372
        %278 = load %struct.edge_rec** %277, align 4            ; <%struct.edge_rec*> [#uses=2]
 
373
        %.pre.i = load double* %182, align 4            ; <double> [#uses=1]
 
374
        %.pre22.i = load double* %184, align 4          ; <double> [#uses=1]
 
375
        br label %bb12.i
 
376
 
 
377
bb12.i:         ; preds = %bb11.i, %bb10.i
 
378
        %avail_edge.tmp.026 = phi %struct.edge_rec* [ %avail_edge.promoted25, %bb10.i ], [ %275, %bb11.i ]              ; <%struct.edge_rec*> [#uses=2]
 
379
        %279 = phi double [ %.pre22.i, %bb11.i ], [ %185, %bb10.i ]             ; <double> [#uses=3]
 
380
        %280 = phi double [ %.pre.i, %bb11.i ], [ %183, %bb10.i ]               ; <double> [#uses=3]
 
381
        %lcand.0.i = phi %struct.edge_rec* [ %lcand.2.i, %bb10.i ], [ %t.0.i, %bb11.i ]         ; <%struct.edge_rec*> [#uses=3]
 
382
        %t.0.i = phi %struct.edge_rec* [ %169, %bb10.i ], [ %278, %bb11.i ]             ; <%struct.edge_rec*> [#uses=4]
 
383
        %.pn5.in.in.in.i = phi %struct.edge_rec* [ %lcand.2.i, %bb10.i ], [ %t.0.i, %bb11.i ]           ; <%struct.edge_rec*> [#uses=1]
 
384
        %.pn4.in.in.in.i = phi %struct.edge_rec* [ %169, %bb10.i ], [ %278, %bb11.i ]           ; <%struct.edge_rec*> [#uses=1]
 
385
        %lcand.2.pn.i = phi %struct.edge_rec* [ %lcand.2.i, %bb10.i ], [ %t.0.i, %bb11.i ]              ; <%struct.edge_rec*> [#uses=1]
 
386
        %.pn5.in.in.i = ptrtoint %struct.edge_rec* %.pn5.in.in.in.i to i32              ; <i32> [#uses=1]
 
387
        %.pn4.in.in.i = ptrtoint %struct.edge_rec* %.pn4.in.in.in.i to i32              ; <i32> [#uses=1]
 
388
        %.pn5.in.i = xor i32 %.pn5.in.in.i, 32          ; <i32> [#uses=1]
 
389
        %.pn4.in.i = xor i32 %.pn4.in.in.i, 32          ; <i32> [#uses=1]
 
390
        %.pn5.i = inttoptr i32 %.pn5.in.i to %struct.edge_rec*          ; <%struct.edge_rec*> [#uses=1]
 
391
        %.pn4.i = inttoptr i32 %.pn4.in.i to %struct.edge_rec*          ; <%struct.edge_rec*> [#uses=1]
 
392
        %v1.0.in.i = getelementptr %struct.edge_rec* %.pn5.i, i32 0, i32 0              ; <%struct.VERTEX**> [#uses=1]
 
393
        %v2.0.in.i = getelementptr %struct.edge_rec* %.pn4.i, i32 0, i32 0              ; <%struct.VERTEX**> [#uses=1]
 
394
        %v3.0.in.i = getelementptr %struct.edge_rec* %lcand.2.pn.i, i32 0, i32 0                ; <%struct.VERTEX**> [#uses=1]
 
395
        %v1.0.i = load %struct.VERTEX** %v1.0.in.i              ; <%struct.VERTEX*> [#uses=3]
 
396
        %v2.0.i = load %struct.VERTEX** %v2.0.in.i              ; <%struct.VERTEX*> [#uses=3]
 
397
        %v3.0.i = load %struct.VERTEX** %v3.0.in.i              ; <%struct.VERTEX*> [#uses=3]
 
398
        %281 = load double* %202, align 4               ; <double> [#uses=3]
 
399
        %282 = getelementptr %struct.VERTEX* %v1.0.i, i32 0, i32 0, i32 0               ; <double*> [#uses=1]
 
400
        %283 = load double* %282, align 4               ; <double> [#uses=1]
 
401
        %284 = fsub double %283, %280           ; <double> [#uses=2]
 
402
        %285 = getelementptr %struct.VERTEX* %v1.0.i, i32 0, i32 0, i32 1               ; <double*> [#uses=1]
 
403
        %286 = load double* %285, align 4               ; <double> [#uses=1]
 
404
        %287 = fsub double %286, %279           ; <double> [#uses=2]
 
405
        %288 = getelementptr %struct.VERTEX* %v1.0.i, i32 0, i32 0, i32 2               ; <double*> [#uses=1]
 
406
        %289 = load double* %288, align 4               ; <double> [#uses=1]
 
407
        %290 = getelementptr %struct.VERTEX* %v2.0.i, i32 0, i32 0, i32 0               ; <double*> [#uses=1]
 
408
        %291 = load double* %290, align 4               ; <double> [#uses=1]
 
409
        %292 = fsub double %291, %280           ; <double> [#uses=2]
 
410
        %293 = getelementptr %struct.VERTEX* %v2.0.i, i32 0, i32 0, i32 1               ; <double*> [#uses=1]
 
411
        %294 = load double* %293, align 4               ; <double> [#uses=1]
 
412
        %295 = fsub double %294, %279           ; <double> [#uses=2]
 
413
        %296 = getelementptr %struct.VERTEX* %v2.0.i, i32 0, i32 0, i32 2               ; <double*> [#uses=1]
 
414
        %297 = load double* %296, align 4               ; <double> [#uses=1]
 
415
        %298 = getelementptr %struct.VERTEX* %v3.0.i, i32 0, i32 0, i32 0               ; <double*> [#uses=1]
 
416
        %299 = load double* %298, align 4               ; <double> [#uses=1]
 
417
        %300 = fsub double %299, %280           ; <double> [#uses=2]
 
418
        %301 = getelementptr %struct.VERTEX* %v3.0.i, i32 0, i32 0, i32 1               ; <double*> [#uses=1]
 
419
        %302 = load double* %301, align 4               ; <double> [#uses=1]
 
420
        %303 = fsub double %302, %279           ; <double> [#uses=2]
 
421
        %304 = getelementptr %struct.VERTEX* %v3.0.i, i32 0, i32 0, i32 2               ; <double*> [#uses=1]
 
422
        %305 = load double* %304, align 4               ; <double> [#uses=1]
 
423
        %306 = fsub double %289, %281           ; <double> [#uses=1]
 
424
        %307 = fmul double %292, %303           ; <double> [#uses=1]
 
425
        %308 = fmul double %295, %300           ; <double> [#uses=1]
 
426
        %309 = fsub double %307, %308           ; <double> [#uses=1]
 
427
        %310 = fmul double %306, %309           ; <double> [#uses=1]
 
428
        %311 = fsub double %297, %281           ; <double> [#uses=1]
 
429
        %312 = fmul double %300, %287           ; <double> [#uses=1]
 
430
        %313 = fmul double %303, %284           ; <double> [#uses=1]
 
431
        %314 = fsub double %312, %313           ; <double> [#uses=1]
 
432
        %315 = fmul double %311, %314           ; <double> [#uses=1]
 
433
        %316 = fadd double %315, %310           ; <double> [#uses=1]
 
434
        %317 = fsub double %305, %281           ; <double> [#uses=1]
 
435
        %318 = fmul double %284, %295           ; <double> [#uses=1]
 
436
        %319 = fmul double %287, %292           ; <double> [#uses=1]
 
437
        %320 = fsub double %318, %319           ; <double> [#uses=1]
 
438
        %321 = fmul double %317, %320           ; <double> [#uses=1]
 
439
        %322 = fadd double %321, %316           ; <double> [#uses=1]
 
440
        %323 = fcmp ogt double %322, 0.000000e+00               ; <i1> [#uses=1]
 
441
        br i1 %323, label %bb11.i, label %bb13.loopexit.i
 
442
 
 
443
bb13.loopexit.i:                ; preds = %bb12.i
 
444
        store %struct.edge_rec* %avail_edge.tmp.026, %struct.edge_rec** @avail_edge
 
445
        %.pre23.i = load %struct.VERTEX** %170, align 4         ; <%struct.VERTEX*> [#uses=1]
 
446
        %.pre24.i = load %struct.VERTEX** %175, align 4         ; <%struct.VERTEX*> [#uses=1]
 
447
        br label %bb13.i
 
448
 
 
449
bb13.i:         ; preds = %bb13.loopexit.i, %bb9.i
 
450
        %324 = phi %struct.VERTEX* [ %.pre24.i, %bb13.loopexit.i ], [ %176, %bb9.i ]            ; <%struct.VERTEX*> [#uses=4]
 
451
        %325 = phi %struct.VERTEX* [ %.pre23.i, %bb13.loopexit.i ], [ %171, %bb9.i ]            ; <%struct.VERTEX*> [#uses=3]
 
452
        %lcand.1.i = phi %struct.edge_rec* [ %lcand.0.i, %bb13.loopexit.i ], [ %lcand.2.i, %bb9.i ]             ; <%struct.edge_rec*> [#uses=3]
 
453
        %326 = ptrtoint %struct.edge_rec* %rcand.2.i to i32             ; <i32> [#uses=2]
 
454
        %327 = add i32 %326, 16         ; <i32> [#uses=1]
 
455
        %328 = and i32 %327, 63         ; <i32> [#uses=1]
 
456
        %329 = and i32 %326, -64                ; <i32> [#uses=1]
 
457
        %330 = or i32 %328, %329                ; <i32> [#uses=1]
 
458
        %331 = inttoptr i32 %330 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
459
        %332 = getelementptr %struct.edge_rec* %331, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
460
        %333 = load %struct.edge_rec** %332, align 4            ; <%struct.edge_rec*> [#uses=1]
 
461
        %334 = ptrtoint %struct.edge_rec* %333 to i32           ; <i32> [#uses=2]
 
462
        %335 = add i32 %334, 16         ; <i32> [#uses=1]
 
463
        %336 = and i32 %335, 63         ; <i32> [#uses=1]
 
464
        %337 = and i32 %334, -64                ; <i32> [#uses=1]
 
465
        %338 = or i32 %336, %337                ; <i32> [#uses=3]
 
466
        %339 = xor i32 %338, 32         ; <i32> [#uses=1]
 
467
        %340 = inttoptr i32 %339 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
468
        %341 = getelementptr %struct.edge_rec* %340, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
469
        %342 = load %struct.VERTEX** %341, align 4              ; <%struct.VERTEX*> [#uses=2]
 
470
        %343 = getelementptr %struct.VERTEX* %325, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
471
        %344 = load double* %343, align 4               ; <double> [#uses=1]
 
472
        %345 = getelementptr %struct.VERTEX* %325, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
473
        %346 = load double* %345, align 4               ; <double> [#uses=1]
 
474
        %347 = getelementptr %struct.VERTEX* %342, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
475
        %348 = load double* %347, align 4               ; <double> [#uses=1]
 
476
        %349 = getelementptr %struct.VERTEX* %342, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
477
        %350 = load double* %349, align 4               ; <double> [#uses=1]
 
478
        %351 = getelementptr %struct.VERTEX* %324, i32 0, i32 0, i32 0          ; <double*> [#uses=2]
 
479
        %352 = load double* %351, align 4               ; <double> [#uses=3]
 
480
        %353 = getelementptr %struct.VERTEX* %324, i32 0, i32 0, i32 1          ; <double*> [#uses=2]
 
481
        %354 = load double* %353, align 4               ; <double> [#uses=3]
 
482
        %355 = fsub double %344, %352           ; <double> [#uses=1]
 
483
        %356 = fsub double %350, %354           ; <double> [#uses=1]
 
484
        %357 = fmul double %355, %356           ; <double> [#uses=1]
 
485
        %358 = fsub double %348, %352           ; <double> [#uses=1]
 
486
        %359 = fsub double %346, %354           ; <double> [#uses=1]
 
487
        %360 = fmul double %358, %359           ; <double> [#uses=1]
 
488
        %361 = fsub double %357, %360           ; <double> [#uses=1]
 
489
        %362 = fcmp ogt double %361, 0.000000e+00               ; <i1> [#uses=1]
 
490
        br i1 %362, label %bb14.i, label %bb17.i
 
491
 
 
492
bb14.i:         ; preds = %bb13.i
 
493
        %363 = getelementptr %struct.VERTEX* %324, i32 0, i32 0, i32 2          ; <double*> [#uses=1]
 
494
        %avail_edge.promoted = load %struct.edge_rec** @avail_edge              ; <%struct.edge_rec*> [#uses=1]
 
495
        br label %bb16.i
 
496
 
 
497
bb15.i:         ; preds = %bb16.i
 
498
        %364 = ptrtoint %struct.edge_rec* %rcand.0.i to i32             ; <i32> [#uses=3]
 
499
        %365 = add i32 %364, 16         ; <i32> [#uses=1]
 
500
        %366 = and i32 %365, 63         ; <i32> [#uses=1]
 
501
        %367 = and i32 %364, -64                ; <i32> [#uses=3]
 
502
        %368 = or i32 %366, %367                ; <i32> [#uses=1]
 
503
        %369 = inttoptr i32 %368 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
504
        %370 = getelementptr %struct.edge_rec* %369, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
505
        %371 = load %struct.edge_rec** %370, align 4            ; <%struct.edge_rec*> [#uses=1]
 
506
        %372 = ptrtoint %struct.edge_rec* %371 to i32           ; <i32> [#uses=2]
 
507
        %373 = add i32 %372, 16         ; <i32> [#uses=1]
 
508
        %374 = and i32 %373, 63         ; <i32> [#uses=1]
 
509
        %375 = and i32 %372, -64                ; <i32> [#uses=1]
 
510
        %376 = or i32 %374, %375                ; <i32> [#uses=1]
 
511
        %377 = inttoptr i32 %376 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
512
        %378 = getelementptr %struct.edge_rec* %rcand.0.i, i32 0, i32 1         ; <%struct.edge_rec**> [#uses=3]
 
513
        %379 = load %struct.edge_rec** %378, align 4            ; <%struct.edge_rec*> [#uses=1]
 
514
        %380 = ptrtoint %struct.edge_rec* %379 to i32           ; <i32> [#uses=2]
 
515
        %381 = add i32 %380, 16         ; <i32> [#uses=1]
 
516
        %382 = and i32 %381, 63         ; <i32> [#uses=1]
 
517
        %383 = and i32 %380, -64                ; <i32> [#uses=1]
 
518
        %384 = or i32 %382, %383                ; <i32> [#uses=1]
 
519
        %385 = inttoptr i32 %384 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
520
        %386 = getelementptr %struct.edge_rec* %377, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
521
        %387 = load %struct.edge_rec** %386, align 4            ; <%struct.edge_rec*> [#uses=1]
 
522
        %388 = ptrtoint %struct.edge_rec* %387 to i32           ; <i32> [#uses=2]
 
523
        %389 = add i32 %388, 16         ; <i32> [#uses=1]
 
524
        %390 = and i32 %389, 63         ; <i32> [#uses=1]
 
525
        %391 = and i32 %388, -64                ; <i32> [#uses=1]
 
526
        %392 = or i32 %390, %391                ; <i32> [#uses=1]
 
527
        %393 = inttoptr i32 %392 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
528
        %394 = getelementptr %struct.edge_rec* %393, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
529
        %395 = load %struct.edge_rec** %394, align 4            ; <%struct.edge_rec*> [#uses=1]
 
530
        %396 = getelementptr %struct.edge_rec* %385, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
531
        %397 = load %struct.edge_rec** %396, align 4            ; <%struct.edge_rec*> [#uses=1]
 
532
        store %struct.edge_rec* %395, %struct.edge_rec** %396, align 4
 
533
        store %struct.edge_rec* %397, %struct.edge_rec** %394, align 4
 
534
        %398 = load %struct.edge_rec** %378, align 4            ; <%struct.edge_rec*> [#uses=1]
 
535
        %399 = load %struct.edge_rec** %386, align 4            ; <%struct.edge_rec*> [#uses=1]
 
536
        store %struct.edge_rec* %398, %struct.edge_rec** %386, align 4
 
537
        store %struct.edge_rec* %399, %struct.edge_rec** %378, align 4
 
538
        %400 = xor i32 %364, 32         ; <i32> [#uses=2]
 
539
        %401 = add i32 %400, 16         ; <i32> [#uses=1]
 
540
        %402 = and i32 %401, 63         ; <i32> [#uses=1]
 
541
        %403 = or i32 %402, %367                ; <i32> [#uses=1]
 
542
        %404 = inttoptr i32 %403 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
543
        %405 = getelementptr %struct.edge_rec* %404, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
544
        %406 = load %struct.edge_rec** %405, align 4            ; <%struct.edge_rec*> [#uses=1]
 
545
        %407 = ptrtoint %struct.edge_rec* %406 to i32           ; <i32> [#uses=2]
 
546
        %408 = add i32 %407, 16         ; <i32> [#uses=1]
 
547
        %409 = and i32 %408, 63         ; <i32> [#uses=1]
 
548
        %410 = and i32 %407, -64                ; <i32> [#uses=1]
 
549
        %411 = or i32 %409, %410                ; <i32> [#uses=1]
 
550
        %412 = inttoptr i32 %411 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
551
        %413 = inttoptr i32 %400 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
552
        %414 = getelementptr %struct.edge_rec* %413, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
553
        %415 = load %struct.edge_rec** %414, align 4            ; <%struct.edge_rec*> [#uses=1]
 
554
        %416 = ptrtoint %struct.edge_rec* %415 to i32           ; <i32> [#uses=2]
 
555
        %417 = add i32 %416, 16         ; <i32> [#uses=1]
 
556
        %418 = and i32 %417, 63         ; <i32> [#uses=1]
 
557
        %419 = and i32 %416, -64                ; <i32> [#uses=1]
 
558
        %420 = or i32 %418, %419                ; <i32> [#uses=1]
 
559
        %421 = inttoptr i32 %420 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
560
        %422 = getelementptr %struct.edge_rec* %412, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
561
        %423 = load %struct.edge_rec** %422, align 4            ; <%struct.edge_rec*> [#uses=1]
 
562
        %424 = ptrtoint %struct.edge_rec* %423 to i32           ; <i32> [#uses=2]
 
563
        %425 = add i32 %424, 16         ; <i32> [#uses=1]
 
564
        %426 = and i32 %425, 63         ; <i32> [#uses=1]
 
565
        %427 = and i32 %424, -64                ; <i32> [#uses=1]
 
566
        %428 = or i32 %426, %427                ; <i32> [#uses=1]
 
567
        %429 = inttoptr i32 %428 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
568
        %430 = getelementptr %struct.edge_rec* %429, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
569
        %431 = load %struct.edge_rec** %430, align 4            ; <%struct.edge_rec*> [#uses=1]
 
570
        %432 = getelementptr %struct.edge_rec* %421, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
571
        %433 = load %struct.edge_rec** %432, align 4            ; <%struct.edge_rec*> [#uses=1]
 
572
        store %struct.edge_rec* %431, %struct.edge_rec** %432, align 4
 
573
        store %struct.edge_rec* %433, %struct.edge_rec** %430, align 4
 
574
        %434 = load %struct.edge_rec** %414, align 4            ; <%struct.edge_rec*> [#uses=1]
 
575
        %435 = load %struct.edge_rec** %422, align 4            ; <%struct.edge_rec*> [#uses=1]
 
576
        store %struct.edge_rec* %434, %struct.edge_rec** %422, align 4
 
577
        store %struct.edge_rec* %435, %struct.edge_rec** %414, align 4
 
578
        %436 = inttoptr i32 %367 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
579
        %437 = getelementptr %struct.edge_rec* %436, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
580
        store %struct.edge_rec* %avail_edge.tmp.0, %struct.edge_rec** %437, align 4
 
581
        %438 = add i32 %t.1.in.i, 16            ; <i32> [#uses=1]
 
582
        %439 = and i32 %438, 63         ; <i32> [#uses=1]
 
583
        %440 = and i32 %t.1.in.i, -64           ; <i32> [#uses=1]
 
584
        %441 = or i32 %439, %440                ; <i32> [#uses=1]
 
585
        %442 = inttoptr i32 %441 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
586
        %443 = getelementptr %struct.edge_rec* %442, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
587
        %444 = load %struct.edge_rec** %443, align 4            ; <%struct.edge_rec*> [#uses=1]
 
588
        %445 = ptrtoint %struct.edge_rec* %444 to i32           ; <i32> [#uses=2]
 
589
        %446 = add i32 %445, 16         ; <i32> [#uses=1]
 
590
        %447 = and i32 %446, 63         ; <i32> [#uses=1]
 
591
        %448 = and i32 %445, -64                ; <i32> [#uses=1]
 
592
        %449 = or i32 %447, %448                ; <i32> [#uses=2]
 
593
        %.pre25.i = load double* %351, align 4          ; <double> [#uses=1]
 
594
        %.pre26.i = load double* %353, align 4          ; <double> [#uses=1]
 
595
        br label %bb16.i
 
596
 
 
597
bb16.i:         ; preds = %bb15.i, %bb14.i
 
598
        %avail_edge.tmp.0 = phi %struct.edge_rec* [ %avail_edge.promoted, %bb14.i ], [ %436, %bb15.i ]          ; <%struct.edge_rec*> [#uses=2]
 
599
        %450 = phi double [ %.pre26.i, %bb15.i ], [ %354, %bb14.i ]             ; <double> [#uses=3]
 
600
        %451 = phi double [ %.pre25.i, %bb15.i ], [ %352, %bb14.i ]             ; <double> [#uses=3]
 
601
        %rcand.0.i = phi %struct.edge_rec* [ %rcand.2.i, %bb14.i ], [ %t.1.i, %bb15.i ]         ; <%struct.edge_rec*> [#uses=3]
 
602
        %t.1.in.i = phi i32 [ %338, %bb14.i ], [ %449, %bb15.i ]                ; <i32> [#uses=3]
 
603
        %.pn3.in.in.i = phi i32 [ %338, %bb14.i ], [ %449, %bb15.i ]            ; <i32> [#uses=1]
 
604
        %.pn.in.in.in.i = phi %struct.edge_rec* [ %rcand.2.i, %bb14.i ], [ %t.1.i, %bb15.i ]            ; <%struct.edge_rec*> [#uses=1]
 
605
        %rcand.2.pn.i = phi %struct.edge_rec* [ %rcand.2.i, %bb14.i ], [ %t.1.i, %bb15.i ]              ; <%struct.edge_rec*> [#uses=1]
 
606
        %t.1.i = inttoptr i32 %t.1.in.i to %struct.edge_rec*            ; <%struct.edge_rec*> [#uses=3]
 
607
        %.pn.in.in.i = ptrtoint %struct.edge_rec* %.pn.in.in.in.i to i32                ; <i32> [#uses=1]
 
608
        %.pn3.in.i = xor i32 %.pn3.in.in.i, 32          ; <i32> [#uses=1]
 
609
        %.pn.in.i = xor i32 %.pn.in.in.i, 32            ; <i32> [#uses=1]
 
610
        %.pn3.i = inttoptr i32 %.pn3.in.i to %struct.edge_rec*          ; <%struct.edge_rec*> [#uses=1]
 
611
        %.pn.i = inttoptr i32 %.pn.in.i to %struct.edge_rec*            ; <%struct.edge_rec*> [#uses=1]
 
612
        %v1.1.in.i = getelementptr %struct.edge_rec* %.pn3.i, i32 0, i32 0              ; <%struct.VERTEX**> [#uses=1]
 
613
        %v2.1.in.i = getelementptr %struct.edge_rec* %.pn.i, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
614
        %v3.1.in.i = getelementptr %struct.edge_rec* %rcand.2.pn.i, i32 0, i32 0                ; <%struct.VERTEX**> [#uses=1]
 
615
        %v1.1.i = load %struct.VERTEX** %v1.1.in.i              ; <%struct.VERTEX*> [#uses=3]
 
616
        %v2.1.i = load %struct.VERTEX** %v2.1.in.i              ; <%struct.VERTEX*> [#uses=3]
 
617
        %v3.1.i = load %struct.VERTEX** %v3.1.in.i              ; <%struct.VERTEX*> [#uses=3]
 
618
        %452 = load double* %363, align 4               ; <double> [#uses=3]
 
619
        %453 = getelementptr %struct.VERTEX* %v1.1.i, i32 0, i32 0, i32 0               ; <double*> [#uses=1]
 
620
        %454 = load double* %453, align 4               ; <double> [#uses=1]
 
621
        %455 = fsub double %454, %451           ; <double> [#uses=2]
 
622
        %456 = getelementptr %struct.VERTEX* %v1.1.i, i32 0, i32 0, i32 1               ; <double*> [#uses=1]
 
623
        %457 = load double* %456, align 4               ; <double> [#uses=1]
 
624
        %458 = fsub double %457, %450           ; <double> [#uses=2]
 
625
        %459 = getelementptr %struct.VERTEX* %v1.1.i, i32 0, i32 0, i32 2               ; <double*> [#uses=1]
 
626
        %460 = load double* %459, align 4               ; <double> [#uses=1]
 
627
        %461 = getelementptr %struct.VERTEX* %v2.1.i, i32 0, i32 0, i32 0               ; <double*> [#uses=1]
 
628
        %462 = load double* %461, align 4               ; <double> [#uses=1]
 
629
        %463 = fsub double %462, %451           ; <double> [#uses=2]
 
630
        %464 = getelementptr %struct.VERTEX* %v2.1.i, i32 0, i32 0, i32 1               ; <double*> [#uses=1]
 
631
        %465 = load double* %464, align 4               ; <double> [#uses=1]
 
632
        %466 = fsub double %465, %450           ; <double> [#uses=2]
 
633
        %467 = getelementptr %struct.VERTEX* %v2.1.i, i32 0, i32 0, i32 2               ; <double*> [#uses=1]
 
634
        %468 = load double* %467, align 4               ; <double> [#uses=1]
 
635
        %469 = getelementptr %struct.VERTEX* %v3.1.i, i32 0, i32 0, i32 0               ; <double*> [#uses=1]
 
636
        %470 = load double* %469, align 4               ; <double> [#uses=1]
 
637
        %471 = fsub double %470, %451           ; <double> [#uses=2]
 
638
        %472 = getelementptr %struct.VERTEX* %v3.1.i, i32 0, i32 0, i32 1               ; <double*> [#uses=1]
 
639
        %473 = load double* %472, align 4               ; <double> [#uses=1]
 
640
        %474 = fsub double %473, %450           ; <double> [#uses=2]
 
641
        %475 = getelementptr %struct.VERTEX* %v3.1.i, i32 0, i32 0, i32 2               ; <double*> [#uses=1]
 
642
        %476 = load double* %475, align 4               ; <double> [#uses=1]
 
643
        %477 = fsub double %460, %452           ; <double> [#uses=1]
 
644
        %478 = fmul double %463, %474           ; <double> [#uses=1]
 
645
        %479 = fmul double %466, %471           ; <double> [#uses=1]
 
646
        %480 = fsub double %478, %479           ; <double> [#uses=1]
 
647
        %481 = fmul double %477, %480           ; <double> [#uses=1]
 
648
        %482 = fsub double %468, %452           ; <double> [#uses=1]
 
649
        %483 = fmul double %471, %458           ; <double> [#uses=1]
 
650
        %484 = fmul double %474, %455           ; <double> [#uses=1]
 
651
        %485 = fsub double %483, %484           ; <double> [#uses=1]
 
652
        %486 = fmul double %482, %485           ; <double> [#uses=1]
 
653
        %487 = fadd double %486, %481           ; <double> [#uses=1]
 
654
        %488 = fsub double %476, %452           ; <double> [#uses=1]
 
655
        %489 = fmul double %455, %466           ; <double> [#uses=1]
 
656
        %490 = fmul double %458, %463           ; <double> [#uses=1]
 
657
        %491 = fsub double %489, %490           ; <double> [#uses=1]
 
658
        %492 = fmul double %488, %491           ; <double> [#uses=1]
 
659
        %493 = fadd double %492, %487           ; <double> [#uses=1]
 
660
        %494 = fcmp ogt double %493, 0.000000e+00               ; <i1> [#uses=1]
 
661
        br i1 %494, label %bb15.i, label %bb17.loopexit.i
 
662
 
 
663
bb17.loopexit.i:                ; preds = %bb16.i
 
664
        store %struct.edge_rec* %avail_edge.tmp.0, %struct.edge_rec** @avail_edge
 
665
        %.pre27.i = load %struct.VERTEX** %170, align 4         ; <%struct.VERTEX*> [#uses=1]
 
666
        %.pre28.i = load %struct.VERTEX** %175, align 4         ; <%struct.VERTEX*> [#uses=1]
 
667
        br label %bb17.i
 
668
 
 
669
bb17.i:         ; preds = %bb17.loopexit.i, %bb13.i
 
670
        %495 = phi %struct.VERTEX* [ %.pre28.i, %bb17.loopexit.i ], [ %324, %bb13.i ]           ; <%struct.VERTEX*> [#uses=3]
 
671
        %496 = phi %struct.VERTEX* [ %.pre27.i, %bb17.loopexit.i ], [ %325, %bb13.i ]           ; <%struct.VERTEX*> [#uses=3]
 
672
        %rcand.1.i = phi %struct.edge_rec* [ %rcand.0.i, %bb17.loopexit.i ], [ %rcand.2.i, %bb13.i ]            ; <%struct.edge_rec*> [#uses=3]
 
673
        %497 = ptrtoint %struct.edge_rec* %lcand.1.i to i32             ; <i32> [#uses=1]
 
674
        %498 = xor i32 %497, 32         ; <i32> [#uses=1]
 
675
        %499 = inttoptr i32 %498 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
676
        %500 = getelementptr %struct.edge_rec* %499, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
677
        %501 = load %struct.VERTEX** %500, align 4              ; <%struct.VERTEX*> [#uses=4]
 
678
        %502 = getelementptr %struct.VERTEX* %496, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
679
        %503 = load double* %502, align 4               ; <double> [#uses=1]
 
680
        %504 = getelementptr %struct.VERTEX* %496, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
681
        %505 = load double* %504, align 4               ; <double> [#uses=1]
 
682
        %506 = getelementptr %struct.VERTEX* %501, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
683
        %507 = load double* %506, align 4               ; <double> [#uses=2]
 
684
        %508 = getelementptr %struct.VERTEX* %501, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
685
        %509 = load double* %508, align 4               ; <double> [#uses=2]
 
686
        %510 = getelementptr %struct.VERTEX* %495, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
687
        %511 = load double* %510, align 4               ; <double> [#uses=3]
 
688
        %512 = getelementptr %struct.VERTEX* %495, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
689
        %513 = load double* %512, align 4               ; <double> [#uses=3]
 
690
        %514 = fsub double %503, %511           ; <double> [#uses=2]
 
691
        %515 = fsub double %509, %513           ; <double> [#uses=1]
 
692
        %516 = fmul double %514, %515           ; <double> [#uses=1]
 
693
        %517 = fsub double %507, %511           ; <double> [#uses=1]
 
694
        %518 = fsub double %505, %513           ; <double> [#uses=2]
 
695
        %519 = fmul double %517, %518           ; <double> [#uses=1]
 
696
        %520 = fsub double %516, %519           ; <double> [#uses=1]
 
697
        %521 = fcmp ogt double %520, 0.000000e+00               ; <i1> [#uses=2]
 
698
        %522 = ptrtoint %struct.edge_rec* %rcand.1.i to i32             ; <i32> [#uses=3]
 
699
        %523 = xor i32 %522, 32         ; <i32> [#uses=1]
 
700
        %524 = inttoptr i32 %523 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
701
        %525 = getelementptr %struct.edge_rec* %524, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
702
        %526 = load %struct.VERTEX** %525, align 4              ; <%struct.VERTEX*> [#uses=4]
 
703
        %527 = getelementptr %struct.VERTEX* %526, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
704
        %528 = load double* %527, align 4               ; <double> [#uses=4]
 
705
        %529 = getelementptr %struct.VERTEX* %526, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
706
        %530 = load double* %529, align 4               ; <double> [#uses=4]
 
707
        %531 = fsub double %530, %513           ; <double> [#uses=1]
 
708
        %532 = fmul double %514, %531           ; <double> [#uses=1]
 
709
        %533 = fsub double %528, %511           ; <double> [#uses=1]
 
710
        %534 = fmul double %533, %518           ; <double> [#uses=1]
 
711
        %535 = fsub double %532, %534           ; <double> [#uses=1]
 
712
        %536 = fcmp ogt double %535, 0.000000e+00               ; <i1> [#uses=2]
 
713
        %537 = or i1 %536, %521         ; <i1> [#uses=1]
 
714
        br i1 %537, label %bb21.i, label %do_merge.exit
 
715
 
 
716
bb21.i:         ; preds = %bb17.i
 
717
        %538 = getelementptr %struct.edge_rec* %lcand.1.i, i32 0, i32 0         ; <%struct.VERTEX**> [#uses=1]
 
718
        %539 = load %struct.VERTEX** %538, align 4              ; <%struct.VERTEX*> [#uses=3]
 
719
        %540 = getelementptr %struct.edge_rec* %rcand.1.i, i32 0, i32 0         ; <%struct.VERTEX**> [#uses=1]
 
720
        %541 = load %struct.VERTEX** %540, align 4              ; <%struct.VERTEX*> [#uses=3]
 
721
        br i1 %521, label %bb22.i, label %bb24.i
 
722
 
 
723
bb22.i:         ; preds = %bb21.i
 
724
        br i1 %536, label %bb23.i, label %bb25.i
 
725
 
 
726
bb23.i:         ; preds = %bb22.i
 
727
        %542 = getelementptr %struct.VERTEX* %526, i32 0, i32 0, i32 2          ; <double*> [#uses=1]
 
728
        %543 = load double* %542, align 4               ; <double> [#uses=3]
 
729
        %544 = fsub double %507, %528           ; <double> [#uses=2]
 
730
        %545 = fsub double %509, %530           ; <double> [#uses=2]
 
731
        %546 = getelementptr %struct.VERTEX* %501, i32 0, i32 0, i32 2          ; <double*> [#uses=1]
 
732
        %547 = load double* %546, align 4               ; <double> [#uses=1]
 
733
        %548 = getelementptr %struct.VERTEX* %539, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
734
        %549 = load double* %548, align 4               ; <double> [#uses=1]
 
735
        %550 = fsub double %549, %528           ; <double> [#uses=2]
 
736
        %551 = getelementptr %struct.VERTEX* %539, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
737
        %552 = load double* %551, align 4               ; <double> [#uses=1]
 
738
        %553 = fsub double %552, %530           ; <double> [#uses=2]
 
739
        %554 = getelementptr %struct.VERTEX* %539, i32 0, i32 0, i32 2          ; <double*> [#uses=1]
 
740
        %555 = load double* %554, align 4               ; <double> [#uses=1]
 
741
        %556 = getelementptr %struct.VERTEX* %541, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
742
        %557 = load double* %556, align 4               ; <double> [#uses=1]
 
743
        %558 = fsub double %557, %528           ; <double> [#uses=2]
 
744
        %559 = getelementptr %struct.VERTEX* %541, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
745
        %560 = load double* %559, align 4               ; <double> [#uses=1]
 
746
        %561 = fsub double %560, %530           ; <double> [#uses=2]
 
747
        %562 = getelementptr %struct.VERTEX* %541, i32 0, i32 0, i32 2          ; <double*> [#uses=1]
 
748
        %563 = load double* %562, align 4               ; <double> [#uses=1]
 
749
        %564 = fsub double %547, %543           ; <double> [#uses=1]
 
750
        %565 = fmul double %550, %561           ; <double> [#uses=1]
 
751
        %566 = fmul double %553, %558           ; <double> [#uses=1]
 
752
        %567 = fsub double %565, %566           ; <double> [#uses=1]
 
753
        %568 = fmul double %564, %567           ; <double> [#uses=1]
 
754
        %569 = fsub double %555, %543           ; <double> [#uses=1]
 
755
        %570 = fmul double %558, %545           ; <double> [#uses=1]
 
756
        %571 = fmul double %561, %544           ; <double> [#uses=1]
 
757
        %572 = fsub double %570, %571           ; <double> [#uses=1]
 
758
        %573 = fmul double %569, %572           ; <double> [#uses=1]
 
759
        %574 = fadd double %573, %568           ; <double> [#uses=1]
 
760
        %575 = fsub double %563, %543           ; <double> [#uses=1]
 
761
        %576 = fmul double %544, %553           ; <double> [#uses=1]
 
762
        %577 = fmul double %545, %550           ; <double> [#uses=1]
 
763
        %578 = fsub double %576, %577           ; <double> [#uses=1]
 
764
        %579 = fmul double %575, %578           ; <double> [#uses=1]
 
765
        %580 = fadd double %579, %574           ; <double> [#uses=1]
 
766
        %581 = fcmp ogt double %580, 0.000000e+00               ; <i1> [#uses=1]
 
767
        br i1 %581, label %bb24.i, label %bb25.i
 
768
 
 
769
bb24.i:         ; preds = %bb23.i, %bb21.i
 
770
        %582 = add i32 %522, 48         ; <i32> [#uses=1]
 
771
        %583 = and i32 %582, 63         ; <i32> [#uses=1]
 
772
        %584 = and i32 %522, -64                ; <i32> [#uses=1]
 
773
        %585 = or i32 %583, %584                ; <i32> [#uses=1]
 
774
        %586 = inttoptr i32 %585 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
775
        %587 = getelementptr %struct.edge_rec* %586, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
776
        %588 = load %struct.edge_rec** %587, align 4            ; <%struct.edge_rec*> [#uses=1]
 
777
        %589 = ptrtoint %struct.edge_rec* %588 to i32           ; <i32> [#uses=2]
 
778
        %590 = add i32 %589, 16         ; <i32> [#uses=1]
 
779
        %591 = and i32 %590, 63         ; <i32> [#uses=1]
 
780
        %592 = and i32 %589, -64                ; <i32> [#uses=1]
 
781
        %593 = or i32 %591, %592                ; <i32> [#uses=1]
 
782
        %594 = inttoptr i32 %593 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
783
        %595 = call arm_apcscc  %struct.edge_rec* @alloc_edge() nounwind                ; <%struct.edge_rec*> [#uses=5]
 
784
        %596 = getelementptr %struct.edge_rec* %595, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=4]
 
785
        store %struct.edge_rec* %595, %struct.edge_rec** %596, align 4
 
786
        %597 = getelementptr %struct.edge_rec* %595, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
787
        store %struct.VERTEX* %526, %struct.VERTEX** %597, align 4
 
788
        %598 = ptrtoint %struct.edge_rec* %595 to i32           ; <i32> [#uses=5]
 
789
        %599 = add i32 %598, 16         ; <i32> [#uses=1]
 
790
        %600 = inttoptr i32 %599 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
791
        %601 = add i32 %598, 48         ; <i32> [#uses=1]
 
792
        %602 = inttoptr i32 %601 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
793
        %603 = getelementptr %struct.edge_rec* %600, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
794
        store %struct.edge_rec* %602, %struct.edge_rec** %603, align 4
 
795
        %604 = add i32 %598, 32         ; <i32> [#uses=1]
 
796
        %605 = inttoptr i32 %604 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=3]
 
797
        %606 = getelementptr %struct.edge_rec* %605, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
798
        store %struct.edge_rec* %605, %struct.edge_rec** %606, align 4
 
799
        %607 = getelementptr %struct.edge_rec* %605, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
800
        store %struct.VERTEX* %495, %struct.VERTEX** %607, align 4
 
801
        %608 = getelementptr %struct.edge_rec* %602, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
802
        store %struct.edge_rec* %600, %struct.edge_rec** %608, align 4
 
803
        %609 = load %struct.edge_rec** %596, align 4            ; <%struct.edge_rec*> [#uses=1]
 
804
        %610 = ptrtoint %struct.edge_rec* %609 to i32           ; <i32> [#uses=2]
 
805
        %611 = add i32 %610, 16         ; <i32> [#uses=1]
 
806
        %612 = and i32 %611, 63         ; <i32> [#uses=1]
 
807
        %613 = and i32 %610, -64                ; <i32> [#uses=1]
 
808
        %614 = or i32 %612, %613                ; <i32> [#uses=1]
 
809
        %615 = inttoptr i32 %614 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
810
        %616 = getelementptr %struct.edge_rec* %594, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
811
        %617 = load %struct.edge_rec** %616, align 4            ; <%struct.edge_rec*> [#uses=1]
 
812
        %618 = ptrtoint %struct.edge_rec* %617 to i32           ; <i32> [#uses=2]
 
813
        %619 = add i32 %618, 16         ; <i32> [#uses=1]
 
814
        %620 = and i32 %619, 63         ; <i32> [#uses=1]
 
815
        %621 = and i32 %618, -64                ; <i32> [#uses=1]
 
816
        %622 = or i32 %620, %621                ; <i32> [#uses=1]
 
817
        %623 = inttoptr i32 %622 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
818
        %624 = getelementptr %struct.edge_rec* %623, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
819
        %625 = load %struct.edge_rec** %624, align 4            ; <%struct.edge_rec*> [#uses=1]
 
820
        %626 = getelementptr %struct.edge_rec* %615, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
821
        %627 = load %struct.edge_rec** %626, align 4            ; <%struct.edge_rec*> [#uses=1]
 
822
        store %struct.edge_rec* %625, %struct.edge_rec** %626, align 4
 
823
        store %struct.edge_rec* %627, %struct.edge_rec** %624, align 4
 
824
        %628 = load %struct.edge_rec** %596, align 4            ; <%struct.edge_rec*> [#uses=1]
 
825
        %629 = load %struct.edge_rec** %616, align 4            ; <%struct.edge_rec*> [#uses=1]
 
826
        store %struct.edge_rec* %628, %struct.edge_rec** %616, align 4
 
827
        store %struct.edge_rec* %629, %struct.edge_rec** %596, align 4
 
828
        %630 = xor i32 %598, 32         ; <i32> [#uses=2]
 
829
        %631 = inttoptr i32 %630 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
830
        %632 = getelementptr %struct.edge_rec* %631, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
831
        %633 = load %struct.edge_rec** %632, align 4            ; <%struct.edge_rec*> [#uses=1]
 
832
        %634 = ptrtoint %struct.edge_rec* %633 to i32           ; <i32> [#uses=2]
 
833
        %635 = add i32 %634, 16         ; <i32> [#uses=1]
 
834
        %636 = and i32 %635, 63         ; <i32> [#uses=1]
 
835
        %637 = and i32 %634, -64                ; <i32> [#uses=1]
 
836
        %638 = or i32 %636, %637                ; <i32> [#uses=1]
 
837
        %639 = inttoptr i32 %638 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
838
        %640 = getelementptr %struct.edge_rec* %174, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
839
        %641 = load %struct.edge_rec** %640, align 4            ; <%struct.edge_rec*> [#uses=1]
 
840
        %642 = ptrtoint %struct.edge_rec* %641 to i32           ; <i32> [#uses=2]
 
841
        %643 = add i32 %642, 16         ; <i32> [#uses=1]
 
842
        %644 = and i32 %643, 63         ; <i32> [#uses=1]
 
843
        %645 = and i32 %642, -64                ; <i32> [#uses=1]
 
844
        %646 = or i32 %644, %645                ; <i32> [#uses=1]
 
845
        %647 = inttoptr i32 %646 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
846
        %648 = getelementptr %struct.edge_rec* %647, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
847
        %649 = load %struct.edge_rec** %648, align 4            ; <%struct.edge_rec*> [#uses=1]
 
848
        %650 = getelementptr %struct.edge_rec* %639, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
849
        %651 = load %struct.edge_rec** %650, align 4            ; <%struct.edge_rec*> [#uses=1]
 
850
        store %struct.edge_rec* %649, %struct.edge_rec** %650, align 4
 
851
        store %struct.edge_rec* %651, %struct.edge_rec** %648, align 4
 
852
        %652 = load %struct.edge_rec** %632, align 4            ; <%struct.edge_rec*> [#uses=1]
 
853
        %653 = load %struct.edge_rec** %640, align 4            ; <%struct.edge_rec*> [#uses=1]
 
854
        store %struct.edge_rec* %652, %struct.edge_rec** %640, align 4
 
855
        store %struct.edge_rec* %653, %struct.edge_rec** %632, align 4
 
856
        %654 = add i32 %630, 48         ; <i32> [#uses=1]
 
857
        %655 = and i32 %654, 63         ; <i32> [#uses=1]
 
858
        %656 = and i32 %598, -64                ; <i32> [#uses=1]
 
859
        %657 = or i32 %655, %656                ; <i32> [#uses=1]
 
860
        %658 = inttoptr i32 %657 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
861
        %659 = getelementptr %struct.edge_rec* %658, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
862
        %660 = load %struct.edge_rec** %659, align 4            ; <%struct.edge_rec*> [#uses=1]
 
863
        %661 = ptrtoint %struct.edge_rec* %660 to i32           ; <i32> [#uses=2]
 
864
        %662 = add i32 %661, 16         ; <i32> [#uses=1]
 
865
        %663 = and i32 %662, 63         ; <i32> [#uses=1]
 
866
        %664 = and i32 %661, -64                ; <i32> [#uses=1]
 
867
        %665 = or i32 %663, %664                ; <i32> [#uses=1]
 
868
        %666 = inttoptr i32 %665 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
869
        br label %bb9.i
 
870
 
 
871
bb25.i:         ; preds = %bb23.i, %bb22.i
 
872
        %667 = add i32 %172, 16         ; <i32> [#uses=1]
 
873
        %668 = and i32 %667, 63         ; <i32> [#uses=1]
 
874
        %669 = and i32 %172, -64                ; <i32> [#uses=1]
 
875
        %670 = or i32 %668, %669                ; <i32> [#uses=1]
 
876
        %671 = inttoptr i32 %670 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
877
        %672 = getelementptr %struct.edge_rec* %671, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
878
        %673 = load %struct.edge_rec** %672, align 4            ; <%struct.edge_rec*> [#uses=1]
 
879
        %674 = ptrtoint %struct.edge_rec* %673 to i32           ; <i32> [#uses=2]
 
880
        %675 = add i32 %674, 16         ; <i32> [#uses=1]
 
881
        %676 = and i32 %675, 63         ; <i32> [#uses=1]
 
882
        %677 = and i32 %674, -64                ; <i32> [#uses=1]
 
883
        %678 = or i32 %676, %677                ; <i32> [#uses=1]
 
884
        %679 = inttoptr i32 %678 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
885
        %680 = call arm_apcscc  %struct.edge_rec* @alloc_edge() nounwind                ; <%struct.edge_rec*> [#uses=4]
 
886
        %681 = getelementptr %struct.edge_rec* %680, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=5]
 
887
        store %struct.edge_rec* %680, %struct.edge_rec** %681, align 4
 
888
        %682 = getelementptr %struct.edge_rec* %680, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
889
        store %struct.VERTEX* %501, %struct.VERTEX** %682, align 4
 
890
        %683 = ptrtoint %struct.edge_rec* %680 to i32           ; <i32> [#uses=4]
 
891
        %684 = add i32 %683, 16         ; <i32> [#uses=1]
 
892
        %685 = inttoptr i32 %684 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
893
        %686 = add i32 %683, 48         ; <i32> [#uses=1]
 
894
        %687 = inttoptr i32 %686 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
895
        %688 = getelementptr %struct.edge_rec* %685, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
896
        store %struct.edge_rec* %687, %struct.edge_rec** %688, align 4
 
897
        %689 = add i32 %683, 32         ; <i32> [#uses=1]
 
898
        %690 = inttoptr i32 %689 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=3]
 
899
        %691 = getelementptr %struct.edge_rec* %690, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
900
        store %struct.edge_rec* %690, %struct.edge_rec** %691, align 4
 
901
        %692 = getelementptr %struct.edge_rec* %690, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
902
        store %struct.VERTEX* %496, %struct.VERTEX** %692, align 4
 
903
        %693 = getelementptr %struct.edge_rec* %687, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
904
        store %struct.edge_rec* %685, %struct.edge_rec** %693, align 4
 
905
        %694 = load %struct.edge_rec** %681, align 4            ; <%struct.edge_rec*> [#uses=1]
 
906
        %695 = ptrtoint %struct.edge_rec* %694 to i32           ; <i32> [#uses=2]
 
907
        %696 = add i32 %695, 16         ; <i32> [#uses=1]
 
908
        %697 = and i32 %696, 63         ; <i32> [#uses=1]
 
909
        %698 = and i32 %695, -64                ; <i32> [#uses=1]
 
910
        %699 = or i32 %697, %698                ; <i32> [#uses=1]
 
911
        %700 = inttoptr i32 %699 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
912
        %701 = getelementptr %struct.edge_rec* %499, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
913
        %702 = load %struct.edge_rec** %701, align 4            ; <%struct.edge_rec*> [#uses=1]
 
914
        %703 = ptrtoint %struct.edge_rec* %702 to i32           ; <i32> [#uses=2]
 
915
        %704 = add i32 %703, 16         ; <i32> [#uses=1]
 
916
        %705 = and i32 %704, 63         ; <i32> [#uses=1]
 
917
        %706 = and i32 %703, -64                ; <i32> [#uses=1]
 
918
        %707 = or i32 %705, %706                ; <i32> [#uses=1]
 
919
        %708 = inttoptr i32 %707 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
920
        %709 = getelementptr %struct.edge_rec* %708, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
921
        %710 = load %struct.edge_rec** %709, align 4            ; <%struct.edge_rec*> [#uses=1]
 
922
        %711 = getelementptr %struct.edge_rec* %700, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
923
        %712 = load %struct.edge_rec** %711, align 4            ; <%struct.edge_rec*> [#uses=1]
 
924
        store %struct.edge_rec* %710, %struct.edge_rec** %711, align 4
 
925
        store %struct.edge_rec* %712, %struct.edge_rec** %709, align 4
 
926
        %713 = load %struct.edge_rec** %681, align 4            ; <%struct.edge_rec*> [#uses=1]
 
927
        %714 = load %struct.edge_rec** %701, align 4            ; <%struct.edge_rec*> [#uses=1]
 
928
        store %struct.edge_rec* %713, %struct.edge_rec** %701, align 4
 
929
        store %struct.edge_rec* %714, %struct.edge_rec** %681, align 4
 
930
        %715 = xor i32 %683, 32         ; <i32> [#uses=1]
 
931
        %716 = inttoptr i32 %715 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
932
        %717 = getelementptr %struct.edge_rec* %716, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
933
        %718 = load %struct.edge_rec** %717, align 4            ; <%struct.edge_rec*> [#uses=1]
 
934
        %719 = ptrtoint %struct.edge_rec* %718 to i32           ; <i32> [#uses=2]
 
935
        %720 = add i32 %719, 16         ; <i32> [#uses=1]
 
936
        %721 = and i32 %720, 63         ; <i32> [#uses=1]
 
937
        %722 = and i32 %719, -64                ; <i32> [#uses=1]
 
938
        %723 = or i32 %721, %722                ; <i32> [#uses=1]
 
939
        %724 = inttoptr i32 %723 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
940
        %725 = getelementptr %struct.edge_rec* %679, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
941
        %726 = load %struct.edge_rec** %725, align 4            ; <%struct.edge_rec*> [#uses=1]
 
942
        %727 = ptrtoint %struct.edge_rec* %726 to i32           ; <i32> [#uses=2]
 
943
        %728 = add i32 %727, 16         ; <i32> [#uses=1]
 
944
        %729 = and i32 %728, 63         ; <i32> [#uses=1]
 
945
        %730 = and i32 %727, -64                ; <i32> [#uses=1]
 
946
        %731 = or i32 %729, %730                ; <i32> [#uses=1]
 
947
        %732 = inttoptr i32 %731 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
948
        %733 = getelementptr %struct.edge_rec* %732, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
949
        %734 = load %struct.edge_rec** %733, align 4            ; <%struct.edge_rec*> [#uses=1]
 
950
        %735 = getelementptr %struct.edge_rec* %724, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
951
        %736 = load %struct.edge_rec** %735, align 4            ; <%struct.edge_rec*> [#uses=1]
 
952
        store %struct.edge_rec* %734, %struct.edge_rec** %735, align 4
 
953
        store %struct.edge_rec* %736, %struct.edge_rec** %733, align 4
 
954
        %737 = load %struct.edge_rec** %717, align 4            ; <%struct.edge_rec*> [#uses=1]
 
955
        %738 = load %struct.edge_rec** %725, align 4            ; <%struct.edge_rec*> [#uses=1]
 
956
        store %struct.edge_rec* %737, %struct.edge_rec** %725, align 4
 
957
        store %struct.edge_rec* %738, %struct.edge_rec** %717, align 4
 
958
        %739 = load %struct.edge_rec** %681, align 4            ; <%struct.edge_rec*> [#uses=1]
 
959
        br label %bb9.i
 
960
 
 
961
do_merge.exit:          ; preds = %bb17.i
 
962
        %740 = getelementptr %struct.edge_rec* %ldo_addr.0.ph.i, i32 0, i32 0           ; <%struct.VERTEX**> [#uses=1]
 
963
        %741 = load %struct.VERTEX** %740, align 4              ; <%struct.VERTEX*> [#uses=1]
 
964
        %742 = icmp eq %struct.VERTEX* %741, %tree_addr.0.i             ; <i1> [#uses=1]
 
965
        br i1 %742, label %bb5.loopexit, label %bb2
 
966
 
 
967
bb2:            ; preds = %bb2, %do_merge.exit
 
968
        %ldo.07 = phi %struct.edge_rec* [ %747, %bb2 ], [ %ldo_addr.0.ph.i, %do_merge.exit ]            ; <%struct.edge_rec*> [#uses=1]
 
969
        %743 = ptrtoint %struct.edge_rec* %ldo.07 to i32                ; <i32> [#uses=1]
 
970
        %744 = xor i32 %743, 32         ; <i32> [#uses=1]
 
971
        %745 = inttoptr i32 %744 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
972
        %746 = getelementptr %struct.edge_rec* %745, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
973
        %747 = load %struct.edge_rec** %746, align 4            ; <%struct.edge_rec*> [#uses=3]
 
974
        %748 = getelementptr %struct.edge_rec* %747, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
975
        %749 = load %struct.VERTEX** %748, align 4              ; <%struct.VERTEX*> [#uses=1]
 
976
        %750 = icmp eq %struct.VERTEX* %749, %tree_addr.0.i             ; <i1> [#uses=1]
 
977
        br i1 %750, label %bb5.loopexit, label %bb2
 
978
 
 
979
bb4:            ; preds = %bb5.loopexit, %bb4
 
980
        %rdo.05 = phi %struct.edge_rec* [ %755, %bb4 ], [ %rdo_addr.0.i, %bb5.loopexit ]                ; <%struct.edge_rec*> [#uses=1]
 
981
        %751 = getelementptr %struct.edge_rec* %rdo.05, i32 0, i32 1            ; <%struct.edge_rec**> [#uses=1]
 
982
        %752 = load %struct.edge_rec** %751, align 4            ; <%struct.edge_rec*> [#uses=1]
 
983
        %753 = ptrtoint %struct.edge_rec* %752 to i32           ; <i32> [#uses=1]
 
984
        %754 = xor i32 %753, 32         ; <i32> [#uses=1]
 
985
        %755 = inttoptr i32 %754 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=3]
 
986
        %756 = getelementptr %struct.edge_rec* %755, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
987
        %757 = load %struct.VERTEX** %756, align 4              ; <%struct.VERTEX*> [#uses=1]
 
988
        %758 = icmp eq %struct.VERTEX* %757, %extra             ; <i1> [#uses=1]
 
989
        br i1 %758, label %bb6, label %bb4
 
990
 
 
991
bb5.loopexit:           ; preds = %bb2, %do_merge.exit
 
992
        %ldo.0.lcssa = phi %struct.edge_rec* [ %ldo_addr.0.ph.i, %do_merge.exit ], [ %747, %bb2 ]               ; <%struct.edge_rec*> [#uses=1]
 
993
        %759 = getelementptr %struct.edge_rec* %rdo_addr.0.i, i32 0, i32 0              ; <%struct.VERTEX**> [#uses=1]
 
994
        %760 = load %struct.VERTEX** %759, align 4              ; <%struct.VERTEX*> [#uses=1]
 
995
        %761 = icmp eq %struct.VERTEX* %760, %extra             ; <i1> [#uses=1]
 
996
        br i1 %761, label %bb6, label %bb4
 
997
 
 
998
bb6:            ; preds = %bb5.loopexit, %bb4
 
999
        %rdo.0.lcssa = phi %struct.edge_rec* [ %rdo_addr.0.i, %bb5.loopexit ], [ %755, %bb4 ]           ; <%struct.edge_rec*> [#uses=1]
 
1000
        %tmp16 = ptrtoint %struct.edge_rec* %ldo.0.lcssa to i32         ; <i32> [#uses=1]
 
1001
        %tmp4 = ptrtoint %struct.edge_rec* %rdo.0.lcssa to i32          ; <i32> [#uses=1]
 
1002
        br label %bb15
 
1003
 
 
1004
bb7:            ; preds = %bb
 
1005
        %762 = getelementptr %struct.VERTEX* %tree, i32 0, i32 1                ; <%struct.VERTEX**> [#uses=1]
 
1006
        %763 = load %struct.VERTEX** %762, align 4              ; <%struct.VERTEX*> [#uses=4]
 
1007
        %764 = icmp eq %struct.VERTEX* %763, null               ; <i1> [#uses=1]
 
1008
        %765 = call arm_apcscc  %struct.edge_rec* @alloc_edge() nounwind                ; <%struct.edge_rec*> [#uses=5]
 
1009
        %766 = getelementptr %struct.edge_rec* %765, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=4]
 
1010
        store %struct.edge_rec* %765, %struct.edge_rec** %766, align 4
 
1011
        %767 = getelementptr %struct.edge_rec* %765, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=3]
 
1012
        br i1 %764, label %bb10, label %bb11
 
1013
 
 
1014
bb8:            ; preds = %entry
 
1015
        %768 = call arm_apcscc  i32 @puts(i8* getelementptr ([21 x i8]* @_2E_str7, i32 0, i32 0)) nounwind              ; <i32> [#uses=0]
 
1016
        call arm_apcscc  void @exit(i32 -1) noreturn nounwind
 
1017
        unreachable
 
1018
 
 
1019
bb10:           ; preds = %bb7
 
1020
        store %struct.VERTEX* %tree, %struct.VERTEX** %767, align 4
 
1021
        %769 = ptrtoint %struct.edge_rec* %765 to i32           ; <i32> [#uses=5]
 
1022
        %770 = add i32 %769, 16         ; <i32> [#uses=1]
 
1023
        %771 = inttoptr i32 %770 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
1024
        %772 = add i32 %769, 48         ; <i32> [#uses=1]
 
1025
        %773 = inttoptr i32 %772 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
1026
        %774 = getelementptr %struct.edge_rec* %771, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1027
        store %struct.edge_rec* %773, %struct.edge_rec** %774, align 4
 
1028
        %775 = add i32 %769, 32         ; <i32> [#uses=1]
 
1029
        %776 = inttoptr i32 %775 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=3]
 
1030
        %777 = getelementptr %struct.edge_rec* %776, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1031
        store %struct.edge_rec* %776, %struct.edge_rec** %777, align 4
 
1032
        %778 = getelementptr %struct.edge_rec* %776, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
1033
        store %struct.VERTEX* %extra, %struct.VERTEX** %778, align 4
 
1034
        %779 = getelementptr %struct.edge_rec* %773, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1035
        store %struct.edge_rec* %771, %struct.edge_rec** %779, align 4
 
1036
        %780 = xor i32 %769, 32         ; <i32> [#uses=1]
 
1037
        br label %bb15
 
1038
 
 
1039
bb11:           ; preds = %bb7
 
1040
        store %struct.VERTEX* %763, %struct.VERTEX** %767, align 4
 
1041
        %781 = ptrtoint %struct.edge_rec* %765 to i32           ; <i32> [#uses=6]
 
1042
        %782 = add i32 %781, 16         ; <i32> [#uses=1]
 
1043
        %783 = inttoptr i32 %782 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
1044
        %784 = add i32 %781, 48         ; <i32> [#uses=1]
 
1045
        %785 = inttoptr i32 %784 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
1046
        %786 = getelementptr %struct.edge_rec* %783, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1047
        store %struct.edge_rec* %785, %struct.edge_rec** %786, align 4
 
1048
        %787 = add i32 %781, 32         ; <i32> [#uses=1]
 
1049
        %788 = inttoptr i32 %787 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=3]
 
1050
        %789 = getelementptr %struct.edge_rec* %788, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1051
        store %struct.edge_rec* %788, %struct.edge_rec** %789, align 4
 
1052
        %790 = getelementptr %struct.edge_rec* %788, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
1053
        store %struct.VERTEX* %tree, %struct.VERTEX** %790, align 4
 
1054
        %791 = getelementptr %struct.edge_rec* %785, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1055
        store %struct.edge_rec* %783, %struct.edge_rec** %791, align 4
 
1056
        %792 = call arm_apcscc  %struct.edge_rec* @alloc_edge() nounwind                ; <%struct.edge_rec*> [#uses=4]
 
1057
        %793 = getelementptr %struct.edge_rec* %792, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=4]
 
1058
        store %struct.edge_rec* %792, %struct.edge_rec** %793, align 4
 
1059
        %794 = getelementptr %struct.edge_rec* %792, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
1060
        store %struct.VERTEX* %tree, %struct.VERTEX** %794, align 4
 
1061
        %795 = ptrtoint %struct.edge_rec* %792 to i32           ; <i32> [#uses=5]
 
1062
        %796 = add i32 %795, 16         ; <i32> [#uses=1]
 
1063
        %797 = inttoptr i32 %796 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
1064
        %798 = add i32 %795, 48         ; <i32> [#uses=2]
 
1065
        %799 = inttoptr i32 %798 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
1066
        %800 = getelementptr %struct.edge_rec* %797, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1067
        store %struct.edge_rec* %799, %struct.edge_rec** %800, align 4
 
1068
        %801 = add i32 %795, 32         ; <i32> [#uses=1]
 
1069
        %802 = inttoptr i32 %801 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=3]
 
1070
        %803 = getelementptr %struct.edge_rec* %802, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1071
        store %struct.edge_rec* %802, %struct.edge_rec** %803, align 4
 
1072
        %804 = getelementptr %struct.edge_rec* %802, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
1073
        store %struct.VERTEX* %extra, %struct.VERTEX** %804, align 4
 
1074
        %805 = getelementptr %struct.edge_rec* %799, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1075
        store %struct.edge_rec* %797, %struct.edge_rec** %805, align 4
 
1076
        %806 = xor i32 %781, 32         ; <i32> [#uses=1]
 
1077
        %807 = inttoptr i32 %806 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1078
        %808 = getelementptr %struct.edge_rec* %807, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
1079
        %809 = load %struct.edge_rec** %808, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1080
        %810 = ptrtoint %struct.edge_rec* %809 to i32           ; <i32> [#uses=2]
 
1081
        %811 = add i32 %810, 16         ; <i32> [#uses=1]
 
1082
        %812 = and i32 %811, 63         ; <i32> [#uses=1]
 
1083
        %813 = and i32 %810, -64                ; <i32> [#uses=1]
 
1084
        %814 = or i32 %812, %813                ; <i32> [#uses=1]
 
1085
        %815 = inttoptr i32 %814 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1086
        %816 = load %struct.edge_rec** %793, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1087
        %817 = ptrtoint %struct.edge_rec* %816 to i32           ; <i32> [#uses=2]
 
1088
        %818 = add i32 %817, 16         ; <i32> [#uses=1]
 
1089
        %819 = and i32 %818, 63         ; <i32> [#uses=1]
 
1090
        %820 = and i32 %817, -64                ; <i32> [#uses=1]
 
1091
        %821 = or i32 %819, %820                ; <i32> [#uses=1]
 
1092
        %822 = inttoptr i32 %821 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1093
        %823 = getelementptr %struct.edge_rec* %822, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1094
        %824 = load %struct.edge_rec** %823, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1095
        %825 = getelementptr %struct.edge_rec* %815, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1096
        %826 = load %struct.edge_rec** %825, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1097
        store %struct.edge_rec* %824, %struct.edge_rec** %825, align 4
 
1098
        store %struct.edge_rec* %826, %struct.edge_rec** %823, align 4
 
1099
        %827 = load %struct.edge_rec** %808, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1100
        %828 = load %struct.edge_rec** %793, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1101
        store %struct.edge_rec* %827, %struct.edge_rec** %793, align 4
 
1102
        store %struct.edge_rec* %828, %struct.edge_rec** %808, align 4
 
1103
        %829 = xor i32 %795, 32         ; <i32> [#uses=3]
 
1104
        %830 = inttoptr i32 %829 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1105
        %831 = getelementptr %struct.edge_rec* %830, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
1106
        %832 = load %struct.VERTEX** %831, align 4              ; <%struct.VERTEX*> [#uses=1]
 
1107
        %833 = and i32 %798, 63         ; <i32> [#uses=1]
 
1108
        %834 = and i32 %795, -64                ; <i32> [#uses=1]
 
1109
        %835 = or i32 %833, %834                ; <i32> [#uses=1]
 
1110
        %836 = inttoptr i32 %835 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1111
        %837 = getelementptr %struct.edge_rec* %836, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1112
        %838 = load %struct.edge_rec** %837, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1113
        %839 = ptrtoint %struct.edge_rec* %838 to i32           ; <i32> [#uses=2]
 
1114
        %840 = add i32 %839, 16         ; <i32> [#uses=1]
 
1115
        %841 = and i32 %840, 63         ; <i32> [#uses=1]
 
1116
        %842 = and i32 %839, -64                ; <i32> [#uses=1]
 
1117
        %843 = or i32 %841, %842                ; <i32> [#uses=1]
 
1118
        %844 = inttoptr i32 %843 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1119
        %845 = load %struct.VERTEX** %767, align 4              ; <%struct.VERTEX*> [#uses=1]
 
1120
        %846 = call arm_apcscc  %struct.edge_rec* @alloc_edge() nounwind                ; <%struct.edge_rec*> [#uses=4]
 
1121
        %847 = getelementptr %struct.edge_rec* %846, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=7]
 
1122
        store %struct.edge_rec* %846, %struct.edge_rec** %847, align 4
 
1123
        %848 = getelementptr %struct.edge_rec* %846, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
1124
        store %struct.VERTEX* %832, %struct.VERTEX** %848, align 4
 
1125
        %849 = ptrtoint %struct.edge_rec* %846 to i32           ; <i32> [#uses=6]
 
1126
        %850 = add i32 %849, 16         ; <i32> [#uses=2]
 
1127
        %851 = inttoptr i32 %850 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
1128
        %852 = add i32 %849, 48         ; <i32> [#uses=1]
 
1129
        %853 = inttoptr i32 %852 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
1130
        %854 = getelementptr %struct.edge_rec* %851, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1131
        store %struct.edge_rec* %853, %struct.edge_rec** %854, align 4
 
1132
        %855 = add i32 %849, 32         ; <i32> [#uses=1]
 
1133
        %856 = inttoptr i32 %855 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=3]
 
1134
        %857 = getelementptr %struct.edge_rec* %856, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1135
        store %struct.edge_rec* %856, %struct.edge_rec** %857, align 4
 
1136
        %858 = getelementptr %struct.edge_rec* %856, i32 0, i32 0               ; <%struct.VERTEX**> [#uses=1]
 
1137
        store %struct.VERTEX* %845, %struct.VERTEX** %858, align 4
 
1138
        %859 = getelementptr %struct.edge_rec* %853, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1139
        store %struct.edge_rec* %851, %struct.edge_rec** %859, align 4
 
1140
        %860 = load %struct.edge_rec** %847, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1141
        %861 = ptrtoint %struct.edge_rec* %860 to i32           ; <i32> [#uses=2]
 
1142
        %862 = add i32 %861, 16         ; <i32> [#uses=1]
 
1143
        %863 = and i32 %862, 63         ; <i32> [#uses=1]
 
1144
        %864 = and i32 %861, -64                ; <i32> [#uses=1]
 
1145
        %865 = or i32 %863, %864                ; <i32> [#uses=1]
 
1146
        %866 = inttoptr i32 %865 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1147
        %867 = getelementptr %struct.edge_rec* %844, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
1148
        %868 = load %struct.edge_rec** %867, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1149
        %869 = ptrtoint %struct.edge_rec* %868 to i32           ; <i32> [#uses=2]
 
1150
        %870 = add i32 %869, 16         ; <i32> [#uses=1]
 
1151
        %871 = and i32 %870, 63         ; <i32> [#uses=1]
 
1152
        %872 = and i32 %869, -64                ; <i32> [#uses=1]
 
1153
        %873 = or i32 %871, %872                ; <i32> [#uses=1]
 
1154
        %874 = inttoptr i32 %873 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1155
        %875 = getelementptr %struct.edge_rec* %874, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1156
        %876 = load %struct.edge_rec** %875, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1157
        %877 = getelementptr %struct.edge_rec* %866, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1158
        %878 = load %struct.edge_rec** %877, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1159
        store %struct.edge_rec* %876, %struct.edge_rec** %877, align 4
 
1160
        store %struct.edge_rec* %878, %struct.edge_rec** %875, align 4
 
1161
        %879 = load %struct.edge_rec** %847, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1162
        %880 = load %struct.edge_rec** %867, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1163
        store %struct.edge_rec* %879, %struct.edge_rec** %867, align 4
 
1164
        store %struct.edge_rec* %880, %struct.edge_rec** %847, align 4
 
1165
        %881 = xor i32 %849, 32         ; <i32> [#uses=3]
 
1166
        %882 = inttoptr i32 %881 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1167
        %883 = getelementptr %struct.edge_rec* %882, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=6]
 
1168
        %884 = load %struct.edge_rec** %883, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1169
        %885 = ptrtoint %struct.edge_rec* %884 to i32           ; <i32> [#uses=2]
 
1170
        %886 = add i32 %885, 16         ; <i32> [#uses=1]
 
1171
        %887 = and i32 %886, 63         ; <i32> [#uses=1]
 
1172
        %888 = and i32 %885, -64                ; <i32> [#uses=1]
 
1173
        %889 = or i32 %887, %888                ; <i32> [#uses=1]
 
1174
        %890 = inttoptr i32 %889 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1175
        %891 = load %struct.edge_rec** %766, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1176
        %892 = ptrtoint %struct.edge_rec* %891 to i32           ; <i32> [#uses=2]
 
1177
        %893 = add i32 %892, 16         ; <i32> [#uses=1]
 
1178
        %894 = and i32 %893, 63         ; <i32> [#uses=1]
 
1179
        %895 = and i32 %892, -64                ; <i32> [#uses=1]
 
1180
        %896 = or i32 %894, %895                ; <i32> [#uses=1]
 
1181
        %897 = inttoptr i32 %896 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1182
        %898 = getelementptr %struct.edge_rec* %897, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1183
        %899 = load %struct.edge_rec** %898, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1184
        %900 = getelementptr %struct.edge_rec* %890, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1185
        %901 = load %struct.edge_rec** %900, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1186
        store %struct.edge_rec* %899, %struct.edge_rec** %900, align 4
 
1187
        store %struct.edge_rec* %901, %struct.edge_rec** %898, align 4
 
1188
        %902 = load %struct.edge_rec** %883, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1189
        %903 = load %struct.edge_rec** %766, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1190
        store %struct.edge_rec* %902, %struct.edge_rec** %766, align 4
 
1191
        store %struct.edge_rec* %903, %struct.edge_rec** %883, align 4
 
1192
        %904 = getelementptr %struct.VERTEX* %763, i32 0, i32 0, i32 0          ; <double*> [#uses=1]
 
1193
        %905 = load double* %904, align 4               ; <double> [#uses=2]
 
1194
        %906 = getelementptr %struct.VERTEX* %763, i32 0, i32 0, i32 1          ; <double*> [#uses=1]
 
1195
        %907 = load double* %906, align 4               ; <double> [#uses=2]
 
1196
        %908 = getelementptr %struct.VERTEX* %extra, i32 0, i32 0, i32 0                ; <double*> [#uses=1]
 
1197
        %909 = load double* %908, align 4               ; <double> [#uses=3]
 
1198
        %910 = getelementptr %struct.VERTEX* %extra, i32 0, i32 0, i32 1                ; <double*> [#uses=1]
 
1199
        %911 = load double* %910, align 4               ; <double> [#uses=3]
 
1200
        %912 = getelementptr %struct.VERTEX* %tree, i32 0, i32 0, i32 0         ; <double*> [#uses=1]
 
1201
        %913 = load double* %912, align 4               ; <double> [#uses=3]
 
1202
        %914 = getelementptr %struct.VERTEX* %tree, i32 0, i32 0, i32 1         ; <double*> [#uses=1]
 
1203
        %915 = load double* %914, align 4               ; <double> [#uses=3]
 
1204
        %916 = fsub double %905, %913           ; <double> [#uses=1]
 
1205
        %917 = fsub double %911, %915           ; <double> [#uses=1]
 
1206
        %918 = fmul double %916, %917           ; <double> [#uses=1]
 
1207
        %919 = fsub double %909, %913           ; <double> [#uses=1]
 
1208
        %920 = fsub double %907, %915           ; <double> [#uses=1]
 
1209
        %921 = fmul double %919, %920           ; <double> [#uses=1]
 
1210
        %922 = fsub double %918, %921           ; <double> [#uses=1]
 
1211
        %923 = fcmp ogt double %922, 0.000000e+00               ; <i1> [#uses=1]
 
1212
        br i1 %923, label %bb15, label %bb13
 
1213
 
 
1214
bb13:           ; preds = %bb11
 
1215
        %924 = fsub double %905, %909           ; <double> [#uses=1]
 
1216
        %925 = fsub double %915, %911           ; <double> [#uses=1]
 
1217
        %926 = fmul double %924, %925           ; <double> [#uses=1]
 
1218
        %927 = fsub double %913, %909           ; <double> [#uses=1]
 
1219
        %928 = fsub double %907, %911           ; <double> [#uses=1]
 
1220
        %929 = fmul double %927, %928           ; <double> [#uses=1]
 
1221
        %930 = fsub double %926, %929           ; <double> [#uses=1]
 
1222
        %931 = fcmp ogt double %930, 0.000000e+00               ; <i1> [#uses=1]
 
1223
        br i1 %931, label %bb15, label %bb14
 
1224
 
 
1225
bb14:           ; preds = %bb13
 
1226
        %932 = and i32 %850, 63         ; <i32> [#uses=1]
 
1227
        %933 = and i32 %849, -64                ; <i32> [#uses=3]
 
1228
        %934 = or i32 %932, %933                ; <i32> [#uses=1]
 
1229
        %935 = inttoptr i32 %934 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1230
        %936 = getelementptr %struct.edge_rec* %935, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1231
        %937 = load %struct.edge_rec** %936, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1232
        %938 = ptrtoint %struct.edge_rec* %937 to i32           ; <i32> [#uses=2]
 
1233
        %939 = add i32 %938, 16         ; <i32> [#uses=1]
 
1234
        %940 = and i32 %939, 63         ; <i32> [#uses=1]
 
1235
        %941 = and i32 %938, -64                ; <i32> [#uses=1]
 
1236
        %942 = or i32 %940, %941                ; <i32> [#uses=1]
 
1237
        %943 = inttoptr i32 %942 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1238
        %944 = load %struct.edge_rec** %847, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1239
        %945 = ptrtoint %struct.edge_rec* %944 to i32           ; <i32> [#uses=2]
 
1240
        %946 = add i32 %945, 16         ; <i32> [#uses=1]
 
1241
        %947 = and i32 %946, 63         ; <i32> [#uses=1]
 
1242
        %948 = and i32 %945, -64                ; <i32> [#uses=1]
 
1243
        %949 = or i32 %947, %948                ; <i32> [#uses=1]
 
1244
        %950 = inttoptr i32 %949 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1245
        %951 = getelementptr %struct.edge_rec* %943, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
1246
        %952 = load %struct.edge_rec** %951, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1247
        %953 = ptrtoint %struct.edge_rec* %952 to i32           ; <i32> [#uses=2]
 
1248
        %954 = add i32 %953, 16         ; <i32> [#uses=1]
 
1249
        %955 = and i32 %954, 63         ; <i32> [#uses=1]
 
1250
        %956 = and i32 %953, -64                ; <i32> [#uses=1]
 
1251
        %957 = or i32 %955, %956                ; <i32> [#uses=1]
 
1252
        %958 = inttoptr i32 %957 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1253
        %959 = getelementptr %struct.edge_rec* %958, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1254
        %960 = load %struct.edge_rec** %959, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1255
        %961 = getelementptr %struct.edge_rec* %950, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1256
        %962 = load %struct.edge_rec** %961, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1257
        store %struct.edge_rec* %960, %struct.edge_rec** %961, align 4
 
1258
        store %struct.edge_rec* %962, %struct.edge_rec** %959, align 4
 
1259
        %963 = load %struct.edge_rec** %847, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1260
        %964 = load %struct.edge_rec** %951, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1261
        store %struct.edge_rec* %963, %struct.edge_rec** %951, align 4
 
1262
        store %struct.edge_rec* %964, %struct.edge_rec** %847, align 4
 
1263
        %965 = add i32 %881, 16         ; <i32> [#uses=1]
 
1264
        %966 = and i32 %965, 63         ; <i32> [#uses=1]
 
1265
        %967 = or i32 %966, %933                ; <i32> [#uses=1]
 
1266
        %968 = inttoptr i32 %967 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1267
        %969 = getelementptr %struct.edge_rec* %968, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=1]
 
1268
        %970 = load %struct.edge_rec** %969, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1269
        %971 = ptrtoint %struct.edge_rec* %970 to i32           ; <i32> [#uses=2]
 
1270
        %972 = add i32 %971, 16         ; <i32> [#uses=1]
 
1271
        %973 = and i32 %972, 63         ; <i32> [#uses=1]
 
1272
        %974 = and i32 %971, -64                ; <i32> [#uses=1]
 
1273
        %975 = or i32 %973, %974                ; <i32> [#uses=1]
 
1274
        %976 = inttoptr i32 %975 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1275
        %977 = load %struct.edge_rec** %883, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1276
        %978 = ptrtoint %struct.edge_rec* %977 to i32           ; <i32> [#uses=2]
 
1277
        %979 = add i32 %978, 16         ; <i32> [#uses=1]
 
1278
        %980 = and i32 %979, 63         ; <i32> [#uses=1]
 
1279
        %981 = and i32 %978, -64                ; <i32> [#uses=1]
 
1280
        %982 = or i32 %980, %981                ; <i32> [#uses=1]
 
1281
        %983 = inttoptr i32 %982 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1282
        %984 = getelementptr %struct.edge_rec* %976, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=3]
 
1283
        %985 = load %struct.edge_rec** %984, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1284
        %986 = ptrtoint %struct.edge_rec* %985 to i32           ; <i32> [#uses=2]
 
1285
        %987 = add i32 %986, 16         ; <i32> [#uses=1]
 
1286
        %988 = and i32 %987, 63         ; <i32> [#uses=1]
 
1287
        %989 = and i32 %986, -64                ; <i32> [#uses=1]
 
1288
        %990 = or i32 %988, %989                ; <i32> [#uses=1]
 
1289
        %991 = inttoptr i32 %990 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=1]
 
1290
        %992 = getelementptr %struct.edge_rec* %991, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1291
        %993 = load %struct.edge_rec** %992, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1292
        %994 = getelementptr %struct.edge_rec* %983, i32 0, i32 1               ; <%struct.edge_rec**> [#uses=2]
 
1293
        %995 = load %struct.edge_rec** %994, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1294
        store %struct.edge_rec* %993, %struct.edge_rec** %994, align 4
 
1295
        store %struct.edge_rec* %995, %struct.edge_rec** %992, align 4
 
1296
        %996 = load %struct.edge_rec** %883, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1297
        %997 = load %struct.edge_rec** %984, align 4            ; <%struct.edge_rec*> [#uses=1]
 
1298
        store %struct.edge_rec* %996, %struct.edge_rec** %984, align 4
 
1299
        store %struct.edge_rec* %997, %struct.edge_rec** %883, align 4
 
1300
        %998 = inttoptr i32 %933 to %struct.edge_rec*           ; <%struct.edge_rec*> [#uses=2]
 
1301
        %999 = load %struct.edge_rec** @avail_edge, align 4             ; <%struct.edge_rec*> [#uses=1]
 
1302
        %1000 = getelementptr %struct.edge_rec* %998, i32 0, i32 1              ; <%struct.edge_rec**> [#uses=1]
 
1303
        store %struct.edge_rec* %999, %struct.edge_rec** %1000, align 4
 
1304
        store %struct.edge_rec* %998, %struct.edge_rec** @avail_edge, align 4
 
1305
        br label %bb15
 
1306
 
 
1307
bb15:           ; preds = %bb14, %bb13, %bb11, %bb10, %bb6
 
1308
        %retval.1.0 = phi i32 [ %780, %bb10 ], [ %829, %bb13 ], [ %829, %bb14 ], [ %tmp4, %bb6 ], [ %849, %bb11 ]               ; <i32> [#uses=1]
 
1309
        %retval.0.0 = phi i32 [ %769, %bb10 ], [ %781, %bb13 ], [ %781, %bb14 ], [ %tmp16, %bb6 ], [ %881, %bb11 ]              ; <i32> [#uses=1]
 
1310
        %agg.result162 = bitcast %struct.EDGE_PAIR* %agg.result to i64*         ; <i64*> [#uses=1]
 
1311
        %1001 = zext i32 %retval.0.0 to i64             ; <i64> [#uses=1]
 
1312
        %1002 = zext i32 %retval.1.0 to i64             ; <i64> [#uses=1]
 
1313
        %1003 = shl i64 %1002, 32               ; <i64> [#uses=1]
 
1314
        %1004 = or i64 %1003, %1001             ; <i64> [#uses=1]
 
1315
        store i64 %1004, i64* %agg.result162, align 4
 
1316
        ret void
 
1317
}
 
1318
 
 
1319
declare arm_apcscc i32 @puts(i8* nocapture) nounwind
 
1320
 
 
1321
declare arm_apcscc void @exit(i32) noreturn nounwind
 
1322
 
 
1323
declare arm_apcscc %struct.edge_rec* @alloc_edge() nounwind