[PATCH] D158145: [clang] Update NumFunctionDeclBits for FunctionDeclBitfields

Ding Fei via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 17 00:31:09 PDT 2023


danix800 added a comment.

I also investigated whether we could count those bits at compile time and statically assert on them,
because a small typo or missed update could spend us a lot of time to dig for the cause.

My first step is trying to count number of bits for a single bitfield, this is promising based on this <https://gist.github.com/RMDarth/6357ddd6e09b4117efe84fc3347a732a> but
with a restriction, it only works on `struct` (default public fields), not `class` (default to private fields).

If we can implement this `bitsizeof` then we could have:

  enum { NumFunctionDeclBits = offsetof(FunctionDeclBitfields, SClass)
                             + offsetof(FunctionDeclBitfields, IsInline)
                             + ... };

This can automatically update total number of bits if any of the existing one is updated.

The second step is trying to enumerate all bit fields at compile time so that we can totally fix this kind
of issue, but it seems not possible.

Any suggestions or advices? Is it even worth it to do it like this?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D158145/new/

https://reviews.llvm.org/D158145



More information about the cfe-commits mailing list