------- 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