[cfe-commits] r65253 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.def test/Sema/struct-decl.c

Eli Friedman eli.friedman at gmail.com
Sat Feb 21 16:20:44 PST 2009


Author: efriedma
Date: Sat Feb 21 18:20:44 2009
New Revision: 65253

URL: http://llvm.org/viewvc/llvm-project?rev=65253&view=rev
Log:
Sanity fix for PR3642: if we're treating a diagnostic as an error, it's 
required to actually be an error for correctness.  The attached testcase 
now gives an error instead of mysteriously crashing.

Now, it's possible we actually want to support the given usage, but I 
haven't looked at the relevant code closely.


Modified:
    cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.def
    cfe/trunk/test/Sema/struct-decl.c

Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.def?rev=65253&r1=65252&r2=65253&view=diff

==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.def (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.def Sat Feb 21 18:20:44 2009
@@ -728,7 +728,7 @@
      "field %0 declared as a function")
 DIAG(err_field_incomplete, ERROR,
      "field has incomplete type %0")
-DIAG(err_variable_sized_type_in_struct, EXTENSION,
+DIAG(err_variable_sized_type_in_struct, ERROR,
      "variable sized type %0 must be at end of struct or class")
 DIAG(err_flexible_array_empty_struct, ERROR,
      "flexible array %0 not allowed in otherwise empty struct")

Modified: cfe/trunk/test/Sema/struct-decl.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/struct-decl.c?rev=65253&r1=65252&r2=65253&view=diff

==============================================================================
--- cfe/trunk/test/Sema/struct-decl.c (original)
+++ cfe/trunk/test/Sema/struct-decl.c Sat Feb 21 18:20:44 2009
@@ -22,3 +22,14 @@
         struct st *f;
         return f->v + f[0].v;
 }
+
+// PR3642
+struct pppoe_tag {
+ short tag_type;
+ char tag_data[];
+};
+struct datatag {
+ struct pppoe_tag hdr; //expected-error{{variable sized type 'hdr' must be at end of struct}}
+ char data;
+};
+





More information about the cfe-commits mailing list