------- Additional Comments From uros at gcc dot gnu dot org 2004-11-19 15:41 ------- If val1 is moved out of the main() function, produced code is OK:
--cut here-- #include <xmmintrin.h> #include <stdio.h> float val1[4] = {1.3f, 1.4f, 1.5f, 1.6f}; int main(void) { float result[4]; __m128 A; ... --cut here-- val1: <- vector is merged this time .long 1067869798 .long 1068708659 .long 1069547520 .long 1070386381 .section .rodata.str1.1,"aMS",@progbits,1 .LC0: .string "%f %f %f %f\n" .text .p2align 4,,15 .globl main .type main, @function main: pushl %ebp movl %esp, %ebp subl $56, %esp andl $-16, %esp movups val1, %xmm0 <- loaded directy into xmm reg movups %xmm0, -16(%ebp) subl $16, %esp flds -4(%ebp) ... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18562