blob: 43554c21c0bb8eec1fc2047eaba2c2b6f74a02dd [file] [log] [blame]
/* { dg-do compile { target {{ i?86-*-* x86_64-*-* } && lp64 } } } */
/* { dg-options "-O2 -fgimple -m64 -fdump-tree-ivopts-details" } */
/* The test 'if (p2 > p_limit2)' can be replaced, so iv p2 can be
* eliminated. */
long int __GIMPLE (ssa,startwith("fix_loops"))
foo (long int * p, long int * p2, int N1, int N2)
{
long int s;
long int * p_limit2;
long int * p_limit;
long unsigned int _1;
long unsigned int _2;
long unsigned int _3;
long unsigned int _4;
long int _5;
__BB(2):
_1 = (long unsigned int) N1_10(D);
_2 = _1 * 8ul;
p_limit_12 = p_11(D) + _2;
_3 = (long unsigned int) N2_13(D);
_4 = _3 * 8ul;
p_limit2_15 = p2_14(D) + _4;
if (p_11(D) <= p_limit_12)
goto __BB3;
else
goto __BB13;
__BB(13):
goto __BB9;
__BB(9):
goto __BB6;
__BB(3):
p_20 = p_11(D) + 8ul;
p2_23 = p2_14(D) + 8ul;
if (p_limit2_15 < p2_23)
goto __BB14;
else
goto __BB7;
__BB(14):
goto __BB9;
__BB(7):
goto __BB5;
__BB(4):
p_16 = p_26 + 8ul;
p2_17 = p2_27 + 8ul;
if (p_limit2_15 < p2_17)
goto __BB11;
else
goto __BB8;
__BB(11):
goto __BB6;
__BB(8):
goto __BB5;
__BB(5):
s_24 = __PHI (__BB7: 0l, __BB8: s_19);
p_26 = __PHI (__BB7: p_20, __BB8: p_16);
p2_27 = __PHI (__BB7: p2_23, __BB8: p2_17);
_5 = __MEM <long int> (p_26);
s_19 = _5 + s_24;
if (p_limit_12 >= p_26)
goto __BB4;
else
goto __BB12;
__BB(12):
goto __BB6;
__BB(6):
s_25 = __PHI (__BB12: s_19, __BB11: s_19, __BB9: 0l);
return s_25;
}
/* { dg-final { scan-tree-dump-times "Replacing" 1 "ivopts" } } */