tag 406442 + moreinfo thanks please recheck with gcc-4.2 gcc-4.3/gcc-snapshot
Geoffrey Reynolds writes: > Package: gcc-4.1 > Version: 4.1.1-21 > > --- begin bug.c --- > typedef long long v2di __attribute__ ((vector_size(16))); > extern long long x(void); > extern long long y(void); > > v2di test(void) > { > return (v2di){x(),y()}; > } > --- end bug.c --- > > When the above is compiled with `gcc -O -msse2 -S bug.c', the following > incorrect code is generated. Both values get loaded into the lower > vector component,while the upper component is zeroed. > > --- begin bug.s --- > .file "bug.c" > .text > .globl test > .type test, @function > test: > pushl %ebp > movl %esp, %ebp > subl $24, %esp > call x > movl %eax, -8(%ebp) > movl %edx, -4(%ebp) > call y > movl %eax, -16(%ebp) > movl %edx, -12(%ebp) > movq -16(%ebp), %xmm1 > movlps -8(%ebp), %xmm1 > movdqa %xmm1, %xmm0 > leave > ret > .size test, .-test > .ident "GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian > 4.1.1-21)" > .section .note.GNU-stack,"",@progbits > --- end bug.s --- -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]