From 76b548308d6ec0af0d1a147c8614229df31fe150 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Mon, 13 Feb 2017 16:16:43 +0000 Subject: [PATCH] [ASTUnit] Clear out diagnostic state after creating the preamble. If the preamble had diagnostic state this would leave behind invalid state in the DiagnosticsEngine and crash later. The test case runs into an assertion in DiagnosticsEngine::setSourceManager. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@294963 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Frontend/ASTUnit.cpp | 2 ++ test/Index/complete-preamble.h | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index f3d033c3e7..12b78ea3cd 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/lib/Frontend/ASTUnit.cpp @@ -1891,6 +1891,8 @@ bool ASTUnit::LoadFromCompilerInvocation( PreambleRebuildCounter = PrecompilePreambleAfterNParses; OverrideMainBuffer = getMainBufferWithPrecompiledPreamble(PCHContainerOps, *Invocation); + getDiagnostics().Reset(); + ProcessWarningOptions(getDiagnostics(), Invocation->getDiagnosticOpts()); } SimpleTimer ParsingTimer(WantTiming); diff --git a/test/Index/complete-preamble.h b/test/Index/complete-preamble.h index e696284c09..1972c2acb5 100644 --- a/test/Index/complete-preamble.h +++ b/test/Index/complete-preamble.h @@ -1,6 +1,11 @@ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Weverything" + namespace std { void wibble(); } +#pragma clang diagnostic pop + namespace std { } -- 2.40.0