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

Reply via email to