Author: Aaron Ballman
Date: 2021-07-14T11:43:28-04:00
New Revision: aefd6c615c91a2af89fa3697cf1813aac0f622de

URL: 
https://github.com/llvm/llvm-project/commit/aefd6c615c91a2af89fa3697cf1813aac0f622de
DIFF: 
https://github.com/llvm/llvm-project/commit/aefd6c615c91a2af89fa3697cf1813aac0f622de.diff

LOG: Combine two diagnostics into one and correct grammar

The anonymous and non-anonymous bit-field diagnostics are easily
combined into one diagnostic. However, the diagnostic was missing a
"the" that is present in the almost-identically worded
warn_bitfield_width_exceeds_type_width diagnostic, hence the changes to
test cases.

Added: 
    

Modified: 
    clang/include/clang/Basic/DiagnosticSemaKinds.td
    clang/lib/Sema/SemaDecl.cpp
    clang/test/Sema/bitfield.c
    clang/test/SemaCXX/ms_wide_bitfield.cpp
    clang/test/SemaObjC/class-bitfield.m

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td 
b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 422507cd2842b..f4c189a3d178f 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -5839,11 +5839,8 @@ def err_anon_bitfield_has_negative_width : Error<
   "anonymous bit-field has negative width (%0)">;
 def err_bitfield_has_zero_width : Error<"named bit-field %0 has zero width">;
 def err_bitfield_width_exceeds_type_width : Error<
-  "width of bit-field %0 (%1 bits) exceeds %select{width|size}2 "
-  "of its type (%3 bit%s3)">;
-def err_anon_bitfield_width_exceeds_type_width : Error<
-  "width of anonymous bit-field (%0 bits) exceeds %select{width|size}1 "
-  "of its type (%2 bit%s2)">;
+  "width of%select{ anonymous|}0 bit-field%select{| %1}0 (%2 bits) exceeds the 
"
+  "%select{width|size}3 of its type (%4 bit%s4)">;
 def err_incorrect_number_of_vector_initializers : Error<
   "number of elements must be either one or match the size of the vector">;
 

diff  --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 700a6db7fea89..c2dcdf0b8d1f6 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -16685,14 +16685,9 @@ ExprResult Sema::VerifyBitField(SourceLocation 
FieldLoc,
     if (CStdConstraintViolation || MSBitfieldViolation) {
       unsigned DiagWidth =
           CStdConstraintViolation ? TypeWidth : TypeStorageSize;
-      if (FieldName)
-        return Diag(FieldLoc, diag::err_bitfield_width_exceeds_type_width)
-               << FieldName << toString(Value, 10)
-               << !CStdConstraintViolation << DiagWidth;
-
-      return Diag(FieldLoc, diag::err_anon_bitfield_width_exceeds_type_width)
-             << toString(Value, 10) << !CStdConstraintViolation
-             << DiagWidth;
+      return Diag(FieldLoc, diag::err_bitfield_width_exceeds_type_width)
+             << (bool)FieldName << FieldName << toString(Value, 10)
+             << !CStdConstraintViolation << DiagWidth;
     }
 
     // Warn on types where the user might conceivably expect to get all

diff  --git a/clang/test/Sema/bitfield.c b/clang/test/Sema/bitfield.c
index 03b2a22d3ed9b..13b6c3e152d72 100644
--- a/clang/test/Sema/bitfield.c
+++ b/clang/test/Sema/bitfield.c
@@ -6,7 +6,7 @@ struct a {
   int a : -1; // expected-error{{bit-field 'a' has negative width}}
 
   // rdar://6081627
-  int b : 33; // expected-error{{width of bit-field 'b' (33 bits) exceeds 
width of its type (32 bits)}}
+  int b : 33; // expected-error{{width of bit-field 'b' (33 bits) exceeds the 
width of its type (32 bits)}}
 
   int c : (1 + 0.25); // expected-error{{integer constant expression must have 
integer type}}
   int d : (int)(1 + 0.25); 
@@ -22,12 +22,12 @@ struct a {
   int g : (_Bool)1;
   
   // PR4017  
-  char : 10;      // expected-error {{width of anonymous bit-field (10 bits) 
exceeds width of its type (8 bits)}}
+  char : 10;      // expected-error {{width of anonymous bit-field (10 bits) 
exceeds the width of its type (8 bits)}}
   unsigned : -2;  // expected-error {{anonymous bit-field has negative width 
(-2)}}
   float : 12;     // expected-error {{anonymous bit-field has non-integral 
type 'float'}}
 
-  _Bool : 2;   // expected-error {{width of anonymous bit-field (2 bits) 
exceeds width of its type (1 bit)}}
-  _Bool h : 5; // expected-error {{width of bit-field 'h' (5 bits) exceeds 
width of its type (1 bit)}}
+  _Bool : 2;   // expected-error {{width of anonymous bit-field (2 bits) 
exceeds the width of its type (1 bit)}}
+  _Bool h : 5; // expected-error {{width of bit-field 'h' (5 bits) exceeds the 
width of its type (1 bit)}}
 };
 
 struct b {unsigned x : 2;} x;

diff  --git a/clang/test/SemaCXX/ms_wide_bitfield.cpp 
b/clang/test/SemaCXX/ms_wide_bitfield.cpp
index b634e78c70ce5..0dcc787928b0a 100644
--- a/clang/test/SemaCXX/ms_wide_bitfield.cpp
+++ b/clang/test/SemaCXX/ms_wide_bitfield.cpp
@@ -1,9 +1,9 @@
 // RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple i686-pc-win32 
-fdump-record-layouts -fsyntax-only -mms-bitfields -verify %s 2>&1
 
 struct A {
-  char a : 9; // expected-error{{width of bit-field 'a' (9 bits) exceeds size 
of its type (8 bits)}}
-  int b : 33; // expected-error{{width of bit-field 'b' (33 bits) exceeds size 
of its type (32 bits)}}
-  bool c : 9; // expected-error{{width of bit-field 'c' (9 bits) exceeds size 
of its type (8 bits)}}
+  char a : 9; // expected-error{{width of bit-field 'a' (9 bits) exceeds the 
size of its type (8 bits)}}
+  int b : 33; // expected-error{{width of bit-field 'b' (33 bits) exceeds the 
size of its type (32 bits)}}
+  bool c : 9; // expected-error{{width of bit-field 'c' (9 bits) exceeds the 
size of its type (8 bits)}}
   bool d : 3;
 };
 

diff  --git a/clang/test/SemaObjC/class-bitfield.m 
b/clang/test/SemaObjC/class-bitfield.m
index 07d690a94a9d2..0e88c44ae0ffd 100644
--- a/clang/test/SemaObjC/class-bitfield.m
+++ b/clang/test/SemaObjC/class-bitfield.m
@@ -5,7 +5,7 @@ @interface X
   int a : -1; // expected-error{{bit-field 'a' has negative width}}
 
   // rdar://6081627
-  int b : 33; // expected-error{{width of bit-field 'b' (33 bits) exceeds 
width of its type (32 bits)}}
+  int b : 33; // expected-error{{width of bit-field 'b' (33 bits) exceeds the 
width of its type (32 bits)}}
 
   int c : (1 + 0.25); // expected-error{{integer constant expression must have 
integer type}}
   int d : (int)(1 + 0.25); 


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to