Add warning when assigning enums to bitfields without an explicit unsigned underlying...
authorReid Kleckner <rnk@google.com>
Wed, 16 Nov 2016 23:40:00 +0000 (23:40 +0000)
committerReid Kleckner <rnk@google.com>
Wed, 16 Nov 2016 23:40:00 +0000 (23:40 +0000)
commitad425626d237c3746c8de8d02c04f0ee6334f7e0
tree3ffb772f1b5dd26a802f128d02432237096f38e7
parent017a55b09265c6fd7fdb122cd56e20edaec71db3
Add warning when assigning enums to bitfields without an explicit unsigned underlying type

Summary:
Add a warning when assigning enums to bitfields without an explicit
unsigned underlying type. This is to prevent problems with MSVC
compatibility, since the Microsoft ABI defaults to storing enums with a
signed type, causing inconsistencies with saving to/reading from
bitfields.

Also disabled the warning in the dr0xx.cpp test which throws the error,
and added a test for the warning.

The warning can be disabled with -Wno-signed-enum-bitfield.

Patch by Sasha Bermeister!

Reviewers: rnk, aaron.ballman

Subscribers: mehdi_amini, aaron.ballman, cfe-commits, thakis, dcheng

Differential Revision: https://reviews.llvm.org/D24289

llvm-svn: 287177
clang/include/clang/Basic/DiagnosticGroups.td
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/lib/Sema/SemaChecking.cpp
clang/test/SemaCXX/warn-msvc-enum-bitfield.cpp [new file with mode: 0644]