------- Comment #3 from christophe at saout dot de 2008-08-13 16:14 ------- Ok, tried that...
Now xorg-server doesn't segfault, but hang in an infinite loop. Adding printouts after the loop shows that the upper and lower parts of the register are inverted: (contents of the "tails" array): 0 0x28e1c98 1 0x28e1c90 2 0x28e1ca8 3 0x28e1ca0 4 0x28e1cb8 ... So, the movlps is correct to fill the lower half of the register without touching the upper half, but the "movd %rax, %xmm1" should fill the upper half instead. I tried changing it into a movhps, but that won't take the %rax as source register. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37101