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

            Bug ID: 70445
           Summary: Incorrect C++ member alignment
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---

[hjl@gnu-ivb-1 gcc]$ cat /tmp/a.ii 
typedef struct xxx 
{
  unsigned long long a1;
  unsigned long long a2;
  unsigned long long a3;
  unsigned long long a4;
} xxx;

typedef struct Foo
{
  xxx foo;
} Foo;

extern xxx b;
Foo y;

void
foo (void)
{
  b = y.foo;
}
[hjl@gnu-ivb-1 gcc]$ ./xgcc -B./ -S -O2 -da /tmp/a.ii 
[hjl@gnu-ivb-1 gcc]$ cp /tmp/a.ii /tmp/c.i
[hjl@gnu-ivb-1 gcc]$ ./xgcc -B./ -S -O2 -da /tmp/c.i 
[hjl@gnu-ivb-1 gcc]$ grep A128 c.i.213r.expand
[hjl@gnu-ivb-1 gcc]$ grep A128 a.ii.213r.expand
        (mem/c:DI (reg/f:DI 96) [1 y.foo+16 S8 A128])) /tmp/a.ii:20 -1
                                              ^^^^^ Where dos it come from?
        (mem/c:DI (reg/f:DI 96) [1 y.foo+16 S8 A128])) /tmp/a.ii:20 -1
[hjl@gnu-ivb-1 gcc]$

Reply via email to