r237718 - Revert r237609 for now.
Richard Smith
richard-llvm at metafoo.co.uk
Tue May 19 12:58:12 PDT 2015
Author: rsmith
Date: Tue May 19 14:58:11 2015
New Revision: 237718
URL: http://llvm.org/viewvc/llvm-project?rev=237718&view=rev
Log:
Revert r237609 for now.
glibc's headers use __need_* macros to selectively export parts of themselves
to each other. This requires us to enter those files repeatedly when building
a glibc module.
This can be unreverted once we have a better mechanism to deal with that
non-modular aspect of glibc (possibly some way to mark a header as "textual if
this macro is defined").
Modified:
cfe/trunk/lib/Lex/PPDirectives.cpp
cfe/trunk/test/Modules/malformed.cpp
Modified: cfe/trunk/lib/Lex/PPDirectives.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPDirectives.cpp?rev=237718&r1=237717&r2=237718&view=diff
==============================================================================
--- cfe/trunk/lib/Lex/PPDirectives.cpp (original)
+++ cfe/trunk/lib/Lex/PPDirectives.cpp Tue May 19 14:58:11 2015
@@ -1737,12 +1737,13 @@ void Preprocessor::HandleIncludeDirectiv
std::max(HeaderInfo.getFileDirFlavor(File),
SourceMgr.getFileCharacteristic(FilenameTok.getLocation()));
+ // FIXME: If we have a suggested module, and we've already visited this file,
+ // don't bother entering it again. We know it has no further effect.
+
// Ask HeaderInfo if we should enter this #include file. If not, #including
- // this file will have no effect. We treat any textual inclusion of a modular
- // header as a #import here.
+ // this file will have no effect.
if (ShouldEnter &&
- !HeaderInfo.ShouldEnterIncludeFile(
- *this, File, isImport || SuggestedModule.getModule())) {
+ !HeaderInfo.ShouldEnterIncludeFile(*this, File, isImport)) {
ShouldEnter = false;
if (Callbacks)
Callbacks->FileSkipped(*File, FilenameTok, FileCharacter);
Modified: cfe/trunk/test/Modules/malformed.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/malformed.cpp?rev=237718&r1=237717&r2=237718&view=diff
==============================================================================
--- cfe/trunk/test/Modules/malformed.cpp (original)
+++ cfe/trunk/test/Modules/malformed.cpp Tue May 19 14:58:11 2015
@@ -23,9 +23,9 @@
// CHECK-B: {{^}}Inputs/malformed/b1.h:1:{{.*}} note: to match this '{'
// CHECK-B: {{^}}Inputs/malformed/b1.h:3:{{.*}} error: extraneous closing brace ('}')
//
-// We don't see another definition of 'g' because we don't re-enter b2.h
-// (even though it has no include guards).
-// CHECK-B-NOT: redefinition of 'g'
+// CHECK-B: While building module 'malformed_b'
+// CHECK-B: {{^}}Inputs/malformed/b2.h:1:{{.*}} error: redefinition of 'g'
+// CHECK-B: {{^}}Inputs/malformed/b2.h:1:{{.*}} note: previous definition is here
void test() { f<int>(); }
// Test that we use relative paths to name files within an imported module.
More information about the cfe-commits
mailing list