r294963 - [ASTUnit] Clear out diagnostic state after creating the preamble.
Benjamin Kramer via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 13 08:16:43 PST 2017
Author: d0k
Date: Mon Feb 13 10:16:43 2017
New Revision: 294963
URL: http://llvm.org/viewvc/llvm-project?rev=294963&view=rev
Log:
[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.
Modified:
cfe/trunk/lib/Frontend/ASTUnit.cpp
cfe/trunk/test/Index/complete-preamble.h
Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=294963&r1=294962&r2=294963&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/ASTUnit.cpp (original)
+++ cfe/trunk/lib/Frontend/ASTUnit.cpp Mon Feb 13 10:16:43 2017
@@ -1891,6 +1891,8 @@ bool ASTUnit::LoadFromCompilerInvocation
PreambleRebuildCounter = PrecompilePreambleAfterNParses;
OverrideMainBuffer =
getMainBufferWithPrecompiledPreamble(PCHContainerOps, *Invocation);
+ getDiagnostics().Reset();
+ ProcessWarningOptions(getDiagnostics(), Invocation->getDiagnosticOpts());
}
SimpleTimer ParsingTimer(WantTiming);
Modified: cfe/trunk/test/Index/complete-preamble.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/complete-preamble.h?rev=294963&r1=294962&r2=294963&view=diff
==============================================================================
--- cfe/trunk/test/Index/complete-preamble.h (original)
+++ cfe/trunk/test/Index/complete-preamble.h Mon Feb 13 10:16:43 2017
@@ -1,6 +1,11 @@
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Weverything"
+
namespace std {
void wibble();
}
+#pragma clang diagnostic pop
+
namespace std {
}
More information about the cfe-commits
mailing list