[core.reflect] Detect Padding in structs or classes
uplink.coder at googlemail.com
Sat Oct 2 20:16:28 UTC 2021
On Friday, 1 October 2021 at 17:35:24 UTC, Stefan Koch wrote:
> There has been a PR to introduce `-vpadding` into dmd which
> warns on padding in structs.
> This can actually be trivially done by core reflect.
And there are some results.
diff --git a/std/file.d b/std/file.d
index 741656d..0d1c17c 100644
@@ -4578,7 +4578,7 @@ version (Posix) @system unittest
* Dictates directory spanning policy for $(D_PARAM dirEntries)
+enum SpanMode : ubyte
/** Only spans one directory. */
@@ -4635,15 +4635,15 @@ enum SpanMode
private struct DirIteratorImpl
- SpanMode _mode;
+ DirEntry _cur;
+ DirHandle _stack;
+ DirEntry _stashed; //used in depth first mode
// Whether we should follow symlinked directories while
// It also indicates whether we should avoid functions which
// stat (since we should only need lstat in this case and it
// be more efficient to not call stat in addition to lstat).
- DirEntry _cur;
- DirHandle _stack;
- DirEntry _stashed; //used in depth first mode
+ SpanMode _mode;
This patch to phobos saves 4 bytes or so ;)
It's not much but it comes practically for free :-)
With my `core.reflect` extension it was just a questing of asking
in between which fields the padding was.
You could save another byte by folding `_followSymlink` into the
But that and the PR to Phobos are left as an exercise for the
More information about the Digitalmars-d