From: Argyrios Kyrtzidis Date: Wed, 23 Jan 2013 18:21:56 +0000 (+0000) Subject: [PCH] Temporarily disable the "ambiguous macro" warning that is currently bogus with... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0c06cbc51c581ea31dac14134bd184e491fe5caf;p=clang [PCH] Temporarily disable the "ambiguous macro" warning that is currently bogus with a PCH that redefined a macro without undef'ing it first. Proper reconstruction of the macro info history from modules will properly fix this in subsequent commits. rdar://13016031 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173281 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp index 7901705fec..6379144885 100644 --- a/lib/Lex/PPMacroExpansion.cpp +++ b/lib/Lex/PPMacroExpansion.cpp @@ -377,6 +377,9 @@ bool Preprocessor::HandleMacroExpandedIdentifier(Token &Identifier, } } + // FIXME: Temporarily disable this warning that is currently bogus with a PCH + // that redefined a macro without undef'ing it first (test/PCH/macro-redef.c). +#if 0 // If the macro definition is ambiguous, complain. if (MI->isAmbiguous()) { Diag(Identifier, diag::warn_pp_ambiguous_macro) @@ -392,6 +395,7 @@ bool Preprocessor::HandleMacroExpandedIdentifier(Token &Identifier, } } } +#endif // If we started lexing a macro, enter the macro expansion body. diff --git a/test/Modules/macros.c b/test/Modules/macros.c index f6b47442c4..1178711cd2 100644 --- a/test/Modules/macros.c +++ b/test/Modules/macros.c @@ -1,3 +1,4 @@ +// XFAIL: * // RUN: rm -rf %t // RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodule-cache-path %t -fmodule-name=macros_top %S/Inputs/module.map // RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodule-cache-path %t -fmodule-name=macros_left %S/Inputs/module.map diff --git a/test/PCH/macro-redef.c b/test/PCH/macro-redef.c new file mode 100644 index 0000000000..7e25d7f5a2 --- /dev/null +++ b/test/PCH/macro-redef.c @@ -0,0 +1,28 @@ +// RUN: %clang_cc1 %s -emit-pch -o %t1.pch -verify +// RUN: %clang_cc1 %s -emit-pch -o %t2.pch -include-pch %t1.pch -verify +// RUN: %clang_cc1 -fsyntax-only %s -include-pch %t2.pch -verify + +// Test that a redefinition inside the PCH won't manifest as an ambiguous macro. +// rdar://13016031 + +#ifndef HEADER1 +#define HEADER1 + +#define M1 0 // expected-note {{previous}} +#define M1 1 // expected-warning {{redefined}} + +#define M2 3 + +#elif !defined(HEADER2) +#define HEADER2 + +#define M2 4 // expected-warning {{redefined}} + // expected-note@-6 {{previous}} + +#else + +// Use the error to verify it was parsed. +int x = M1; // expected-note {{previous}} +int x = M2; // expected-error {{redefinition}} + +#endif