https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256
--- Comment #51 from Jeffrey A. Law <law at redhat dot com> --- Configure for powerpc-linux-gnuspec target with the --eanble-e500_double option: /home/gcc/GIT-2/gcc/configure powerpc-linux-gnuspe --enable-e500_double Testcase: # define N 2000000 extern double a[N],c[N]; void tuned_STREAM_Copy() { int j; for (j=0; j<N; j++) c[j] = a[j]; } ./cc1 -O3 -funroll-loops -funroll-all-loops -fno-tree-loop-distribute-patterns j.c -I./ -mspe Results in: tuned_STREAM_Copy: stwu 1,-16(1) lis 7,0x3 lis 8,c@ha lis 10,a@ha ori 0,7,0xd090 evstdd 31,8(1) li 9,0 la 8,c@l(8) la 10,a@l(10) mtctr 0 .L2: evlddx 31,10,9 addi 7,9,8 addi 0,9,16 addi 11,9,24 addi 3,9,32 evstddx 31,8,9 addi 4,9,40 evlddx 31,10,7 addi 5,9,48 addi 6,9,56 evlddx 12,10,6 addi 9,9,64 evstddx 31,8,7 evlddx 7,10,0 evstddx 7,8,0 evlddx 0,10,11 evstddx 0,8,11 evlddx 11,10,3 evstddx 11,8,3 evlddx 3,10,4 evstddx 3,8,4 evlddx 4,10,5 evstddx 4,8,5 evstddx 12,8,6 bdnz .L2 evldd 31,8(1) addi 1,1,16 blr .size tuned_STREAM_Copy, .-tuned_STREAM_Copy Which looks to me like ivopts has mucked things up badly.