mirror of https://github.com/microsoft/clang.git
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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205591 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ebb79f2cbf
commit
cc1924744d
|
@ -48,6 +48,7 @@ def ImplicitConversionFloatingPointToBool :
|
|||
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">;
|
||||
|
|
|
@ -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<
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue