https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63175
--- Comment #20 from Martin Sebor <msebor at gcc dot gnu.org> --- (In reply to rguent...@suse.de from comment #19) Please remove the extern from the first test and try again (it's a vestige of the second test). Here's the assembly emitted by 4.8.3 for the first test (without the extern): $ cat u.c && gcc -DT="int" -O2 -ftree-vectorize -maltivec -S u.c && cat u.s const T a [] = { 1, 2, 3, 4, 5 }; T b[sizeof a / sizeof *a]; void g (void) { const T *p = a; T *q = b + 1; *q++ = *p++; *q++ = *p++; *q++ = *p++; *q++ = *p++; } .file "u.c" .section ".toc","aw" .section ".text" .section ".toc","aw" .LC0: .quad b .section ".text" .align 2 .p2align 4,,15 .globl g .section ".opd","aw" .align 3 g: .quad .L.g,.TOC.@tocbase .previous .type g, @function .L.g: addis 9,2,.LC1@toc@ha addis 10,2,.LC0@toc@ha addi 9,9,.LC1@toc@l lxvw4x 32,0,9 ld 9,.LC0@toc@l(10) li 10,4 stxvw4x 32,9,10 blr .long 0 .byte 0,0,0,0,0,0,0,0 .size g,.-.L.g .comm b,20,4 .globl a .section .rodata .align 4 .type a, @object .size a, 20 a: .long 1 .long 2 .long 3 .long 4 .long 5 .section .rodata.cst16,"aM",@progbits,16 .align 4 .LC1: .4byte 1 .4byte 2 .4byte 3 .4byte 4 .ident "GCC: (GNU) 4.8.3 20140911 (Red Hat 4.8.3-9)" .section .note.GNU-stack,"",@progbits