https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114134

--- Comment #8 from Pilar Latiesa <pilarlatiesa at gmail dot com> ---
I'm observing a slight improvement with current trunk for the testcase in
comment #5:

  struct T { int i, j, k, w; };

  T f(int x)
    { return {x, 0, x, 0}; }

With 14.3 I get:
        movabsq $-4294967296, %r8
        xorl    %eax, %eax
        xorl    %edx, %edx
        movl    %edi, %esi
        movq    %rax, %rcx
        movq    %rdx, %rdi
        andq    %r8, %rcx
        andq    %r8, %rdi
        orq     %rsi, %rcx
        orq     %rsi, %rdi
        movl    %ecx, %ecx
        movq    %rcx, %rax
        movl    %edi, %ecx
        movq    %rcx, %rdx
        ret

With trunk:
        movl    %edi, %ecx
        xorl    %edx, %edx
        movl    %ecx, %esi
        movq    %rdx, %rdi
        movq    %rsi, %rax
        movabsq $-4294967296, %rsi
        andq    %rsi, %rdi
        orq     %rcx, %rdi
        movl    %edi, %ecx
        movq    %rcx, %rdx
        ret

With 13.3:
        movl    %edi, %eax
        movl    %edi, %edx
        ret

Reply via email to