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

--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-04-25 
12:35:08 UTC ---
I'm not sure what the function computes, but for

u128 mult_u128(u64 a, u64 b)
{
  u128 t1;
  __uint128_t r = (__uint128_t)a * (__uint128_t)b;
  memcpy (&t1, &r, sizeof (u128));
  return t1;
}

we generate

mult_u128:
.LFB1:
        .cfi_startproc
        movq    %rsi, %rax
        mulq    %rdi
        movq    %rax, -56(%rsp)
        movq    %rdx, -48(%rsp)
        movq    -48(%rsp), %rdx
        ret

Reply via email to