r173952 - [preprocessor] Don't warn about "disabled expansion of recursive macro"

Abramo Bagnara abramo.bagnara at gmail.com
Wed Jan 30 11:54:16 PST 2013


Il 30/01/2013 19:55, Argyrios Kyrtzidis ha scritto:
> Author: akirtzidis
> Date: Wed Jan 30 12:55:52 2013
> New Revision: 173952
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=173952&view=rev
> Log:
> [preprocessor] Don't warn about "disabled expansion of recursive macro"
> for "#define X X".
> 
> This is a pattern that, for example, stdbool.h uses.
> rdar://12435773

Please revert this commit: this has already been discussed in detail in
past and we decided otherwise. Last time it has been discussed in this
thread:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20121029/067098.html

> 
> Modified:
>     cfe/trunk/lib/Lex/PPMacroExpansion.cpp
>     cfe/trunk/test/Headers/stdbool.cpp
>     cfe/trunk/test/Preprocessor/warn-disabled-macro-expansion.c
> 
> Modified: cfe/trunk/lib/Lex/PPMacroExpansion.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPMacroExpansion.cpp?rev=173952&r1=173951&r2=173952&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Lex/PPMacroExpansion.cpp (original)
> +++ cfe/trunk/lib/Lex/PPMacroExpansion.cpp Wed Jan 30 12:55:52 2013
> @@ -459,7 +459,10 @@ bool Preprocessor::HandleMacroExpandedId
>        if (MacroInfo *NewMI = getMacroInfo(NewII))
>          if (!NewMI->isEnabled() || NewMI == MI) {
>            Identifier.setFlag(Token::DisableExpand);
> -          Diag(Identifier, diag::pp_disabled_macro_expansion);
> +          // Don't warn for "#define X X" like "#define bool bool" from
> +          // stdbool.h.

Would you be so kind to add a comment here to remember that the choice
to have this warning for thar case (although disabled by default) is
deliberate?

> +          if (NewMI != MI)
> +            Diag(Identifier, diag::pp_disabled_macro_expansion);
>          }
>      }
>  
> 
> Modified: cfe/trunk/test/Headers/stdbool.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/stdbool.cpp?rev=173952&r1=173951&r2=173952&view=diff
> ==============================================================================
> --- cfe/trunk/test/Headers/stdbool.cpp (original)
> +++ cfe/trunk/test/Headers/stdbool.cpp Wed Jan 30 12:55:52 2013
> @@ -1,5 +1,6 @@
>  // RUN: %clang_cc1 -E -dM %s | FileCheck --check-prefix=CHECK-GNU-COMPAT %s
>  // RUN: %clang_cc1 -std=c++98 -E -dM %s | FileCheck --check-prefix=CHECK-CONFORMING %s
> +// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -verify -Weverything %s
>  #include <stdbool.h>
>  #define zzz
>  
> @@ -12,3 +13,7 @@
>  // CHECK-CONFORMING: #define __CHAR_BIT__
>  // CHECK-CONFORMING-NOT: #define false false
>  // CHECK-CONFORMING: #define zzz
> +
> +zzz
> +// expected-no-diagnostics
> +extern bool x;
> 
> Modified: cfe/trunk/test/Preprocessor/warn-disabled-macro-expansion.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/warn-disabled-macro-expansion.c?rev=173952&r1=173951&r2=173952&view=diff
> ==============================================================================
> --- cfe/trunk/test/Preprocessor/warn-disabled-macro-expansion.c (original)
> +++ cfe/trunk/test/Preprocessor/warn-disabled-macro-expansion.c Wed Jan 30 12:55:52 2013
> @@ -16,7 +16,7 @@
>  
>  #define z(x) (z)(x)
>  
> -p // expected-warning {{recursive macro}}
> +p // no warning
>  
>  a // expected-warning {{recursive macro}}
>  
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 


-- 
Abramo Bagnara

Opera Unica                          Phone: +39.0546.656023
Via Borghesi, 16
48014 Castel Bolognese (RA) - Italy



More information about the cfe-commits mailing list