================
@@ -6418,6 +6418,12 @@ def warn_signed_bitfield_enum_conversion : Warning<
InGroup<BitFieldEnumConversion>, DefaultIgnore;
def note_change_bitfield_sign : Note<
"consider making the bitfield type %select{unsigned|signed}0">;
+def warn_ms_bitfield_mismatched_storage_packing : Warning<
+ "bit-field %0 of type %1 has a different storage size (%2 vs %3 bytes) than
the "
+ "preceding bit-field and may not be packed under MSVC ABI">,
+ InGroup<MSBitfieldCompatibility>, DefaultIgnore;
----------------
ojhunt wrote:
Oh, what are the semantics of `-fms-compatibility`? does it include the codegen
changing options? In which case I'm not sure if this warning should be on?
My intention for this warning was so that code that compiled under both ms and
and non-ms ABIs with the expectation of sane padding (e.g. llvm+clang) can
diagnose the padding difference.
But for someone compiling under the ms abi that's presumably the intent so the
warning becomes "you aren't packing these perfectly" (which might be something
to subsume into a more usual packing warning?), but enabling this warning by
default is basically going to mean we'll be making a warning along the lines of
"warning: packing of these fields matches the expected platform packing" which
seems less than great.
My long term goal is to allow us to switch to enum bitfields in llvm/clang
because we'll have warnings mitigating the issues that apparently caused us to
use unsigned instead of enums everywhere.
https://github.com/llvm/llvm-project/pull/117428
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits