================
@@ -10601,19 +10608,28 @@ static bool AnalyzeBitFieldAssignment(Sema &S, 
FieldDecl *Bitfield, Expr *Init,
       // on Windows where unfixed enums always use an underlying type of 'int'.
       unsigned DiagID = 0;
       if (SignedEnum && !SignedBitfield) {
-        DiagID = diag::warn_unsigned_bitfield_assigned_signed_enum;
+        DiagID =
+            PTAttr == nullptr
+                ? diag::warn_unsigned_bitfield_assigned_signed_enum
+                : diag::
+                      
warn_preferred_type_unsigned_bitfield_assigned_signed_enum;
       } else if (SignedBitfield && !SignedEnum &&
                  ED->getNumPositiveBits() == FieldWidth) {
-        DiagID = diag::warn_signed_bitfield_enum_conversion;
+        DiagID =
+            PTAttr == nullptr
+                ? diag::warn_signed_bitfield_enum_conversion
+                : diag::warn_preferred_type_signed_bitfield_enum_conversion;
----------------
ojhunt wrote:

@AaronBallman @cor3ntin @erichkeane  I was tempted to do this as a set of defs 
like:

```cpp
unsigned assigned_signed_enum_diag[] = 
{diag::warn_unsigned_bitfield_assigned_signed_enum, 
                                                                          
diag::warn_preferred_type_unsigned_bitfield_assigned_signed_enum};
...
DiagID = assigned_signed_enum_diag[PTAttr != nullptr];
```

But that seemed like while being more concise it might be confusing, and 
potentially error prone?

https://github.com/llvm/llvm-project/pull/116785
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to