1 /* { dg-do compile { target {{ i?86-*-* x86_64-*-* } && lp64 } } } */
2 /* { dg-options "-O2 -fgimple -m64 -fdump-tree-ivopts-details" } */
3
4 /* The test 'if (p2 > p_limit2)' can be replaced, so iv p2 can be
5 * eliminated. */
6 long int __GIMPLE (ssa,startwith("fix_loops"))
foo(long int * p,long int * p2,int N1,int N2)7 foo (long int * p, long int * p2, int N1, int N2)
8 {
9 long int s;
10 long int * p_limit2;
11 long int * p_limit;
12 long unsigned int _1;
13 long unsigned int _2;
14 long unsigned int _3;
15 long unsigned int _4;
16 long int _5;
17
18 __BB(2):
19 _1 = (long unsigned int) N1_10(D);
20 _2 = _1 * 8ul;
21 p_limit_12 = p_11(D) + _2;
22 _3 = (long unsigned int) N2_13(D);
23 _4 = _3 * 8ul;
24 p_limit2_15 = p2_14(D) + _4;
25 if (p_11(D) <= p_limit_12)
26 goto __BB3;
27 else
28 goto __BB13;
29
30 __BB(13):
31 goto __BB9;
32
33 __BB(9):
34 goto __BB6;
35
36 __BB(3):
37 p_20 = p_11(D) + 8ul;
38 p2_23 = p2_14(D) + 8ul;
39 if (p_limit2_15 < p2_23)
40 goto __BB14;
41 else
42 goto __BB7;
43
44 __BB(14):
45 goto __BB9;
46
47 __BB(7):
48 goto __BB5;
49
50 __BB(4):
51 p_16 = p_26 + 8ul;
52 p2_17 = p2_27 + 8ul;
53 if (p_limit2_15 < p2_17)
54 goto __BB11;
55 else
56 goto __BB8;
57
58 __BB(11):
59 goto __BB6;
60
61 __BB(8):
62 goto __BB5;
63
64 __BB(5):
65 s_24 = __PHI (__BB7: 0l, __BB8: s_19);
66 p_26 = __PHI (__BB7: p_20, __BB8: p_16);
67 p2_27 = __PHI (__BB7: p2_23, __BB8: p2_17);
68 _5 = __MEM <long int> (p_26);
69 s_19 = _5 + s_24;
70 if (p_limit_12 >= p_26)
71 goto __BB4;
72 else
73 goto __BB12;
74
75 __BB(12):
76 goto __BB6;
77
78 __BB(6):
79 s_25 = __PHI (__BB12: s_19, __BB11: s_19, __BB9: 0l);
80 return s_25;
81 }
82
83 /* { dg-final { scan-tree-dump-times "Replacing" 1 "ivopts" } } */
84