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

Seth LaForge <sethml at ofb dot net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sethml at ofb dot net

--- Comment #3 from Seth LaForge <sethml at ofb dot net> ---
For what it's worth, this generates similarly terrible code on ARM with gcc
5.2.1. It also occurs if the struct members are ints:

struct u1 { int x, y; };
int foo(struct u1 u) { return u.x + u.y; }

% arm-none-eabi-gcc -O3 -S foo.c

foo:
        sub     sp, sp, #8
        add     r3, sp, #8
        stmdb   r3, {r0, r1}
        ldmia   sp, {r0, r3}
        add     r0, r0, r3
        add     sp, sp, #8
        bx      lr

% arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 5.2.1 20151202
(release) [ARM/embedded-5-branch revision 231848]

Reply via email to