From e606a7f2d0421f2efbf08cc3d2888b0535884bf9 Mon Sep 17 00:00:00 2001 From: triton Date: Sat, 4 Oct 2014 21:23:37 +0100 Subject: [PATCH] Fixed parser to work with latest LLVM and Clang revisions. --- src/CppParser/Parser.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index aa60e321..0c9781b7 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -222,8 +222,8 @@ void Parser::SetupHeader() if (Opts->MicrosoftMode) { - LangOpts.MSCVersion = Opts->ToolSetToUse; - if (!LangOpts.MSCVersion) LangOpts.MSCVersion = 1700; + LangOpts.MSCompatibilityVersion = Opts->ToolSetToUse; + if (!LangOpts.MSCompatibilityVersion) LangOpts.MSCompatibilityVersion = 1700; } #endif @@ -2068,9 +2068,9 @@ static const clang::CodeGen::CGFunctionInfo& GetCodeGenFuntionInfo( { using namespace clang; if (auto CD = dyn_cast(FD)) { - return CodeGenTypes->arrangeCXXConstructorDeclaration(CD, Ctor_Base); + return CodeGenTypes->arrangeCXXStructorDeclaration(CD, clang::CodeGen::StructorType::Base); } else if (auto DD = dyn_cast(FD)) { - return CodeGenTypes->arrangeCXXDestructor(DD, Dtor_Base); + return CodeGenTypes->arrangeCXXStructorDeclaration(DD, clang::CodeGen::StructorType::Base); } return CodeGenTypes->arrangeFunctionDeclaration(FD); @@ -2935,8 +2935,8 @@ ParserResult* Parser::ParseHeader(const std::string& File, ParserResult* res) SetupHeader(); - auto SC = new clang::SemaConsumer(); - C->setASTConsumer(SC); + std::unique_ptr SC(new clang::SemaConsumer()); + C->setASTConsumer(std::move(SC)); C->createSema(clang::TU_Complete, 0); SC->InitializeSema(C->getSema()); @@ -2946,7 +2946,9 @@ ParserResult* Parser::ParseHeader(const std::string& File, ParserResult* res) // Check that the file is reachable. const clang::DirectoryLookup *Dir; - llvm::SmallVector Includers; + llvm::SmallVector< + std::pair, + 0> Includers; auto FileEntry = C->getPreprocessor().getHeaderSearchInfo().LookupFile(File, clang::SourceLocation(), /*isAngled*/true, @@ -2966,7 +2968,7 @@ ParserResult* Parser::ParseHeader(const std::string& File, ParserResult* res) auto buffer = llvm::MemoryBuffer::getMemBuffer(str); auto &SM = C->getSourceManager(); - SM.setMainFileID(SM.createFileID(buffer)); + SM.setMainFileID(SM.createFileID(std::move(buffer))); clang::DiagnosticConsumer* client = C->getDiagnostics().getClient(); client->BeginSourceFile(C->getLangOpts(), &C->getPreprocessor()); @@ -3166,13 +3168,14 @@ ParserResultKind Parser::ReadSymbols(llvm::StringRef File, } std::unique_ptr FileBuf(FM.getBufferForFile(FileEntry)); - auto BinaryOrErr = llvm::object::createBinary(std::move(FileBuf), &llvm::getGlobalContext()); + auto BinaryOrErr = llvm::object::createBinary(FileBuf->getMemBufferRef(), + &llvm::getGlobalContext()); if (BinaryOrErr.getError()) { res->Kind = ParserResultKind::Error; return res; } - std::unique_ptr Bin(BinaryOrErr.get()); + std::unique_ptr Bin(std::move(BinaryOrErr.get())); if (auto Archive = llvm::dyn_cast(Bin.get())) { res->Kind = ParseArchive(File, Archive, res->Library); if (res->Kind == ParserResultKind::Success) @@ -3226,8 +3229,8 @@ ParserTargetInfo* Parser::GetTargetInfo() SetupHeader(); - auto SC = new clang::SemaConsumer(); - C->setASTConsumer(SC); + std::unique_ptr SC(new clang::SemaConsumer()); + C->setASTConsumer(std::move(SC)); C->createSema(clang::TU_Complete, 0); SC->InitializeSema(C->getSema());