https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120900
Bug ID: 120900 Summary: C++ passes user aligned struct differently from C Product: gcc Version: 15.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: jakub at redhat dot com, jason at redhat dot com Target Milestone: --- Target: x86-64 [hjl@gnu-zen4-1 tmp]$ cat x.c typedef struct { long double a; long double b; } c1 __attribute__((aligned(32))); extern c1 x1; void foo1 (c1 f) { x1 = f; } [hjl@gnu-zen4-1 tmp]$ /usr/gcc-15.1.1-x32/bin/gcc -c x.c [hjl@gnu-zen4-1 tmp]$ /usr/gcc-15.1.1-x32/bin/g++ -c x.c x.c: In function ‘void foo1(c1)’: x.c:7:1: note: the ABI for passing parameters with 32-byte alignment has changed in GCC 4.6 7 | foo1 (c1 f) | ^~~~ [hjl@gnu-zen4-1 tmp]$