;; Function test_sub.constprop (test_sub.2307.constprop.0, funcdef_no=3, decl_uid=2519, symbol_order=9) (executed once)
test_sub.constprop (struct array2_integer(kind=4) & restrict array, integer(kind=4) & restrict offset)
{
integer(kind=4)[0:D.2525] * restrict array.0;
integer(kind=4) & restrict offset;
integer(kind=4) _18;
integer(kind=4) _20;
integer(kind=4) _53;
integer(kind=4) _54;
integer(kind=4) _56;
integer(kind=4) _57;
integer(kind=4) _63;
integer(kind=4) _64;
<bb 2>:
array.0_3 = array_1(D)->data;
_18 = MEM[(integer(kind=4)[0:D.2326] *)array.0_3][0];
_20 = _18 + 1000;
MEM[(integer(kind=4)[0:D.2326] *)array.0_3][0] = _20;
_54 = MEM[(integer(kind=4)[0:D.2326] *)array.0_3][1];
_53 = _54 + 1000;
MEM[(integer(kind=4)[0:D.2326] *)array.0_3][1] = _53;
_56 = MEM[(integer(kind=4)[0:D.2326] *)array.0_3][2];
_57 = _56 + 1000;
MEM[(integer(kind=4)[0:D.2326] *)array.0_3][2] = _57;
_63 = MEM[(integer(kind=4)[0:D.2326] *)array.0_3][3];
_64 = _63 + 1000;
MEM[(integer(kind=4)[0:D.2326] *)array.0_3][3] = _64;
return;
}
;; Function test_f90 (MAIN__, funcdef_no=0, decl_uid=2289, symbol_order=1) (executed once)
;;
;; Loop 9
;; header 9, latch 8
;; depth 1, outer 0
;; nodes: 9 8
Processing loop 9
single exit 9 -> 10, exit condition if (ivtmp_211 == 0)
Analyzing # of iterations of loop 9
exit condition [1, + , 4294967295] != 0
bounds on difference of bases: -1 ... -1
result:
# of iterations 1, bounded by 1
number of iterations 1
Induction variables:
ssa name count1.12_36
type integer(kind=8)
base 9
step 4
ssa name count1.12_76
type integer(kind=8)
base 11
step 4
ssa name _92
type integer(kind=8)
base 1
step 1
ssa name _93
type integer(kind=8)
base pretmp_173 + 1
step 1
ssa name _94
type integer(kind=8)
base pretmp_173 + -2
step 1
ssa name l.10_95
type integer(kind=4)
base 1
step 1
is a biv
ssa name count1.12_97
type integer(kind=8)
base 10
step 4
ssa name count.44_102
type integer(kind=4)
base 2
step -1
is a biv
ssa name l.10_103
type integer(kind=4)
base 2
step 1
is a biv
ssa name count.44_104
type integer(kind=4)
base 1
step -1
is a biv
ssa name count1.12_131
type integer(kind=8)
base 8
step 4
is a biv
ssa name count1.12_136
type integer(kind=8)
base 12
step 4
is a biv
ssa name ivtmp_191
type unsigned int
base 2
step 4294967295
is a biv
ssa name ivtmp_211
type unsigned int
base 1
step 4294967295
is a biv
Uses:
use 0
address
in statement _147 = temp.25[count1.12_131];
at position temp.25[count1.12_131]
type integer(kind=4) *
base (integer(kind=4) *) &temp.25 + 32
step 16
base object (void *) &temp.25
related candidates
use 1
address
in statement MEM[(integer(kind=4)[4] *)&s][_94].a[0] = _147;
at position MEM[(integer(kind=4)[4] *)&s][_94].a[0]
type integer(kind=4) *
base (integer(kind=4) *) (&s + ((sizetype) pretmp_173 * 16 + 18446744073709551584))
step 16
base object (void *) &s
related candidates
use 2
address
in statement _130 = temp.25[count1.12_36];
at position temp.25[count1.12_36]
type integer(kind=4) *
base (integer(kind=4) *) &temp.25 + 36
step 16
base object (void *) &temp.25
related candidates
use 3
address
in statement MEM[(integer(kind=4)[4] *)&s][_94].a[1] = _130;
at position MEM[(integer(kind=4)[4] *)&s][_94].a[1]
type integer(kind=4) *
base (integer(kind=4) *) (&s + ((sizetype) pretmp_173 * 16 + 18446744073709551588))
step 16
base object (void *) &s
related candidates
use 4
address
in statement _74 = temp.25[count1.12_97];
at position temp.25[count1.12_97]
type integer(kind=4) *
base (integer(kind=4) *) &temp.25 + 40
step 16
base object (void *) &temp.25
related candidates
use 5
address
in statement MEM[(integer(kind=4)[4] *)&s][_94].a[2] = _74;
at position MEM[(integer(kind=4)[4] *)&s][_94].a[2]
type integer(kind=4) *
base (integer(kind=4) *) (&s + ((sizetype) pretmp_173 * 16 + 18446744073709551592))
step 16
base object (void *) &s
related candidates
use 6
address
in statement _78 = temp.25[count1.12_76];
at position temp.25[count1.12_76]
type integer(kind=4) *
base (integer(kind=4) *) &temp.25 + 44
step 16
base object (void *) &temp.25
related candidates
use 7
address
in statement MEM[(integer(kind=4)[4] *)&s][_94].a[3] = _78;
at position MEM[(integer(kind=4)[4] *)&s][_94].a[3]
type integer(kind=4) *
base (integer(kind=4) *) (&s + ((sizetype) pretmp_173 * 16 + 18446744073709551596))
step 16
base object (void *) &s
related candidates
use 8
compare
in statement if (ivtmp_211 == 0)
at position
type unsigned int
base 1
step 4294967295
is a biv
related candidates
count1.12_161 is invariant (1), eliminable
pretmp_173 is invariant (2), eliminable
candidate 0 (important)
var_before ivtmp.58
var_after ivtmp.58
incremented before exit test
type unsigned int
base 0
step 1
candidate 1 (important)
var_before ivtmp.59
var_after ivtmp.59
incremented before exit test
type unsigned long
base 0
step 1
candidate 2 (important)
var_before ivtmp.60
var_after ivtmp.60
incremented before exit test
type unsigned int
base 1
step 1
candidate 3 (important)
original biv
type integer(kind=4)
base 1
step 1
candidate 4 (important)
var_before ivtmp.61
var_after ivtmp.61
incremented before exit test
type unsigned int
base 2
step 4294967295
candidate 5 (important)
var_before ivtmp.62
var_after ivtmp.62
incremented before exit test
type unsigned int
base 0
step 4294967295
candidate 6 (important)
original biv
type integer(kind=4)
base 2
step -1
candidate 7 (important)
var_before ivtmp.63
var_after ivtmp.63
incremented before exit test
type unsigned int
base 2
step 1
candidate 8 (important)
var_before ivtmp.64
var_after ivtmp.64
incremented before exit test
type unsigned int
base 1
step 4294967295
candidate 9 (important)
var_before ivtmp.65
var_after ivtmp.65
incremented before exit test
type unsigned long
base 8
step 4
candidate 10 (important)
var_before ivtmp.66
var_after ivtmp.66
incremented before exit test
type unsigned long
base 0
step 4
candidate 11 (important)
original biv
type integer(kind=8)
base 8
step 4
candidate 12 (important)
var_before ivtmp.67
var_after ivtmp.67
incremented before exit test
type unsigned long
base 12
step 4
candidate 13 (important)
original biv
type unsigned int
base 2
step 4294967295
candidate 14
var_before ivtmp.68
var_after ivtmp.68
incremented before exit test
type unsigned long
base (unsigned long) ((integer(kind=4) *) &temp.25 + 32)
step 16
base object (void *) &temp.25
Candidate 14 is related to use 0
candidate 15 (important)
var_before ivtmp.69
var_after ivtmp.69
incremented before exit test
type sizetype
base 0
step 16
Candidate 15 is related to use 0
candidate 16
var_before ivtmp.70
var_after ivtmp.70
incremented before exit test
type unsigned long
base (unsigned long) &temp.25
step 16
base object (void *) &temp.25
Candidate 16 is related to use 0
candidate 17
var_before ivtmp.71
var_after ivtmp.71
incremented before exit test
type unsigned long
base (unsigned long) (&s + ((sizetype) pretmp_173 * 16 + 18446744073709551584))
step 16
base object (void *) &s
Candidate 17 is related to use 1
Candidate 15 is related to use 1
candidate 18
var_before ivtmp.72
var_after ivtmp.72
incremented before exit test
type unsigned long
base (unsigned long) (&s + (sizetype) pretmp_173 * 16)
step 16
base object (void *) &s
Candidate 18 is related to use 1
candidate 19
var_before ivtmp.73
var_after ivtmp.73
incremented before exit test
type unsigned long
base (unsigned long) ((integer(kind=4) *) &temp.25 + 36)
step 16
base object (void *) &temp.25
Candidate 19 is related to use 2
Candidate 15 is related to use 2
Candidate 16 is related to use 2
candidate 20
var_before ivtmp.74
var_after ivtmp.74
incremented before exit test
type unsigned long
base (unsigned long) (&s + ((sizetype) pretmp_173 * 16 + 18446744073709551588))
step 16
base object (void *) &s
Candidate 20 is related to use 3
Candidate 15 is related to use 3
Candidate 18 is related to use 3
candidate 21
var_before ivtmp.75
var_after ivtmp.75
incremented before exit test
type unsigned long
base (unsigned long) ((integer(kind=4) *) &temp.25 + 40)
step 16
base object (void *) &temp.25
Candidate 21 is related to use 4
Candidate 15 is related to use 4
Candidate 16 is related to use 4
candidate 22
var_before ivtmp.76
var_after ivtmp.76
incremented before exit test
type unsigned long
base (unsigned long) (&s + ((sizetype) pretmp_173 * 16 + 18446744073709551592))
step 16
base object (void *) &s
Candidate 22 is related to use 5
Candidate 15 is related to use 5
Candidate 18 is related to use 5
candidate 23
var_before ivtmp.77
var_after ivtmp.77
incremented before exit test
type unsigned long
base (unsigned long) ((integer(kind=4) *) &temp.25 + 44)
step 16
base object (void *) &temp.25
Candidate 23 is related to use 6
Candidate 15 is related to use 6
Candidate 16 is related to use 6
candidate 24
var_before ivtmp.78
var_after ivtmp.78
incremented before exit test
type unsigned long
base (unsigned long) (&s + ((sizetype) pretmp_173 * 16 + 18446744073709551596))
step 16
base object (void *) &s
Candidate 24 is related to use 7
Candidate 15 is related to use 7
Candidate 18 is related to use 7
Candidate 8 is related to use 8
Candidate 5 is related to use 8
Candidate 5 is related to use 8
force_expr_to_var_cost size costs:
integer 0
symbol 1
address 1
other 16
force_expr_to_var_cost speed costs:
integer 0
symbol 1
address 1
other 16
get_address_cost:
min offset SI -2147483648
max offset SI 2147483647
allowed multipliers: 1 2 4 8
Address costs:
index costs 2
sym + index costs 2
var + index costs 3
sym + var + index costs 3
cst + index costs 2
sym + cst + index costs 4
var + cst + index costs 3
sym + var + cst + index costs 8
rat * index costs 2
sym + rat * index costs 2
var + rat * index costs 3
sym + var + rat * index costs 3
cst + rat * index costs 2
sym + cst + rat * index costs 4
var + cst + rat * index costs 3
sym + var + cst + rat * index costs 8
Candidate costs:
cand cost
0 7
1 7
2 7
3 7
4 7
5 7
6 7
7 7
8 7
9 7
10 7
11 7
12 7
13 7
14 7
15 7
16 5
17 13
18 15
19 7
20 13
21 7
22 13
23 7
24 13
Use-candidate costs:
Use 0:
cand cost compl. depends on
1 7 2 inv_expr:0
9 3 2 inv_expr:1
10 3 3 inv_expr:0
11 3 2 inv_expr:1
12 3 3 inv_expr:2
14 2 0
15 3 2 inv_expr:0
16 2 1
19 2 1
21 2 1
23 2 1
Use 1:
cand cost compl. depends on
1 17 2 inv_expr:3
9 13 3 inv_expr:4
10 13 3 inv_expr:3
11 13 3 inv_expr:4
12 13 3 inv_expr:5
15 13 2 inv_expr:3
17 2 0
18 2 1
20 2 1
22 2 1
24 2 1
Use 2:
cand cost compl. depends on
1 7 2 inv_expr:6
9 3 3 inv_expr:7
10 3 3 inv_expr:6
11 3 3 inv_expr:7
12 3 3 inv_expr:8
14 2 1
15 3 2 inv_expr:6
16 2 1
19 2 0
21 2 1
23 2 1
Use 3:
cand cost compl. depends on
1 17 2 inv_expr:9
9 13 3 inv_expr:10
10 13 3 inv_expr:9
11 13 3 inv_expr:10
12 13 3 inv_expr:11
15 13 2 inv_expr:9
17 2 1
18 2 1
20 2 0
22 2 1
24 2 1
Use 4:
cand cost compl. depends on
1 7 2 inv_expr:12
9 3 3 inv_expr:13
10 3 3 inv_expr:12
11 3 3 inv_expr:13
12 3 3 inv_expr:14
14 2 1
15 3 2 inv_expr:12
16 2 1
19 2 1
21 2 0
23 2 1
Use 5:
cand cost compl. depends on
1 17 2 inv_expr:15
9 13 3 inv_expr:16
10 13 3 inv_expr:15
11 13 3 inv_expr:16
12 13 3 inv_expr:17
15 13 2 inv_expr:15
17 2 1
18 2 1
20 2 1
22 2 0
24 2 1
Use 6:
cand cost compl. depends on
1 7 2 inv_expr:18
9 3 3 inv_expr:19
10 3 3 inv_expr:18
11 3 3 inv_expr:19
12 3 3 inv_expr:20
14 2 1
15 3 2 inv_expr:18
16 2 1
19 2 1
21 2 1
23 2 0
Use 7:
cand cost compl. depends on
1 17 2 inv_expr:21
9 13 3 inv_expr:22
10 13 3 inv_expr:21
11 13 3 inv_expr:22
12 13 3 inv_expr:23
15 13 2 inv_expr:21
17 2 1
18 2 1
20 2 1
22 2 1
24 2 0
Use 8:
cand cost compl. depends on
0 0 0
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0
12 0 0
13 -1 0
14 2 0
15 0 0
16 2 0
17 10 0 2
18 12 0 2
19 2 0
20 8 0 2
21 2 0
22 8 0 2
23 2 0
24 8 0 2
Global costs:
target_avail_regs 15
target_clobbered_regs 9
target_reg_cost 4
target_spill_cost 16
regs_used 0
cost for size:
ivs cost
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 39
14 42
15 45
16 144
17 153
18 162
19 171
20 180
21 189
22 198
23 207
24 216
25 225
26 234
27 243
28 252
29 261
30 270
Initial set of candidates:
cost: 80 (complexity 23)
cand_cost: 7
cand_use_cost: 64 (complexity 23)
candidates: 9
use:0 --> iv_cand:9, cost=(3,2)
use:1 --> iv_cand:9, cost=(13,3)
use:2 --> iv_cand:9, cost=(3,3)
use:3 --> iv_cand:9, cost=(13,3)
use:4 --> iv_cand:9, cost=(3,3)
use:5 --> iv_cand:9, cost=(13,3)
use:6 --> iv_cand:9, cost=(3,3)
use:7 --> iv_cand:9, cost=(13,3)
use:8 --> iv_cand:9, cost=(0,0)
Improved to:
cost: 46 (complexity 14)
cand_cost: 20
cand_use_cost: 20 (complexity 14)
candidates: 9, 17
use:0 --> iv_cand:9, cost=(3,2)
use:1 --> iv_cand:17, cost=(2,0)
use:2 --> iv_cand:9, cost=(3,3)
use:3 --> iv_cand:17, cost=(2,1)
use:4 --> iv_cand:9, cost=(3,3)
use:5 --> iv_cand:17, cost=(2,1)
use:6 --> iv_cand:9, cost=(3,3)
use:7 --> iv_cand:17, cost=(2,1)
use:8 --> iv_cand:9, cost=(0,0)
Improved to:
cost: 38 (complexity 7)
cand_cost: 18
cand_use_cost: 18 (complexity 7)
candidates: 16, 17
use:0 --> iv_cand:16, cost=(2,1)
use:1 --> iv_cand:17, cost=(2,0)
use:2 --> iv_cand:16, cost=(2,1)
use:3 --> iv_cand:17, cost=(2,1)
use:4 --> iv_cand:16, cost=(2,1)
use:5 --> iv_cand:17, cost=(2,1)
use:6 --> iv_cand:16, cost=(2,1)
use:7 --> iv_cand:17, cost=(2,1)
use:8 --> iv_cand:16, cost=(2,0)
Initial set of candidates:
cost: 80 (complexity 16)
cand_cost: 7
cand_use_cost: 64 (complexity 16)
candidates: 15
use:0 --> iv_cand:15, cost=(3,2)
use:1 --> iv_cand:15, cost=(13,2)
use:2 --> iv_cand:15, cost=(3,2)
use:3 --> iv_cand:15, cost=(13,2)
use:4 --> iv_cand:15, cost=(3,2)
use:5 --> iv_cand:15, cost=(13,2)
use:6 --> iv_cand:15, cost=(3,2)
use:7 --> iv_cand:15, cost=(13,2)
use:8 --> iv_cand:15, cost=(0,0)
Improved to:
cost: 46 (complexity 11)
cand_cost: 20
cand_use_cost: 20 (complexity 11)
candidates: 15, 17
use:0 --> iv_cand:15, cost=(3,2)
use:1 --> iv_cand:17, cost=(2,0)
use:2 --> iv_cand:15, cost=(3,2)
use:3 --> iv_cand:17, cost=(2,1)
use:4 --> iv_cand:15, cost=(3,2)
use:5 --> iv_cand:17, cost=(2,1)
use:6 --> iv_cand:15, cost=(3,2)
use:7 --> iv_cand:17, cost=(2,1)
use:8 --> iv_cand:15, cost=(0,0)
Improved to:
cost: 38 (complexity 7)
cand_cost: 18
cand_use_cost: 18 (complexity 7)
candidates: 16, 17
use:0 --> iv_cand:16, cost=(2,1)
use:1 --> iv_cand:17, cost=(2,0)
use:2 --> iv_cand:16, cost=(2,1)
use:3 --> iv_cand:17, cost=(2,1)
use:4 --> iv_cand:16, cost=(2,1)
use:5 --> iv_cand:17, cost=(2,1)
use:6 --> iv_cand:16, cost=(2,1)
use:7 --> iv_cand:17, cost=(2,1)
use:8 --> iv_cand:16, cost=(2,0)
Original cost 38 (complexity 7)
Final cost 38 (complexity 7)
Selected IV set:
candidate 16
var_before ivtmp.70_17
var_after ivtmp.70_20
incremented before exit test
type unsigned long
base (unsigned long) &temp.25
step 16
base object (void *) &temp.25
candidate 17
var_before ivtmp.71_24
var_after ivtmp.71_25
incremented before exit test
type unsigned long
base (unsigned long) (&s + ((sizetype) pretmp_173 * 16 + 18446744073709551584))
step 16
base object (void *) &s
Replacing exit test: if (ivtmp_211 == 0)
;;
;; Loop 2
;; header 6, latch 5
;; depth 2, outer 1
;; nodes: 6 5
Processing loop 2
single exit 6 -> 7, exit condition if (ivtmp_198 == 0)
Analyzing # of iterations of loop 2
exit condition [1, + , 4294967295] != 0
bounds on difference of bases: -1 ... -1
result:
# of iterations 1, bounded by 1
number of iterations 1
Induction variables:
ssa name l.10_86
type integer(kind=4)
base 2
step 1
is a biv
ssa name count.40_87
type integer(kind=4)
base 1
step -1
is a biv
ssa name count1.12_125
type integer(kind=8)
base count1.12_124
step 4
is a biv
ssa name count.40_133
type integer(kind=4)
base 2
step -1
is a biv
ssa name count1.12_153
type integer(kind=8)
base count1.12_124 + 2
step 4
ssa name count1.12_175
type integer(kind=8)
base count1.12_124 + 1
step 4
ssa name count1.12_177
type integer(kind=8)
base count1.12_124 + 3
step 4
ssa name count1.12_182
type integer(kind=8)
base count1.12_124 + 4
step 4
is a biv
ssa name l.10_186
type integer(kind=4)
base 1
step 1
is a biv
ssa name _192
type integer(kind=4)
base pretmp_79 + 1
step 1
ssa name _193
type integer(kind=4)
base pretmp_79 + 101
step 1
ssa name _196
type integer(kind=4)
base 2
step 2
ssa name ivtmp_198
type unsigned int
base 1
step 4294967295
is a biv
ssa name _199
type integer(kind=4)
base pretmp_79 + 2
step 2
ssa name _200
type integer(kind=4)
base pretmp_79 + 102
step 2
ssa name ivtmp_208
type unsigned int
base 2
step 4294967295
is a biv
ssa name _212
type integer(kind=4)
base pretmp_39 + 1
step 1
ssa name _213
type integer(kind=4)
base pretmp_39 + 101
step 1
ssa name _219
type integer(kind=4)
base pretmp_39 + 2
step 2
ssa name _220
type integer(kind=4)
base pretmp_39 + 102
step 2
Uses:
use 0
generic
in statement _193 = _192 + 100;
at position
type integer(kind=4)
base pretmp_79 + 101
step 1
related candidates
use 1
generic
in statement _200 = _199 + 100;
at position
type integer(kind=4)
base pretmp_79 + 102
step 2
related candidates
use 2
generic
in statement _213 = _212 + 100;
at position
type integer(kind=4)
base pretmp_39 + 101
step 1
related candidates
use 3
generic
in statement _220 = _219 + 100;
at position
type integer(kind=4)
base pretmp_39 + 102
step 2
related candidates
use 4
address
in statement temp.25[count1.12_125] = _45;
at position temp.25[count1.12_125]
type integer(kind=4) *
base (integer(kind=4) *) (&temp.25 + (sizetype) count1.12_124 * 4)
step 16
base object (void *) &temp.25
related candidates
use 5
address
in statement temp.25[count1.12_175] = _155;
at position temp.25[count1.12_175]
type integer(kind=4) *
base (integer(kind=4) *) (&temp.25 + ((sizetype) count1.12_124 + 1) * 4)
step 16
base object (void *) &temp.25
related candidates
use 6
address
in statement temp.25[count1.12_153] = _121;
at position temp.25[count1.12_153]
type integer(kind=4) *
base (integer(kind=4) *) (&temp.25 + ((sizetype) count1.12_124 + 2) * 4)
step 16
base object (void *) &temp.25
related candidates
use 7
address
in statement temp.25[count1.12_177] = _180;
at position temp.25[count1.12_177]
type integer(kind=4) *
base (integer(kind=4) *) (&temp.25 + ((sizetype) count1.12_124 + 3) * 4)
step 16
base object (void *) &temp.25
related candidates
use 8
compare
in statement if (ivtmp_198 == 0)
at position
type unsigned int
base 1
step 4294967295
is a biv
related candidates
pretmp_39 is invariant (3), eliminable
pretmp_79 is invariant (2), eliminable
count1.12_124 is invariant (1), eliminable
candidate 0 (important)
var_before ivtmp.80
var_after ivtmp.80
incremented before exit test
type unsigned int
base 0
step 1
candidate 1 (important)
var_before ivtmp.81
var_after ivtmp.81
incremented before exit test
type unsigned long
base 0
step 1
candidate 2 (important)
var_before ivtmp.82
var_after ivtmp.82
incremented before exit test
type unsigned int
base 2
step 1
candidate 3 (important)
var_before ivtmp.83
var_after ivtmp.83
incremented before exit test
type unsigned int
base 1
step 4294967295
candidate 4 (important)
var_before ivtmp.84
var_after ivtmp.84
incremented before exit test
type unsigned int
base 0
step 4294967295
candidate 5 (important)
var_before ivtmp.85
var_after ivtmp.85
incremented before exit test
type unsigned long
base (unsigned long) count1.12_124
step 4
candidate 6 (important)
var_before ivtmp.86
var_after ivtmp.86
incremented before exit test
type unsigned long
base 0
step 4
candidate 7 (important)
original biv
type integer(kind=8)
base count1.12_124
step 4
candidate 8 (important)
var_before ivtmp.87
var_after ivtmp.87
incremented before exit test
type unsigned int
base 2
step 4294967295
candidate 9 (important)
original biv
type integer(kind=4)
base 2
step -1
candidate 10 (important)
var_before ivtmp.88
var_after ivtmp.88
incremented before exit test
type unsigned long
base (unsigned long) (count1.12_124 + 4)
step 4
candidate 11 (important)
var_before ivtmp.89
var_after ivtmp.89
incremented before exit test
type unsigned int
base 1
step 1
candidate 12 (important)
original biv
type integer(kind=4)
base 1
step 1
candidate 13 (important)
original biv
type unsigned int
base 2
step 4294967295
candidate 14
var_before ivtmp.90
var_after ivtmp.90
incremented before exit test
type unsigned int
base (unsigned int) (pretmp_79 + 101)
step 1
Candidate 14 is related to use 0
Candidate 0 is related to use 0
candidate 15
var_before ivtmp.91
var_after ivtmp.91
incremented before exit test
type unsigned int
base (unsigned int) pretmp_79
step 1
Candidate 15 is related to use 0
candidate 16
var_before ivtmp.92
var_after ivtmp.92
incremented before exit test
type unsigned int
base (unsigned int) (pretmp_79 + 102)
step 2
Candidate 16 is related to use 1
candidate 17 (important)
var_before ivtmp.93
var_after ivtmp.93
incremented before exit test
type unsigned int
base 0
step 2
Candidate 17 is related to use 1
candidate 18
var_before ivtmp.94
var_after ivtmp.94
incremented before exit test
type unsigned int
base (unsigned int) pretmp_79
step 2
Candidate 18 is related to use 1
candidate 19
var_before ivtmp.95
var_after ivtmp.95
incremented before exit test
type unsigned int
base (unsigned int) (pretmp_39 + 101)
step 1
Candidate 19 is related to use 2
Candidate 0 is related to use 2
candidate 20
var_before ivtmp.96
var_after ivtmp.96
incremented before exit test
type unsigned int
base (unsigned int) pretmp_39
step 1
Candidate 20 is related to use 2
candidate 21
var_before ivtmp.97
var_after ivtmp.97
incremented before exit test
type unsigned int
base (unsigned int) (pretmp_39 + 102)
step 2
Candidate 21 is related to use 3
Candidate 17 is related to use 3
candidate 22
var_before ivtmp.98
var_after ivtmp.98
incremented before exit test
type unsigned int
base (unsigned int) pretmp_39
step 2
Candidate 22 is related to use 3
candidate 23
var_before ivtmp.99
var_after ivtmp.99
incremented before exit test
type unsigned long
base (unsigned long) (&temp.25 + (sizetype) count1.12_124 * 4)
step 16
base object (void *) &temp.25
Candidate 23 is related to use 4
candidate 24 (important)
var_before ivtmp.100
var_after ivtmp.100
incremented before exit test
type sizetype
base 0
step 16
Candidate 24 is related to use 4
candidate 25
var_before ivtmp.101
var_after ivtmp.101
incremented before exit test
type unsigned long
base (unsigned long) (&temp.25 + ((sizetype) count1.12_124 + 1) * 4)
step 16
base object (void *) &temp.25
Candidate 25 is related to use 5
Candidate 24 is related to use 5
Candidate 23 is related to use 5
candidate 26
var_before ivtmp.102
var_after ivtmp.102
incremented before exit test
type unsigned long
base (unsigned long) (&temp.25 + ((sizetype) count1.12_124 + 2) * 4)
step 16
base object (void *) &temp.25
Candidate 26 is related to use 6
Candidate 24 is related to use 6
Candidate 23 is related to use 6
candidate 27
var_before ivtmp.103
var_after ivtmp.103
incremented before exit test
type unsigned long
base (unsigned long) (&temp.25 + ((sizetype) count1.12_124 + 3) * 4)
step 16
base object (void *) &temp.25
Candidate 27 is related to use 7
Candidate 24 is related to use 7
Candidate 23 is related to use 7
Candidate 3 is related to use 8
Candidate 4 is related to use 8
Candidate 4 is related to use 8
Candidate costs:
cand cost
0 7
1 7
2 7
3 7
4 7
5 7
6 7
7 7
8 7
9 7
10 7
11 7
12 7
13 7
14 7
15 7
16 7
17 7
18 7
19 7
20 7
21 7
22 7
23 8
24 7
25 10
26 10
27 10
Use-candidate costs:
Use 0:
cand cost compl. depends on
0 6 1 inv_expr:0
1 8 0
2 6 1 inv_expr:1
3 6 1 inv_expr:2
4 6 1 inv_expr:0
8 6 1 inv_expr:3
9 6 1 inv_expr:3
11 6 1 inv_expr:4
12 6 1 inv_expr:4
13 6 1 inv_expr:3
14 0 0
15 4 1
19 6 0 inv_expr:5
20 8 1 inv_expr:6
Use 1:
cand cost compl. depends on
0 10 1 inv_expr:2
1 12 0
2 10 1 inv_expr:7
3 10 1 inv_expr:8
4 10 1 inv_expr:2
8 10 1 inv_expr:9
9 10 1 inv_expr:9
11 10 1 inv_expr:4
12 10 1 inv_expr:4
13 10 1 inv_expr:9
14 16 1 inv_expr:10
15 14 1 inv_expr:11
16 0 0
17 6 1 inv_expr:2
18 4 1
19 16 1 inv_expr:12
20 14 1 inv_expr:13
21 6 0 inv_expr:5
22 8 1 inv_expr:14
Use 2:
cand cost compl. depends on
0 6 1 inv_expr:15
1 8 0
2 6 1 inv_expr:16
3 6 1 inv_expr:17
4 6 1 inv_expr:15
8 6 1 inv_expr:18
9 6 1 inv_expr:18
11 6 1 inv_expr:19
12 6 1 inv_expr:19
13 6 1 inv_expr:18
14 6 0 inv_expr:20
15 8 1 inv_expr:21
19 0 0
20 4 1
Use 3:
cand cost compl. depends on
0 10 1 inv_expr:17
1 12 0
2 10 1 inv_expr:22
3 10 1 inv_expr:23
4 10 1 inv_expr:17
8 10 1 inv_expr:24
9 10 1 inv_expr:24
11 10 1 inv_expr:19
12 10 1 inv_expr:19
13 10 1 inv_expr:24
14 16 1 inv_expr:25
15 14 1 inv_expr:26
16 6 0 inv_expr:20
17 6 1 inv_expr:17
18 8 1 inv_expr:27
19 16 1 inv_expr:28
20 14 1 inv_expr:29
21 0 0
22 4 1
Use 4:
cand cost compl. depends on
1 10 1 inv_expr:30
5 3 2 inv_expr:31
6 6 2 inv_expr:30
7 3 2 inv_expr:31
10 3 3 inv_expr:32
23 2 0
24 6 1 inv_expr:30
25 2 1
26 2 1
27 2 1
Use 5:
cand cost compl. depends on
1 10 2 inv_expr:33
5 3 3 inv_expr:34
6 6 3 inv_expr:33
7 3 3 inv_expr:34
10 3 3 inv_expr:35
23 2 1
24 6 2 inv_expr:33
25 2 0
26 2 1
27 2 1
Use 6:
cand cost compl. depends on
1 10 2 inv_expr:36
5 3 3 inv_expr:37
6 6 3 inv_expr:36
7 3 3 inv_expr:37
10 3 3 inv_expr:38
23 2 1
24 6 2 inv_expr:36
25 2 1
26 2 0
27 2 1
Use 7:
cand cost compl. depends on
1 10 2 inv_expr:39
5 3 3 inv_expr:40
6 6 3 inv_expr:39
7 3 3 inv_expr:40
10 3 3 inv_expr:41
23 2 1
24 6 2 inv_expr:39
25 2 1
26 2 1
27 2 0
Use 8:
cand cost compl. depends on
0 0 0
1 0 0
2 0 0
3 0 0
4 0 0
5 2 0 1
6 0 0
7 2 0 1
8 0 0
9 0 0
10 2 0 1
11 0 0
12 0 0
13 -1 0
14 2 0 2
15 2 0 2
16 2 0 2
17 0 0
18 2 0 2
19 2 0 3
20 2 0 3
21 2 0 3
22 2 0 3
23 5 0 1
24 0 0
25 5 0 1
26 5 0 1
27 5 0 1
Global costs:
target_avail_regs 15
target_clobbered_regs 9
target_reg_cost 4
target_spill_cost 16
regs_used 0
cost for size:
ivs cost
0 0
1 1
2 2
3 3
4 12
5 15
6 18
7 63
8 72
9 81
10 90
11 99
12 108
13 117
14 126
15 135
16 144
17 153
18 162
19 171
20 180
21 189
22 198
23 207
24 216
25 225
26 234
27 243
28 252
29 261
30 270
Initial set of candidates:
cost: 130 (complexity 15)
cand_cost: 14
cand_use_cost: 44 (complexity 15)
candidates: 5, 12
use:0 --> iv_cand:12, cost=(6,1)
use:1 --> iv_cand:12, cost=(10,1)
use:2 --> iv_cand:12, cost=(6,1)
use:3 --> iv_cand:12, cost=(10,1)
use:4 --> iv_cand:5, cost=(3,2)
use:5 --> iv_cand:5, cost=(3,3)
use:6 --> iv_cand:5, cost=(3,3)
use:7 --> iv_cand:5, cost=(3,3)
use:8 --> iv_cand:12, cost=(0,0)
Improved to:
cost: 67 (complexity 7)
cand_cost: 15
cand_use_cost: 40 (complexity 7)
candidates: 12, 23
use:0 --> iv_cand:12, cost=(6,1)
use:1 --> iv_cand:12, cost=(10,1)
use:2 --> iv_cand:12, cost=(6,1)
use:3 --> iv_cand:12, cost=(10,1)
use:4 --> iv_cand:23, cost=(2,0)
use:5 --> iv_cand:23, cost=(2,1)
use:6 --> iv_cand:23, cost=(2,1)
use:7 --> iv_cand:23, cost=(2,1)
use:8 --> iv_cand:12, cost=(0,0)
Improved to:
cost: 66 (complexity 5)
cand_cost: 22
cand_use_cost: 26 (complexity 5)
candidates: 12, 16, 23
use:0 --> iv_cand:12, cost=(6,1)
use:1 --> iv_cand:16, cost=(0,0)
use:2 --> iv_cand:12, cost=(6,1)
use:3 --> iv_cand:16, cost=(6,0)
use:4 --> iv_cand:23, cost=(2,0)
use:5 --> iv_cand:23, cost=(2,1)
use:6 --> iv_cand:23, cost=(2,1)
use:7 --> iv_cand:23, cost=(2,1)
use:8 --> iv_cand:12, cost=(0,0)
Improved to:
cost: 59 (complexity 3)
cand_cost: 22
cand_use_cost: 22 (complexity 3)
candidates: 14, 16, 23
use:0 --> iv_cand:14, cost=(0,0)
use:1 --> iv_cand:16, cost=(0,0)
use:2 --> iv_cand:14, cost=(6,0)
use:3 --> iv_cand:16, cost=(6,0)
use:4 --> iv_cand:23, cost=(2,0)
use:5 --> iv_cand:23, cost=(2,1)
use:6 --> iv_cand:23, cost=(2,1)
use:7 --> iv_cand:23, cost=(2,1)
use:8 --> iv_cand:16, cost=(2,0)
invariants 2
Initial set of candidates:
cost: 84 (complexity 11)
cand_cost: 14
cand_use_cost: 52 (complexity 11)
candidates: 1, 5
use:0 --> iv_cand:1, cost=(8,0)
use:1 --> iv_cand:1, cost=(12,0)
use:2 --> iv_cand:1, cost=(8,0)
use:3 --> iv_cand:1, cost=(12,0)
use:4 --> iv_cand:5, cost=(3,2)
use:5 --> iv_cand:5, cost=(3,3)
use:6 --> iv_cand:5, cost=(3,3)
use:7 --> iv_cand:5, cost=(3,3)
use:8 --> iv_cand:1, cost=(0,0)
Improved to:
cost: 65 (complexity 3)
cand_cost: 15
cand_use_cost: 48 (complexity 3)
candidates: 1, 23
use:0 --> iv_cand:1, cost=(8,0)
use:1 --> iv_cand:1, cost=(12,0)
use:2 --> iv_cand:1, cost=(8,0)
use:3 --> iv_cand:1, cost=(12,0)
use:4 --> iv_cand:23, cost=(2,0)
use:5 --> iv_cand:23, cost=(2,1)
use:6 --> iv_cand:23, cost=(2,1)
use:7 --> iv_cand:23, cost=(2,1)
use:8 --> iv_cand:1, cost=(0,0)
Improved to:
cost: 64 (complexity 3)
cand_cost: 22
cand_use_cost: 30 (complexity 3)
candidates: 1, 16, 23
use:0 --> iv_cand:1, cost=(8,0)
use:1 --> iv_cand:16, cost=(0,0)
use:2 --> iv_cand:1, cost=(8,0)
use:3 --> iv_cand:16, cost=(6,0)
use:4 --> iv_cand:23, cost=(2,0)
use:5 --> iv_cand:23, cost=(2,1)
use:6 --> iv_cand:23, cost=(2,1)
use:7 --> iv_cand:23, cost=(2,1)
use:8 --> iv_cand:1, cost=(0,0)
Improved to:
cost: 59 (complexity 3)
cand_cost: 22
cand_use_cost: 22 (complexity 3)
candidates: 14, 16, 23
use:0 --> iv_cand:14, cost=(0,0)
use:1 --> iv_cand:16, cost=(0,0)
use:2 --> iv_cand:14, cost=(6,0)
use:3 --> iv_cand:16, cost=(6,0)
use:4 --> iv_cand:23, cost=(2,0)
use:5 --> iv_cand:23, cost=(2,1)
use:6 --> iv_cand:23, cost=(2,1)
use:7 --> iv_cand:23, cost=(2,1)
use:8 --> iv_cand:16, cost=(2,0)
invariants 2
Original cost 59 (complexity 3)
Final cost 59 (complexity 3)
Selected IV set:
candidate 14
var_before ivtmp.90_95
var_after ivtmp.90_92
incremented before exit test
type unsigned int
base (unsigned int) (pretmp_79 + 101)
step 1
candidate 16
var_before ivtmp.92_102
var_after ivtmp.92_93
incremented before exit test
type unsigned int
base (unsigned int) (pretmp_79 + 102)
step 2
candidate 23
var_before ivtmp.99_104
var_after ivtmp.99_103
incremented before exit test
type unsigned long
base (unsigned long) (&temp.25 + (sizetype) count1.12_124 * 4)
step 16
base object (void *) &temp.25
Replacing exit test: if (ivtmp_198 == 0)
;;
;; Loop 1
;; header 4, latch 3
;; depth 1, outer 0
;; nodes: 4 3 7 6 5
Processing loop 1
single exit 7 -> 11, exit condition if (ivtmp_166 == 0)
Analyzing # of iterations of loop 1
exit condition [1, + , 4294967295] != 0
bounds on difference of bases: -1 ... -1
result:
# of iterations 1, bounded by 1
number of iterations 1
Induction variables:
ssa name _36
type integer(kind=4)[16] *
base &temp.25
step 32
base object (void *) &temp.25
ssa name pretmp_39
type integer(kind=4)
base 20
step 20
ssa name _40
type unsigned int
base 10
step 10
ssa name _42
type unsigned int
base 10
step 10
ssa name _44
type unsigned int
base 20
step 20
ssa name _76
type sizetype
base 0
step 32
ssa name pretmp_79
type integer(kind=4)
base 10
step 10
ssa name m.11_88
type integer(kind=4)
base 2
step 1
is a biv
ssa name count.41_89
type integer(kind=4)
base 1
step -1
is a biv
ssa name _94
type sizetype
base 0
step 8
ssa name m.11_96
type integer(kind=4)
base 1
step 1
is a biv
ssa name ivtmp.99_97
type unsigned long
base (unsigned long) &temp.25
step 32
base object (void *) &temp.25
ssa name count1.12_124
type integer(kind=8)
base 0
step 8
is a biv
ssa name _131
type integer(kind=4)
base 111
step 10
ssa name count.41_134
type integer(kind=4)
base 2
step -1
is a biv
ssa name _136
type integer(kind=4)
base 112
step 10
ssa name ivtmp_166
type unsigned int
base 1
step 4294967295
is a biv
ssa name ivtmp_189
type unsigned int
base 2
step 4294967295
is a biv
ssa name ivtmp.90_191
type unsigned int
base 111
step 10
ssa name _197
type unsigned int
base 116
step 10
ssa name _202
type unsigned int
base 10
step 10
ssa name ivtmp.92_211
type unsigned int
base 112
step 10
ssa name count1.12_216
type integer(kind=8)
base 8
step 8
is a biv
ssa name _217
type unsigned int
base 10
step 10
ssa name _222
type unsigned int
base 10
step 10
ssa name _223
type unsigned int
base 20
step 20
Uses:
use 0
compare
in statement if (ivtmp_166 == 0)
at position
type unsigned int
base 1
step 4294967295
is a biv
related candidates
use 1
generic
in statement ivtmp.90_191 = (unsigned int) _131;
at position
type unsigned int
base 111
step 10
related candidates
use 2
generic
in statement ivtmp.92_211 = (unsigned int) _136;
at position
type unsigned int
base 112
step 10
related candidates
use 3
generic
in statement ivtmp.99_97 = (unsigned long) _36;
at position
type unsigned long
base (unsigned long) &temp.25
step 32
base object (void *) &temp.25
related candidates
use 4
generic
in statement _40 = _44 - _42;
at position
type unsigned int
base 10
step 10
related candidates
use 5
generic
in statement _217 = _223 - _222;
at position
type unsigned int
base 10
step 10
related candidates
use 6
generic
in statement _197 = _202 + 106;
at position
type unsigned int
base 116
step 10
related candidates
candidate 0 (important)
var_before ivtmp.104
var_after ivtmp.104
incremented before exit test
type unsigned int
base 0
step 1
candidate 1 (important)
var_before ivtmp.105
var_after ivtmp.105
incremented before exit test
type unsigned long
base 0
step 1
candidate 2 (important)
var_before ivtmp.106
var_after ivtmp.106
incremented before exit test
type unsigned int
base 2
step 1
candidate 3 (important)
var_before ivtmp.107
var_after ivtmp.107
incremented before exit test
type unsigned int
base 1
step 4294967295
candidate 4 (important)
var_before ivtmp.108
var_after ivtmp.108
incremented before exit test
type unsigned int
base 0
step 4294967295
candidate 5 (important)
var_before ivtmp.109
var_after ivtmp.109
incremented before exit test
type unsigned int
base 1
step 1
candidate 6 (important)
original biv
type integer(kind=4)
base 1
step 1
candidate 7 (important)
var_before ivtmp.110
var_after ivtmp.110
incremented before exit test
type unsigned long
base 0
step 8
candidate 8 (important)
original biv
type integer(kind=8)
base 0
step 8
candidate 9 (important)
var_before ivtmp.111
var_after ivtmp.111
incremented before exit test
type unsigned int
base 2
step 4294967295
candidate 10 (important)
original biv
type integer(kind=4)
base 2
step -1
candidate 11 (important)
original biv
type unsigned int
base 2
step 4294967295
candidate 12 (important)
var_before ivtmp.112
var_after ivtmp.112
incremented before exit test
type unsigned long
base 8
step 8
Candidate 3 is related to use 0
Candidate 4 is related to use 0
Candidate 4 is related to use 0
candidate 13
var_before ivtmp.113
var_after ivtmp.113
incremented before exit test
type unsigned int
base 111
step 10
Candidate 13 is related to use 1
candidate 14 (important)
var_before ivtmp.114
var_after ivtmp.114
incremented before exit test
type unsigned int
base 0
step 10
Candidate 14 is related to use 1
Candidate 14 is related to use 1
candidate 15
var_before ivtmp.115
var_after ivtmp.115
incremented before exit test
type unsigned int
base 112
step 10
Candidate 15 is related to use 2
Candidate 14 is related to use 2
Candidate 14 is related to use 2
candidate 16
var_before ivtmp.116
var_after ivtmp.116
incremented before exit test
type unsigned long
base (unsigned long) &temp.25
step 32
base object (void *) &temp.25
Candidate 16 is related to use 3
candidate 17 (important)
var_before ivtmp.117
var_after ivtmp.117
incremented before exit test
type unsigned long
base 0
step 32
Candidate 17 is related to use 3
candidate 18
var_before ivtmp.118
var_after ivtmp.118
incremented before exit test
type unsigned int
base 10
step 10
Candidate 18 is related to use 4
Candidate 14 is related to use 4
Candidate 14 is related to use 4
Candidate 18 is related to use 5
Candidate 14 is related to use 5
Candidate 14 is related to use 5
candidate 19
var_before ivtmp.119
var_after ivtmp.119
incremented before exit test
type unsigned int
base 116
step 10
Candidate 19 is related to use 6
Candidate 14 is related to use 6
Candidate 14 is related to use 6
Candidate costs:
cand cost
0 7
1 7
2 7
3 7
4 7
5 7
6 7
7 7
8 7
9 7
10 7
11 7
12 7
13 7
14 7
15 7
16 5
17 7
18 7
19 7
Use-candidate costs:
Use 0:
cand cost compl. depends on
0 0 0
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
10 0 0
11 -1 0
12 0 0
13 0 0
14 0 0
15 0 0
16 2 0
17 0 0
18 0 0
19 0 0
Use 1:
cand cost compl. depends on
0 13 1
1 16 0
2 13 1
3 13 1
4 13 1
5 13 1
6 13 1
9 13 1
10 13 1
11 13 1
13 0 0
14 4 1
15 4 1
18 4 1
19 4 1
Use 2:
cand cost compl. depends on
0 13 1
1 16 0
2 13 1
3 13 1
4 13 1
5 13 1
6 13 1
9 13 1
10 13 1
11 13 1
13 4 1
14 4 1
15 0 0
18 4 1
19 4 1
Use 3:
cand cost compl. depends on
1 8 0 inv_expr:0
7 8 0 inv_expr:0
8 8 0 inv_expr:0
12 10 1 inv_expr:1
16 0 0
17 4 0 inv_expr:0
Use 4:
cand cost compl. depends on
0 13 1
1 16 0
2 13 1
3 13 1
4 13 1
5 9 0
6 9 0
9 13 1
10 13 1
11 13 1
13 4 1
14 4 1
15 4 1
18 0 0
19 4 1
Use 5:
cand cost compl. depends on
0 13 1
1 16 0
2 13 1
3 13 1
4 13 1
5 9 0
6 9 0
9 13 1
10 13 1
11 13 1
13 4 1
14 4 1
15 4 1
18 0 0
19 4 1
Use 6:
cand cost compl. depends on
0 13 1
1 16 0
2 13 1
3 13 1
4 13 1
5 13 1
6 13 1
9 13 1
10 13 1
11 13 1
13 4 1
14 4 1
15 4 1
18 4 1
19 0 0
Global costs:
target_avail_regs 15
target_clobbered_regs 9
target_reg_cost 4
target_spill_cost 16
regs_used 0
cost for size:
ivs cost
0 0
1 1
2 2
3 3
4 12
5 15
6 18
7 63
8 72
9 81
10 90
11 99
12 108
13 117
14 126
15 135
16 144
17 153
18 162
19 171
20 180
21 189
22 198
23 207
24 216
25 225
26 234
27 243
28 252
29 261
30 270
Initial set of candidates:
cost: 78 (complexity 3)
cand_cost: 14
cand_use_cost: 61 (complexity 3)
candidates: 6, 17
use:0 --> iv_cand:6, cost=(0,0)
use:1 --> iv_cand:6, cost=(13,1)
use:2 --> iv_cand:6, cost=(13,1)
use:3 --> iv_cand:17, cost=(4,0)
use:4 --> iv_cand:6, cost=(9,0)
use:5 --> iv_cand:6, cost=(9,0)
use:6 --> iv_cand:6, cost=(13,1)
Improved to:
cost: 33 (complexity 3)
cand_cost: 14
cand_use_cost: 16 (complexity 3)
candidates: 17, 18
use:0 --> iv_cand:17, cost=(0,0)
use:1 --> iv_cand:18, cost=(4,1)
use:2 --> iv_cand:18, cost=(4,1)
use:3 --> iv_cand:17, cost=(4,0)
use:4 --> iv_cand:18, cost=(0,0)
use:5 --> iv_cand:18, cost=(0,0)
use:6 --> iv_cand:18, cost=(4,1)
Improved to:
cost: 26 (complexity 3)
cand_cost: 12
cand_use_cost: 12 (complexity 3)
candidates: 16, 18
use:0 --> iv_cand:18, cost=(0,0)
use:1 --> iv_cand:18, cost=(4,1)
use:2 --> iv_cand:18, cost=(4,1)
use:3 --> iv_cand:16, cost=(0,0)
use:4 --> iv_cand:18, cost=(0,0)
use:5 --> iv_cand:18, cost=(0,0)
use:6 --> iv_cand:18, cost=(4,1)
Initial set of candidates:
cost: 41 (complexity 5)
cand_cost: 14
cand_use_cost: 24 (complexity 5)
candidates: 14, 17
use:0 --> iv_cand:14, cost=(0,0)
use:1 --> iv_cand:14, cost=(4,1)
use:2 --> iv_cand:14, cost=(4,1)
use:3 --> iv_cand:17, cost=(4,0)
use:4 --> iv_cand:14, cost=(4,1)
use:5 --> iv_cand:14, cost=(4,1)
use:6 --> iv_cand:14, cost=(4,1)
Improved to:
cost: 33 (complexity 3)
cand_cost: 14
cand_use_cost: 16 (complexity 3)
candidates: 17, 18
use:0 --> iv_cand:18, cost=(0,0)
use:1 --> iv_cand:18, cost=(4,1)
use:2 --> iv_cand:18, cost=(4,1)
use:3 --> iv_cand:17, cost=(4,0)
use:4 --> iv_cand:18, cost=(0,0)
use:5 --> iv_cand:18, cost=(0,0)
use:6 --> iv_cand:18, cost=(4,1)
Improved to:
cost: 26 (complexity 3)
cand_cost: 12
cand_use_cost: 12 (complexity 3)
candidates: 16, 18
use:0 --> iv_cand:18, cost=(0,0)
use:1 --> iv_cand:18, cost=(4,1)
use:2 --> iv_cand:18, cost=(4,1)
use:3 --> iv_cand:16, cost=(0,0)
use:4 --> iv_cand:18, cost=(0,0)
use:5 --> iv_cand:18, cost=(0,0)
use:6 --> iv_cand:18, cost=(4,1)
Original cost 26 (complexity 3)
Final cost 26 (complexity 3)
Selected IV set:
candidate 16
var_before ivtmp.116_186
var_after ivtmp.116_196
incremented before exit test
type unsigned long
base (unsigned long) &temp.25
step 32
base object (void *) &temp.25
candidate 18
var_before ivtmp.118_219
var_after ivtmp.118_212
incremented before exit test
type unsigned int
base 10
step 10
Replacing exit test: if (ivtmp_166 == 0)
test_f90 ()
{
unsigned int ivtmp.118;
unsigned long ivtmp.116;
unsigned long ivtmp.99;
unsigned int ivtmp.92;
unsigned int ivtmp.90;
unsigned long ivtmp.71;
unsigned long ivtmp.70;
struct array2_integer(kind=4) parm.46;
integer(kind=4) A.27[4];
struct array1_integer(kind=4) atmp.31;
integer(kind=4) A.32[4];
static integer(kind=8) A.34[2] = {2, 2};
struct array1_integer(kind=8) parm.35;
struct array2_integer(kind=4) atmp.36;
integer(kind=4) A.37[4];
integer(kind=4) temp.25[16];
struct test_type s[4];
integer(kind=4) _2;
integer(kind=8) count1.12_3;
integer(kind=4) _5;
integer(kind=8) _6;
integer(kind=8) _7;
integer(kind=8) _9;
integer(kind=8) _10;
integer(kind=4) _11;
integer(kind=4) _13;
unsigned int _15;
unsigned int ivtmp_18;
integer(kind=4) pretmp_23;
void * _26;
void * _27;
integer(kind=8) pretmp_28;
integer(kind=8) pretmp_31;
void * _33;
unsigned int ivtmp_35;
unsigned int _40;
integer(kind=8) count1.12_41;
void * _43;
integer(kind=4) _45;
void * _46;
struct test_type[4] * _53;
integer(kind=8) count1.12_55;
integer(kind=4) _74;
integer(kind=4) _78;
unsigned int ivtmp_90;
integer(kind=4) _91;
integer(kind=4) count.45_101;
integer(kind=4) m.11_105;
integer(kind=4) count.45_106;
integer(kind=4) _121;
sizetype _126;
integer(kind=4) l.10_127;
integer(kind=8) count1.12_129;
integer(kind=4) _130;
integer(kind=8) count1.12_135;
integer(kind=4) pretmp_137;
integer(kind=8) _139;
sizetype _140;
integer(kind=4) pretmp_142;
void * _143;
integer(kind=4) m.11_144;
integer(kind=4) _146;
integer(kind=4) _147;
void * _148;
void * _150;
integer(kind=8) count1.12_151;
integer(kind=4) _152;
integer(kind=8) _154;
integer(kind=4) _155;
void * _157;
unsigned int ivtmp_158;
integer(kind=4) count.45_159;
integer(kind=4) m.11_160;
integer(kind=8) count1.12_161;
unsigned int ivtmp_162;
integer(kind=4) count.44_163;
unsigned long _164;
sizetype _167;
integer(kind=4) l.10_168;
integer(kind=8) count1.12_169;
integer(kind=4) _171;
integer(kind=8) pretmp_172;
integer(kind=8) pretmp_173;
integer(kind=8) count1.12_174;
integer(kind=4) _180;
integer(kind=4) count.44_183;
integer(kind=4) _188;
integer(kind=4) _193;
unsigned int _197;
unsigned int _199;
integer(kind=4) _200;
void * _203;
void * _204;
void * _205;
integer(kind=8) count1.12_206;
void * _207;
unsigned int _208;
integer(kind=4) _210;
integer(kind=4) _213;
unsigned int _215;
unsigned int _217;
integer(kind=8) count1.12_218;
integer(kind=4) _220;
<bb 2>:
ivtmp.116_125 = (unsigned long) &temp.25;
goto <bb 4>;
<bb 3>:
<bb 4>:
# ivtmp.116_186 = PHI <ivtmp.116_196(3), ivtmp.116_125(2)>
# ivtmp.118_219 = PHI <ivtmp.118_212(3), 10(2)>
_208 = ivtmp.118_219 + 101;
ivtmp.90_191 = _208;
_199 = ivtmp.118_219 + 102;
ivtmp.92_211 = _199;
ivtmp.99_97 = ivtmp.116_186;
_197 = ivtmp.118_219 + 106;
goto <bb 6>;
<bb 5>:
<bb 6>:
# ivtmp.90_95 = PHI <ivtmp.90_92(5), ivtmp.90_191(4)>
# ivtmp.92_102 = PHI <ivtmp.92_93(5), ivtmp.92_211(4)>
# ivtmp.99_104 = PHI <ivtmp.99_103(5), ivtmp.99_97(4)>
_193 = (integer(kind=4)) ivtmp.90_95;
A.27[0] = _193;
_200 = (integer(kind=4)) ivtmp.92_102;
A.27[1] = _200;
_40 = ivtmp.118_219;
_15 = _40 + ivtmp.90_95;
_13 = (integer(kind=4)) _15;
_213 = _13;
A.27[2] = _213;
_217 = ivtmp.118_219;
_215 = ivtmp.92_102 + _217;
_210 = (integer(kind=4)) _215;
_220 = _210;
A.27[3] = _220;
atmp.31.dtype = 265;
atmp.31.dim[0].stride = 1;
atmp.31.dim[0].lbound = 0;
atmp.31.dim[0].ubound = 3;
atmp.31.data = &A.32;
atmp.31.offset = 0;
A.32[0] = _193;
pretmp_142 = A.27[1];
A.32[1] = pretmp_142;
pretmp_23 = A.27[2];
A.32[2] = pretmp_23;
pretmp_137 = A.27[3];
A.32[3] = pretmp_137;
parm.35.dtype = 521;
parm.35.dim[0].lbound = 1;
parm.35.dim[0].ubound = 2;
parm.35.dim[0].stride = 1;
parm.35.data = &A.34[0];
parm.35.offset = 0;
atmp.36.dtype = 266;
atmp.36.dim[0].stride = 1;
atmp.36.dim[0].lbound = 0;
atmp.36.dim[0].ubound = 1;
atmp.36.dim[1].stride = 2;
atmp.36.dim[1].lbound = 0;
atmp.36.dim[1].ubound = 1;
atmp.36.data = &A.37;
atmp.36.offset = 0;
_gfortran_reshape_4 (&atmp.36, &atmp.31, &parm.35, 0B, 0B);
_43 = atmp.36.data;
_45 = MEM[(integer(kind=4)[4] *)_43][0];
_207 = (void *) ivtmp.99_104;
MEM[base: _207, offset: 0B] = _45;
_155 = MEM[(integer(kind=4)[4] *)_43][1];
_205 = (void *) ivtmp.99_104;
MEM[base: _205, offset: 4B] = _155;
_121 = MEM[(integer(kind=4)[4] *)_43][2];
_204 = (void *) ivtmp.99_104;
MEM[base: _204, offset: 8B] = _121;
_180 = MEM[(integer(kind=4)[4] *)_43][3];
_203 = (void *) ivtmp.99_104;
MEM[base: _203, offset: 12B] = _180;
A.37 ={v} {CLOBBER};
atmp.36 ={v} {CLOBBER};
parm.35 ={v} {CLOBBER};
A.32 ={v} {CLOBBER};
atmp.31 ={v} {CLOBBER};
A.27 ={v} {CLOBBER};
ivtmp.90_92 = ivtmp.90_95 + 1;
ivtmp.92_93 = ivtmp.92_102 + 2;
ivtmp.99_103 = ivtmp.99_104 + 16;
if (ivtmp.92_93 == _197)
goto <bb 7>;
else
goto <bb 5>;
<bb 7>:
ivtmp.116_196 = ivtmp.116_186 + 32;
ivtmp.118_212 = ivtmp.118_219 + 10;
if (ivtmp.118_212 == 30)
goto <bb 11>;
else
goto <bb 3>;
<bb 8>:
<bb 9>:
# ivtmp.70_17 = PHI <ivtmp.70_20(8), ivtmp.70_21(11)>
# ivtmp.71_24 = PHI <ivtmp.71_25(8), ivtmp.71_123(11)>
_26 = (void *) ivtmp.70_17;
_147 = MEM[base: _26, offset: 32B];
_27 = (void *) ivtmp.71_24;
MEM[base: _27, offset: 0B] = _147;
_33 = (void *) ivtmp.70_17;
_130 = MEM[base: _33, offset: 36B];
_46 = (void *) ivtmp.71_24;
MEM[base: _46, offset: 4B] = _130;
_143 = (void *) ivtmp.70_17;
_74 = MEM[base: _143, offset: 40B];
_148 = (void *) ivtmp.71_24;
MEM[base: _148, offset: 8B] = _74;
_150 = (void *) ivtmp.70_17;
_78 = MEM[base: _150, offset: 44B];
_157 = (void *) ivtmp.71_24;
MEM[base: _157, offset: 12B] = _78;
ivtmp.70_20 = ivtmp.70_17 + 16;
ivtmp.71_25 = ivtmp.71_24 + 16;
if (ivtmp.70_20 == _164)
goto <bb 10>;
else
goto <bb 8>;
<bb 10>:
count1.12_218 = count1.12_161 + 8;
m.11_105 = m.11_160 + 1;
count.45_106 = count.45_159 + -1;
ivtmp_90 = ivtmp_158 + 4294967295;
temp.25 ={v} {CLOBBER};
parm.46.dtype = 266;
parm.46.dim[0].lbound = 1;
parm.46.dim[0].ubound = 2;
parm.46.dim[0].stride = 1;
parm.46.dim[1].lbound = 1;
parm.46.dim[1].ubound = 2;
parm.46.dim[1].stride = 2;
parm.46.data = &s[0].a[0];
parm.46.offset = -3;
test_sub.constprop (&parm.46, &C.2433);
parm.46 ={v} {CLOBBER};
s ={v} {CLOBBER};
return;
<bb 11>:
# m.11_144 = PHI <1(7)>
# count1.12_129 = PHI <0(7)>
# count.45_101 = PHI <2(7)>
# ivtmp_35 = PHI <2(7)>
pretmp_31 = (integer(kind=8)) m.11_144;
pretmp_28 = pretmp_31 * 2;
_154 = 1;
_139 = _154 + pretmp_28;
_7 = _139 + -3;
_11 = temp.25[count1.12_129];
MEM[(integer(kind=4)[4] *)&s][_7].a[0] = _11;
count1.12_41 = count1.12_129 + 1;
_146 = temp.25[count1.12_41];
MEM[(integer(kind=4)[4] *)&s][_7].a[1] = _146;
count1.12_151 = count1.12_129 + 2;
_152 = temp.25[count1.12_151];
MEM[(integer(kind=4)[4] *)&s][_7].a[2] = _152;
count1.12_55 = count1.12_129 + 3;
_91 = temp.25[count1.12_55];
MEM[(integer(kind=4)[4] *)&s][_7].a[3] = _91;
count1.12_135 = count1.12_129 + 4;
l.10_127 = 2;
count.44_183 = 1;
ivtmp_18 = 1;
_10 = (integer(kind=8)) l.10_127;
_9 = _10 + pretmp_28;
_6 = _9 + -3;
_5 = temp.25[count1.12_135];
MEM[(integer(kind=4)[4] *)&s][_6].a[0] = _5;
count1.12_3 = count1.12_135 + 1;
_2 = temp.25[count1.12_3];
MEM[(integer(kind=4)[4] *)&s][_6].a[1] = _2;
count1.12_206 = count1.12_135 + 2;
_188 = temp.25[count1.12_206];
MEM[(integer(kind=4)[4] *)&s][_6].a[2] = _188;
count1.12_174 = count1.12_135 + 3;
_171 = temp.25[count1.12_174];
MEM[(integer(kind=4)[4] *)&s][_6].a[3] = _171;
count1.12_169 = count1.12_135 + 4;
l.10_168 = l.10_127 + 1;
count.44_163 = count.44_183 + -1;
ivtmp_162 = ivtmp_18 + 4294967295;
count1.12_161 = count1.12_129 + 8;
m.11_160 = m.11_144 + 1;
count.45_159 = count.45_101 + -1;
ivtmp_158 = ivtmp_35 - 1;
pretmp_172 = (integer(kind=8)) m.11_160;
pretmp_173 = pretmp_172 * 2;
ivtmp.70_21 = (unsigned long) &temp.25;
_126 = (sizetype) pretmp_173;
_167 = _126 * 16;
_140 = _167 + 18446744073709551584;
_53 = &s + _140;
ivtmp.71_123 = (unsigned long) _53;
_164 = (unsigned long) &MEM[(void *)&temp.25 + 32B];
goto <bb 9>;
}