rsmith added inline comments.
================
Comment at: lib/Sema/SemaChecking.cpp:11054
@@ +11053,3 @@
+ auto AlignRecord = Context.getTypeAlignInChars(BaseType);
+ if ((RequiredAlignment > AlignRecord) ||
+ ((Context.toCharUnitsFromBits(
----------------
Suppose I have this:
struct A { char c; int n; };
struct __attribute__((packed)) B { A a; } b;
char *p = &b.a.c;
Here, on the second iteration through this loop, it looks like you'll compute
`RequiredAlignment == 4` (from `A`'s alignment of 4), with `AlignRecord == 1`
(from the attribute), which would result in calling `Action`. This seems
unnecessary, since we know we'll never diagnose this case, because the actual
alignment of the field is (at least) the alignment of the original member `c`.
https://reviews.llvm.org/D23657
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits