http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57832
--- Comment #1 from Olivier Langlois <olivier.pis.langlois at transport dot alstom.com> --- Created attachment 30466 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30466&action=edit original c file very macro heavy loop unrolling sha-256 code hand optimized code (I have peaked into the resulting intermediate code, yuck!) but the code seems ok: #define blk0(i) (W[i] = data[i]) #define blk2(i) (W[i & 15] += s1(W[(i - 2) & 15]) + W[(i - 7) & 15] \ + s0(W[(i - 15) & 15])) ... #define R(i) \ h(i) += S1(e(i)) + Ch(e(i), f(i), g(i)) + SHA256_K[i + j] \ + (j ? blk2(i) : blk0(i)); \ ... // 64 operations, partially loop unrolled for (unsigned int j = 0; j < 64; j += 16) { R( 0); R( 1); R( 2); R( 3); R( 4); R( 5); R( 6); R( 7); R( 8); R( 9); R(10); R(11); R(12); R(13); R(14); R(15); } so for j = 0, all W items will be initialized.