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; }