On Jul 16, 2010, at 8:40 AM, Douglas Gregor wrote: > Author: dgregor > Date: Fri Jul 16 10:40:40 2010 > New Revision: 108527 > > URL: http://llvm.org/viewvc/llvm-project?rev=108527&view=rev > Log: > Revert Microsoft-specific override of the "typedef requires a name" > diagnostic. Instead, put it and the "declaration does not declare > anything" warning into -Wmissing-declarations. > > Modified: > cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td > cfe/trunk/include/clang/Basic/DiagnosticGroups.td > cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td > cfe/trunk/lib/Sema/SemaDecl.cpp > cfe/trunk/test/Parser/MicrosoftExtensions.c > > Modified: cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td?rev=108527&r1=108526&r2=108527&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td Fri Jul > 16 10:40:40 2010 > @@ -41,7 +41,8 @@ > "must end with ':'">; > > // Parse && Sema > -def ext_no_declarators : ExtWarn<"declaration does not declare > anything">; > +def ext_no_declarators : ExtWarn<"declaration does not declare > anything">, > + InGroup<MissingDeclarations>; > def err_param_redefinition : Error<"redefinition of parameter %0">; > def err_invalid_storage_class_in_func_decl : Error< > "invalid storage class specifier in function declarator">; > > Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticGroups.td?rev=108527&r1=108526&r2=108527&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/include/clang/Basic/DiagnosticGroups.td (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticGroups.td Fri Jul 16 > 10:40:40 2010 > @@ -35,7 +35,7 @@ > def GNUDesignator : DiagGroup<"gnu-designator">; > def Deprecated : DiagGroup<"deprecated">; > def : DiagGroup<"disabled-optimization">; > -def : DiagGroup<"discard-qual">; > +def : DiagGroup<"discard-qualgnu">; > def : DiagGroup<"div-by-zero">; > def EmptyBody : DiagGroup<"empty-body">; > def ExtraTokens : DiagGroup<"extra-tokens">; > @@ -57,7 +57,7 @@ > def LiteralRange : DiagGroup<"literal-range">; > def : DiagGroup<"main">; > def MissingBraces : DiagGroup<"missing-braces">; > -def : DiagGroup<"missing-declarations">; > +def MissingDeclarations: DiagGroup<"missing-declarations">; > def : DiagGroup<"missing-format-attribute">; > def : DiagGroup<"missing-include-dirs">; > def : DiagGroup<"missing-noreturn">; > > Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=108527&r1=108526&r2=108527&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Fri Jul 16 > 10:40:40 2010 > @@ -227,7 +227,8 @@ > "platform-specific data}0) must be of type %1">; > > /// parser diagnostics > -def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">; > +def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">, > + InGroup<MissingDeclarations>; > def err_typedef_not_identifier : Error<"typedef name must be an > identifier">; > def err_statically_allocated_object : Error< > "interface type cannot be statically allocated">; > > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=108527&r1=108526&r2=108527&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Jul 16 10:40:40 2010 > @@ -1550,12 +1550,11 @@ > if (!DS.isMissingDeclaratorOk() && > DS.getTypeSpecType() != DeclSpec::TST_error) { > // Warn about typedefs of enums without names, since this is an > - // extension in both Microsoft an GNU. > + // extension in both Microsoft and GNU. > if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef && > Tag && isa<EnumDecl>(Tag)) { > - if (!getLangOptions().Microsoft) > - Diag(DS.getSourceRange().getBegin(), > diag::ext_typedef_without_a_name) > - << DS.getSourceRange(); > + Diag(DS.getSourceRange().getBegin(), > diag::ext_typedef_without_a_name) > + << DS.getSourceRange(); > return DeclPtrTy::make(Tag); > } > > > Modified: cfe/trunk/test/Parser/MicrosoftExtensions.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/MicrosoftExtensions.c?rev=108527&r1=108526&r2=108527&view=diff > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/test/Parser/MicrosoftExtensions.c (original) > +++ cfe/trunk/test/Parser/MicrosoftExtensions.c Fri Jul 16 10:40:40 > 2010 > @@ -1,4 +1,4 @@ > -// RUN: %clang_cc1 -triple i386-mingw32 -fsyntax-only -verify -fms- > extensions -x objective-c++ %s > +// RUN: %clang_cc1 -triple i386-mingw32 -fsyntax-only -verify -fms- > extensions -Wno-missing-declarations -x objective-c++ %s
Any reason we are doing this in ObjC++ and not c++ mode? - Fariborz > > __stdcall int func0(); > int __stdcall func(); > typedef int (__cdecl *tptr)(); > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
