rnk added a comment. Compiling with -fdump-record-layouts revealed the problem:
*** Dumping AST Record Layout 0 | struct llvm::coverage::CovMapFunctionRecordV3 0 | struct llvm::coverage::accessors::FuncHashAndDataSize<struct llvm::coverage::CovMapFunctionRecordV3> (base) (empty) 1 | struct llvm::coverage::accessors::HashedNameRef<struct llvm::coverage::CovMapFunctionRecordV3> (base) (empty) 1 | const int64_t NameRef 9 | const uint32_t DataSize 13 | const uint64_t FuncHash 21 | const uint64_t FilenamesRef 29 | const char CoverageMapping | [sizeof=30, align=1, | nvsize=30, nvalign=1] Everything is off-by-one because the empty bases are not zero sized. The MSVC record layout algorithm is just different in this area. =/ So, I think this patch would be fine if you refactor it to avoid the accessor classes. I took a stab at it, but it's not straightforward. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D69471/new/ https://reviews.llvm.org/D69471 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits