http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50107

--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> 2011-08-18 14:44:03 
UTC ---
Another problem is

[hjl@gnu-6 pr50107]$ cat udi.i 
extern unsigned long long k2;

unsigned long long test_mul_64 (unsigned long a, unsigned long b)
{
  k2 = (unsigned long long) a * b;
  k2+=3;
  return k2;
}
[hjl@gnu-6 pr50107]$ make udi.s PIC=-m32
/export/build/gnu/gcc-hsw/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-hsw/build-x86_64-linux/gcc/ -S -o udi.s -O2 -mbmi2 -m32
udi.i
[hjl@gnu-6 pr50107]$ cat udi.s
    .file    "udi.i"
    .text
    .p2align 4,,15
    .globl    test_mul_64
    .type    test_mul_64, @function
test_mul_64:
.LFB0:
    .cfi_startproc
    pushl    %ebx
    .cfi_def_cfa_offset 8
    .cfi_offset 3, -8
    movl    8(%esp), %edx
    mulx    12(%esp), %ecx, %ebx
    movl    %ecx, %eax
    movl    %ebx, %edx
    addl    $3, %eax
    adcl    $0, %edx
    movl    %eax, k2
    movl    %edx, k2+4
    popl    %ebx
    .cfi_restore 3
    .cfi_def_cfa_offset 4
    ret
    .cfi_endproc
.LFE0:
    .size    test_mul_64, .-test_mul_64
    .ident    "GCC: (GNU) 4.7.0 20110817 (experimental)"
    .section    .note.GNU-stack,"",@progbits
[hjl@gnu-6 pr50107]$ 

EDX is the input of MULX and dead after MULX.  IRA should allocate
EAD/EDX for the output of mulx.

Reply via email to