[PATCH] D117616: GCC ABI Compatibility: Preserve alignment of non-pod members in packed structs
Bhramar Vatsa via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 3 22:15:11 PST 2022
Bhramar.vatsa added a comment.
@dblaikie
The condition "FieldClass->isPOD()" returns false for the following case (when considering field 'struct foo t' of 'struct foo1') :
class foo {
foo() = default;
int _a;
};
struct foo1 {
struct foo t;
} t1;
The same code though doesn't give any warning for gcc: https://godbolt.org/z/f4chraerY
This is because the way it works for CXXRecordDecl : https://github.com/llvm/llvm-project/blob/1e3a02162db20264e9615b1346420c8d199cb347/clang/lib/AST/DeclCXX.cpp#L928
So, there seems to be a difference the way GCC is handling this case, in comparison to how now clang handles it.
For the same case, `D->getType().isCXX11PODType()` (or `isPODType()`) indicates it to be a POD type. So, we think that this should be further changed such that it doesn't break the code that works with GCC.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D117616/new/
https://reviews.llvm.org/D117616
More information about the cfe-commits
mailing list