aaron.ballman added a comment. In D122248#3403143 <https://reviews.llvm.org/D122248#3403143>, @yihanaa wrote:
> 1. Support zero-width bitfield, named bitfield and unnamed bitfield. > 2. Add a release notes. > > The builtin function __builtin_dump_struct behaves for zero-width bitfield > and unnamed bitfield as follows > > int printf(const char *fmt, ...); > > void foo(void) { > struct Bar { > unsigned c : 1; > unsigned : 3; > unsigned : 0; > unsigned b; > }; > > struct Bar a = { > .c = 1, > .b = 2022, > }; > > __builtin_dump_struct(&a, &printf); > } > > int main() { > foo(); > return 0; > } > > Output: > > struct Bar { > unsigned int c : 1 > unsigned int : 0 > unsigned int b : 2022 > } Thank you for the release note and additional test coverage. I'm wondering why we handle the zero-width bit-field differently from the anonymous one (e.g., why do we not have `unsigned int : 3` before the `unsigned int : 0`? It seems a bit odd to drop that from the output. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D122248/new/ https://reviews.llvm.org/D122248 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits