https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61954
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> --- Maybe Ada fails to tell the backend that a parameter is a pointer: [hjl@gnu-6 tmp]$ cat p2.c struct pointer { int p; int b; }; extern void bar (int p); void xxx (struct pointer p) { foo (p); } [hjl@gnu-6 tmp]$ gcc -mx32 -O2 p2.c -S [hjl@gnu-6 tmp]$ cat p2.s .file "p2.c" .text .p2align 4,,15 .globl xxx .type xxx, @function xxx: .LFB0: .cfi_startproc xorl %eax, %eax jmp foo .cfi_endproc .LFE0: .size xxx, .-xxx