https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58169
Martin Sebor <msebor at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|UNCONFIRMED |RESOLVED
CC| |msebor at gcc dot gnu.org
--- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> ---
The latest trunk emits the following -m32 code (AVR is the same) with just two
loads as expected so I think this is resolved:
long long int NumSift (long long int * array, long long unsigned int k)
{
unsigned int _1;
unsigned int _2;
long long int * _3;
long long int _4;
unsigned int _5;
unsigned int _6;
long long int * _7;
long long int _8;
unsigned int _21;
unsigned int _23;
long long int * _25;
long long int pretmp_27;
long long int prephitmp_28;
<bb 2> [local count: 1073741824]:
_1 = (unsigned int) k_13(D);
_2 = _1 * 8;
_3 = array_14(D) + _2;
_4 = *_3;
_5 = _1 + 1;
_6 = _5 * 8;
_7 = array_14(D) + _6;
_8 = *_7;
if (_4 < _8)
goto <bb 3>; [50.00%]
else
goto <bb 4>; [50.00%]
<bb 3> [local count: 536870913]:
k_16 = k_13(D) + 1;
_21 = (unsigned int) k_16;
_23 = _21 * 8;
_25 = array_14(D) + _23;
pretmp_27 = *_25;
<bb 4> [local count: 1073741824]:
# k_12 = PHI <k_13(D)(2), k_16(3)>
# prephitmp_28 = PHI <_4(2), pretmp_27(3)>
return prephitmp_28;
}