From 9207a2e495c8363606861e4f034504ec5c153dab Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Fri, 21 Oct 2011 15:39:28 +0800 Subject: Apply changes to migrate to LLVM upstream Oct 20th 2011. - StructType::isAnonymous is renamed to StructType::isLiteral. - PassManagerBuilder has been moved from llvm/Support/PassManagerBuilder.h to llvm/Transforms/IPO/PassManagerBuilder.h - Include llvm/Transforms/IPO.h for llvm::createInternalizePass. - clang::DiagClient has be renamed to clang::DiagnosticConsumer. Besides, we have to implement one additional pure virtual method 'clone' for create a clone of slang::DiagnosticBuffer. - llvm::Linker::LinkModules comes with one additional parameter. Passing llvm::Linker::DestroySource should be equivalent to the old code we were using. - slang::Slang is now derived from clang::ModuleLoader and implemented loadModule pure virtual method (though we will always return NULL.) - clang::Preprocessor is taking one additional parameter for clang::ModuleLoader. - clang::Diagnostic has been changed. A lot of the method has been moved to clang::DiagnosticsEngine, and we can no longer 'Report' a diagnostic from clang::Diagnostic. We have to use clang::DiagnosticEngine instead. - llvm::setCodeModel has been removed. Change-Id: I1f2a4cbeaf61a8ed1d0d635a5a0e1baa90d99d07 --- slang_diagnostic_buffer.cpp | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) (limited to 'slang_diagnostic_buffer.cpp') diff --git a/slang_diagnostic_buffer.cpp b/slang_diagnostic_buffer.cpp index 6b70cfe..ed6f303 100644 --- a/slang_diagnostic_buffer.cpp +++ b/slang_diagnostic_buffer.cpp @@ -25,14 +25,23 @@ namespace slang { -DiagnosticBuffer::DiagnosticBuffer() : mSOS(NULL) { - mSOS = new llvm::raw_string_ostream(mDiags); - return; +DiagnosticBuffer::DiagnosticBuffer() +: mSOS(new llvm::raw_string_ostream(mDiags)) { } -void DiagnosticBuffer::HandleDiagnostic(clang::Diagnostic::Level DiagLevel, - const clang::DiagnosticInfo &Info) { - const clang::SourceLocation &SrcLoc = Info.getLocation(); +DiagnosticBuffer::DiagnosticBuffer(DiagnosticBuffer const &src) +: mDiags(src.mDiags), mSOS(new llvm::raw_string_ostream(mDiags)) { +} + +DiagnosticBuffer::~DiagnosticBuffer() { +} + +void DiagnosticBuffer::HandleDiagnostic( + clang::DiagnosticsEngine::Level DiagLevel, + clang::Diagnostic const &Info) { + + clang::SourceLocation const &SrcLoc = Info.getLocation(); + // 100 is enough for storing general diagnosis message llvm::SmallString<100> Buf; @@ -42,19 +51,19 @@ void DiagnosticBuffer::HandleDiagnostic(clang::Diagnostic::Level DiagLevel, } switch (DiagLevel) { - case clang::Diagnostic::Note: { + case clang::DiagnosticsEngine::Note: { (*mSOS) << "note: "; break; } - case clang::Diagnostic::Warning: { + case clang::DiagnosticsEngine::Warning: { (*mSOS) << "warning: "; break; } - case clang::Diagnostic::Error: { + case clang::DiagnosticsEngine::Error: { (*mSOS) << "error: "; break; } - case clang::Diagnostic::Fatal: { + case clang::DiagnosticsEngine::Fatal: { (*mSOS) << "fatal: "; break; } @@ -63,16 +72,13 @@ void DiagnosticBuffer::HandleDiagnostic(clang::Diagnostic::Level DiagLevel, } } - Info.FormatDiagnostic(Buf); (*mSOS) << Buf.str() << '\n'; - - return; } -DiagnosticBuffer::~DiagnosticBuffer() { - delete mSOS; - return; +clang::DiagnosticConsumer * +DiagnosticBuffer::clone(clang::DiagnosticsEngine &Diags) const { + return new DiagnosticBuffer(*this); } } // namespace slang -- cgit v1.2.3