http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45991
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-04 12:29:20 UTC --- The problem is that fold figures sth out that tree-affine doesn't. The latter doesn't simplify { type = long unsigned int offset = 0 elements = { [0] = &A[(long unsigned int) (long unsigned int) ((i_3(D) + -1) * 16) + 20] * 1, [1] = (long unsigned int) ((i_3(D) + -1) * 16) * 340282366920938463463374607431768211455, [2] = ivtmp.9_20 * 1 } } to just &A[20] + ivtmp.9_20. Now we can avoid the ICE by gimplifying the address properly which we don't because of a typo I made in an earlier change.