libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / ivopt_mult_2g.c
blobdd06e598f7f48e1a75eba41d626860404325259d
1 /* { dg-do compile { target {{ i?86-*-* x86_64-*-* } && lp64 } } } */
2 /* { dg-options "-O2 -fgimple -m64 -fdump-tree-ivopts-details" } */
4 /* Exit tests 'i < N1' and 'p2 > p_limit2' can be replaced, so
5 * two ivs i and p2 can be eliminate. */
6 long int __GIMPLE (ssa,startwith("fix_loops"))
7 foo (long int * p, long int * p2, int N1, int N2)
9 long int s;
10 long int * p_limit2;
11 int i;
12 long unsigned int _1;
13 long unsigned int _2;
14 long int _3;
16 __BB(2):
17 _1 = (long unsigned int) N2_9(D);
18 _2 = _1 * 8ul;
19 p_limit2_11 = p2_10(D) + _2;
20 if (N1_13(D) > 0)
21 goto __BB3;
22 else
23 goto __BB13;
25 __BB(13):
26 goto __BB9;
28 __BB(9):
29 goto __BB6;
31 __BB(3):
32 p_22 = p_12(D) + 8ul;
33 p2_23 = p2_10(D) + 8ul;
34 if (p_limit2_11 < p2_23)
35 goto __BB14;
36 else
37 goto __BB7;
39 __BB(14):
40 goto __BB9;
42 __BB(7):
43 goto __BB5;
45 __BB(4):
46 p_14 = p_27 + 8ul;
47 p2_15 = p2_28 + 8ul;
48 i_16 = i_29 + 1;
49 if (p_limit2_11 < p2_15)
50 goto __BB11;
51 else
52 goto __BB8;
54 __BB(11):
55 goto __BB6;
57 __BB(8):
58 goto __BB5;
60 __BB(5):
61 s_25 = __PHI (__BB7: 0l, __BB8: s_18);
62 p_27 = __PHI (__BB7: p_22, __BB8: p_14);
63 p2_28 = __PHI (__BB7: p2_23, __BB8: p2_15);
64 i_29 = __PHI (__BB7: 1, __BB8: i_16);
65 _3 = __MEM <long int> (p_27);
66 s_18 = _3 + s_25;
67 if (N1_13(D) > i_29)
68 goto __BB4;
69 else
70 goto __BB12;
72 __BB(12):
73 goto __BB6;
75 __BB(6):
76 s_26 = __PHI (__BB12: s_18, __BB11: s_18, __BB9: 0l);
77 return s_26;
80 /* { dg-final { scan-tree-dump-times "Replacing" 2 "ivopts"} } */