From bbbeea11a8fa600dc77d2e88a9dfe4c914ab0d1d Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Sat, 26 Mar 2011 18:58:17 +0000 Subject: For Diagnostic::Reset() also reset the state related to #pragma diagnostic. Fixes rdar://9170766. llvm-svn: 128346 --- clang/lib/Basic/Diagnostic.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'clang/lib/Basic/Diagnostic.cpp') diff --git a/clang/lib/Basic/Diagnostic.cpp b/clang/lib/Basic/Diagnostic.cpp index dc81f88c5c5..7601d49d4df 100644 --- a/clang/lib/Basic/Diagnostic.cpp +++ b/clang/lib/Basic/Diagnostic.cpp @@ -51,11 +51,6 @@ Diagnostic::Diagnostic(const llvm::IntrusiveRefCntPtr &diags, ErrorLimit = 0; TemplateBacktraceLimit = 0; - // Create a DiagState and DiagStatePoint representing diagnostic changes - // through command-line. - DiagStates.push_back(DiagState()); - PushDiagStatePoint(&DiagStates.back(), SourceLocation()); - Reset(); } @@ -102,6 +97,16 @@ void Diagnostic::Reset() { // displayed. LastDiagLevel = (DiagnosticIDs::Level)-1; DelayedDiagID = 0; + + // Clear state related to #pragma diagnostic. + DiagStates.clear(); + DiagStatePoints.clear(); + DiagStateOnPushStack.clear(); + + // Create a DiagState and DiagStatePoint representing diagnostic changes + // through command-line. + DiagStates.push_back(DiagState()); + PushDiagStatePoint(&DiagStates.back(), SourceLocation()); } void Diagnostic::SetDelayedDiagnostic(unsigned DiagID, llvm::StringRef Arg1, -- cgit v1.2.3