Author: rnk Date: Thu Apr 3 19:17:16 2014 New Revision: 205591 URL: http://llvm.org/viewvc/llvm-project?rev=205591&view=rev Log: Put macro redefinition warnings under -Wmacro-redefined
This is consistent with -Wbuiltin-macro-redefined, and puts this common extension warning under a flag. Reviewers: rsmith Differential Revision: http://llvm-reviews.chandlerc.com/D3283 Added: cfe/trunk/test/Preprocessor/macro_redefined.c Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td cfe/trunk/test/Misc/warning-flags.c Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticGroups.td?rev=205591&r1=205590&r2=205591&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticGroups.td (original) +++ cfe/trunk/include/clang/Basic/DiagnosticGroups.td Thu Apr 3 19:17:16 2014 @@ -48,6 +48,7 @@ def ImplicitConversionFloatingPointToBoo DiagGroup<"implicit-conversion-floating-point-to-bool">; def ObjCLiteralConversion : DiagGroup<"objc-literal-conversion">; def BadArrayNewLength : DiagGroup<"bad-array-new-length">; +def MacroRedefined : DiagGroup<"macro-redefined">; def BuiltinMacroRedefined : DiagGroup<"builtin-macro-redefined">; def BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">; def C99Compat : DiagGroup<"c99-compat">; Modified: cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td?rev=205591&r1=205590&r2=205591&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td (original) +++ cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td Thu Apr 3 19:17:16 2014 @@ -316,7 +316,7 @@ def ext_pp_extra_tokens_at_eol : ExtWarn def ext_pp_comma_expr : Extension<"comma operator in operand of #if">; def ext_pp_bad_vaargs_use : Extension< "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro">; -def ext_pp_macro_redef : ExtWarn<"%0 macro redefined">; +def ext_pp_macro_redef : ExtWarn<"%0 macro redefined">, InGroup<MacroRedefined>; def ext_variadic_macro : Extension<"variadic macros are a C99 feature">, InGroup<VariadicMacros>; def warn_cxx98_compat_variadic_macro : Warning< Modified: cfe/trunk/test/Misc/warning-flags.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/warning-flags.c?rev=205591&r1=205590&r2=205591&view=diff ============================================================================== --- cfe/trunk/test/Misc/warning-flags.c (original) +++ cfe/trunk/test/Misc/warning-flags.c Thu Apr 3 19:17:16 2014 @@ -18,7 +18,7 @@ This test serves two purposes: The list of warnings below should NEVER grow. It should gradually shrink to 0. -CHECK: Warnings without flags (106): +CHECK: Warnings without flags (105): CHECK-NEXT: ext_delete_void_ptr_operand CHECK-NEXT: ext_expected_semi_decl_list CHECK-NEXT: ext_explicit_specialization_storage_class @@ -28,7 +28,6 @@ CHECK-NEXT: ext_missing_declspec CHECK-NEXT: ext_missing_whitespace_after_macro_name CHECK-NEXT: ext_new_paren_array_nonconst CHECK-NEXT: ext_plain_complex -CHECK-NEXT: ext_pp_macro_redef CHECK-NEXT: ext_template_arg_extra_parens CHECK-NEXT: ext_typecheck_comparison_of_pointer_integer CHECK-NEXT: ext_typecheck_cond_incompatible_operands Added: cfe/trunk/test/Preprocessor/macro_redefined.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/macro_redefined.c?rev=205591&view=auto ============================================================================== --- cfe/trunk/test/Preprocessor/macro_redefined.c (added) +++ cfe/trunk/test/Preprocessor/macro_redefined.c Thu Apr 3 19:17:16 2014 @@ -0,0 +1,19 @@ +// RUN: %clang_cc1 %s -Eonly -verify -Wno-all -Wmacro-redefined -DCLI_MACRO=1 -DWMACRO_REDEFINED +// RUN: %clang_cc1 %s -Eonly -verify -Wno-all -Wno-macro-redefined -DCLI_MACRO=1 + +#ifndef WMACRO_REDEFINED +// expected-no-diagnostics +#endif + +#ifdef WMACRO_REDEFINED +// expected-note@1 {{previous definition is here}} +// expected-warning@+2 {{macro redefined}} +#endif +#define CLI_MACRO + +#ifdef WMACRO_REDEFINED +// expected-note@+3 {{previous definition is here}} +// expected-warning@+3 {{macro redefined}} +#endif +#define REGULAR_MACRO +#define REGULAR_MACRO 1 _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
