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]$

Reply via email to