[cfe-commits] r173281 - in /cfe/trunk: lib/Lex/PPMacroExpansion.cpp test/Modules/macros.c test/PCH/macro-redef.c
Argyrios Kyrtzidis
akyrtzi at gmail.com
Wed Jan 23 10:21:56 PST 2013
Author: akirtzidis
Date: Wed Jan 23 12:21:56 2013
New Revision: 173281
URL: http://llvm.org/viewvc/llvm-project?rev=173281&view=rev
Log:
[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
Added:
cfe/trunk/test/PCH/macro-redef.c
Modified:
cfe/trunk/lib/Lex/PPMacroExpansion.cpp
cfe/trunk/test/Modules/macros.c
Modified: cfe/trunk/lib/Lex/PPMacroExpansion.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPMacroExpansion.cpp?rev=173281&r1=173280&r2=173281&view=diff
==============================================================================
--- cfe/trunk/lib/Lex/PPMacroExpansion.cpp (original)
+++ cfe/trunk/lib/Lex/PPMacroExpansion.cpp Wed Jan 23 12:21:56 2013
@@ -377,6 +377,9 @@
}
}
+ // 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 @@
}
}
}
+#endif
// If we started lexing a macro, enter the macro expansion body.
Modified: cfe/trunk/test/Modules/macros.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/macros.c?rev=173281&r1=173280&r2=173281&view=diff
==============================================================================
--- cfe/trunk/test/Modules/macros.c (original)
+++ cfe/trunk/test/Modules/macros.c Wed Jan 23 12:21:56 2013
@@ -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
Added: cfe/trunk/test/PCH/macro-redef.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/macro-redef.c?rev=173281&view=auto
==============================================================================
--- cfe/trunk/test/PCH/macro-redef.c (added)
+++ cfe/trunk/test/PCH/macro-redef.c Wed Jan 23 12:21:56 2013
@@ -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 at -6 {{previous}}
+
+#else
+
+// Use the error to verify it was parsed.
+int x = M1; // expected-note {{previous}}
+int x = M2; // expected-error {{redefinition}}
+
+#endif
More information about the cfe-commits
mailing list