[PATCH] D79719: [AIX] Implement AIX special alignment rule about double/long double
Hubert Tong via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 3 19:32:17 PDT 2020
hubert.reinterpretcast added inline comments.
================
Comment at: clang/lib/AST/RecordLayoutBuilder.cpp:1908
// The align if the field is not packed. This is to check if the attribute
// was unnecessary (-Wpacked).
CharUnits UnpackedFieldAlign = FieldAlign;
----------------
Testing using my build with this patch seems to indicate that tracking `FieldAlign` for `UnpackedFieldAlign` does not lead to the desired result.
The `QQ` and `ZZ` cases differ only on the `packed` attribute on `Q`. They are observed to have different sizes; however, we get a `-Wpacked` diagnostic claiming that the `packed` attribute was unnecessary (and could therefore be removed).
```
struct [[gnu::packed]] Q {
double x [[gnu::aligned(4)]];
};
struct QQ : Q { char x; };
struct Z {
double x [[gnu::aligned(4)]];
};
struct ZZ : Z { char x; };
extern char qx[sizeof(QQ)];
extern char qx[12];
extern char qz[sizeof(ZZ)];
extern char qz[16];
```
```
<stdin>:1:24: warning: packed attribute is unnecessary for 'Q' [-Wpacked]
struct [[gnu::packed]] Q {
^
1 warning generated.
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79719/new/
https://reviews.llvm.org/D79719
More information about the cfe-commits
mailing list