Page MenuHomePhabricator

No OneTemporary

File Metadata

Created
Fri, Jan 24, 3:59 PM
diff --git a/clang/include/clang/Basic/DiagnosticCommonKinds.td b/clang/include/clang/Basic/DiagnosticCommonKinds.td
index d6281f1..20b4960 100644
--- a/clang/include/clang/Basic/DiagnosticCommonKinds.td
+++ b/clang/include/clang/Basic/DiagnosticCommonKinds.td
@@ -284,0 +285,3 @@ def err_file_too_large : Error<
+def err_include_too_large : Error<
+ "sorry, this include generates a translation unit too large for"
+ " Clang to process.">, DefaultFatal;
diff --git a/clang/include/clang/Lex/Preprocessor.h b/clang/include/clang/Lex/Preprocessor.h
index 9716196..91f294b 100644
--- a/clang/include/clang/Lex/Preprocessor.h
+++ b/clang/include/clang/Lex/Preprocessor.h
@@ -2205,0 +2206 @@ private:
+ Failure,
@@ -2211 +2212,2 @@ private:
- assert((AK == None || Mod) && "no module for module action");
+ assert((AK == None || Mod || AK == Failure) &&
+ "no module for module action");
diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp
index 73f2ae9..187c33a 100644
--- a/clang/lib/Basic/SourceManager.cpp
+++ b/clang/lib/Basic/SourceManager.cpp
@@ -579,0 +580,6 @@ FileID SourceManager::createFileID(const ContentCache *File, StringRef Filename,
+ unsigned FileSize = File->getSize();
+ if (!(NextLocalOffset + FileSize + 1 > NextLocalOffset &&
+ NextLocalOffset + FileSize + 1 <= CurrentLoadedOffset)) {
+ Diag.Report(IncludePos, diag::err_include_too_large);
+ return FileID();
+ }
@@ -583,4 +588,0 @@ FileID SourceManager::createFileID(const ContentCache *File, StringRef Filename,
- unsigned FileSize = File->getSize();
- assert(NextLocalOffset + FileSize + 1 > NextLocalOffset &&
- NextLocalOffset + FileSize + 1 <= CurrentLoadedOffset &&
- "Ran out of source locations!");
diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp
index e433b2c..660c4a5 100644
--- a/clang/lib/Lex/PPDirectives.cpp
+++ b/clang/lib/Lex/PPDirectives.cpp
@@ -1710,0 +1711,7 @@ void Preprocessor::HandleIncludeDirective(SourceLocation HashLoc,
+ case ImportAction::Failure:
+ assert(TheModuleLoader.HadFatalFailure &&
+ "This should be an early exit only to a fatal error");
+ TheModuleLoader.HadFatalFailure = true;
+ IncludeTok.setKind(tok::eof);
+ CurLexer->cutOffLexing();
+ return;
@@ -2168 +2175,4 @@ Preprocessor::ImportAction Preprocessor::HandleHeaderIncludeOrImport(
- assert(FID.isValid() && "Expected valid file ID");
+ if (!FID.isValid()) {
+ TheModuleLoader.HadFatalFailure = true;
+ return ImportAction::Failure;
+ }
diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp
index 0e9be39..a18dc4a 100644
--- a/clang/lib/Lex/Preprocessor.cpp
+++ b/clang/lib/Lex/Preprocessor.cpp
@@ -908,0 +909,3 @@ void Preprocessor::Lex(Token &Result) {
+ if (Result.is(tok::unknown) && TheModuleLoader.HadFatalFailure)
+ return;
+
@@ -1202,0 +1206,7 @@ bool Preprocessor::LexAfterModuleImport(Token &Result) {
+ case ImportAction::Failure:
+ assert(TheModuleLoader.HadFatalFailure &&
+ "This should be an early exit only to a fatal error");
+ Result.setKind(tok::eof);
+ CurLexer->cutOffLexing();
+ EnterTokens(Suffix);
+ return true;
diff --git a/clang/test/Lexer/Inputs/inc1.h b/clang/test/Lexer/Inputs/inc1.h
new file mode 100644
index 0000000..f7fd716
--- /dev/null
+++ b/clang/test/Lexer/Inputs/inc1.h
@@ -0,0 +1,1470 @@
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
+#include "inc2.h"
diff --git a/clang/test/Lexer/Inputs/inc2.h b/clang/test/Lexer/Inputs/inc2.h
new file mode 100644
index 0000000..a827dc7
--- /dev/null
+++ b/clang/test/Lexer/Inputs/inc2.h
@@ -0,0 +1,1000 @@
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
+/*...............................................................................................*/
diff --git a/clang/test/Lexer/SourceLocationsOverflow.c b/clang/test/Lexer/SourceLocationsOverflow.c
new file mode 100644
index 0000000..d2313ea
--- /dev/null
+++ b/clang/test/Lexer/SourceLocationsOverflow.c
@@ -0,0 +1,25 @@
+// RUN: not %clang %s -S -o - 2>&1 | FileCheck %s
+// CHECK: In file included from {{.*}}SourceLocationsOverflow.c
+// CHECK-NEXT: inc1.h{{.*}}: fatal error: sorry, this include generates a translation unit too large for Clang to process.
+// CHECK-NEXT: #include "inc2.h"
+// CHECK-NEXT: ^
+// CHECK-NEXT: 1 error generated.
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"
+#include "Inputs/inc1.h"

Event Timeline