Browse Source

Updated to the latest LLVM/Clang revisions.

pull/147/head
triton 12 years ago
parent
commit
df88729095
  1. 16
      src/CppParser/Parser.cpp
  2. 16
      src/Parser/Parser.cpp

16
src/CppParser/Parser.cpp

@ -1714,7 +1714,8 @@ static const clang::CodeGen::CGFunctionInfo& GetCodeGenFuntionInfo(
return CodeGenTypes->arrangeFunctionDeclaration(FD); return CodeGenTypes->arrangeFunctionDeclaration(FD);
} }
static bool CanCheckCodeGenInfo(const clang::Type* Ty, bool IsMicrosoftABI) static bool CanCheckCodeGenInfo(clang::Sema& S,
const clang::Type* Ty, bool IsMicrosoftABI)
{ {
bool CheckCodeGenInfo = true; bool CheckCodeGenInfo = true;
@ -1729,9 +1730,8 @@ static bool CanCheckCodeGenInfo(const clang::Type* Ty, bool IsMicrosoftABI)
if (IsMicrosoftABI) if (IsMicrosoftABI)
{ {
if (auto MPT = Ty->getAs<clang::MemberPointerType>()) if (auto MPT = Ty->getAs<clang::MemberPointerType>())
if (auto RT = MPT->getClass()) if (!MPT->isDependentType())
if (auto RD = RT->getAsCXXRecordDecl()) S.RequireCompleteType(clang::SourceLocation(), clang::QualType(Ty, 0), 0);
RD->getMostRecentDecl()->setMSInheritanceModel();
} }
return CheckCodeGenInfo; return CheckCodeGenInfo;
@ -1844,10 +1844,10 @@ void Parser::WalkFunction(clang::FunctionDecl* FD, Function* F,
bool IsMicrosoftABI = C->getASTContext().getTargetInfo().getCXXABI().isMicrosoft(); bool IsMicrosoftABI = C->getASTContext().getTargetInfo().getCXXABI().isMicrosoft();
bool CheckCodeGenInfo = !FD->isDependentContext() && !FD->isInvalidDecl(); bool CheckCodeGenInfo = !FD->isDependentContext() && !FD->isInvalidDecl();
CheckCodeGenInfo &= CanCheckCodeGenInfo(FD->getReturnType().getTypePtr(), CheckCodeGenInfo &= CanCheckCodeGenInfo(C->getSema(), FD->getReturnType().getTypePtr(),
IsMicrosoftABI); IsMicrosoftABI);
for (auto I = FD->param_begin(), E = FD->param_end(); I != E; ++I) for (auto I = FD->param_begin(), E = FD->param_end(); I != E; ++I)
CheckCodeGenInfo &= CanCheckCodeGenInfo((*I)->getType().getTypePtr(), CheckCodeGenInfo &= CanCheckCodeGenInfo(C->getSema(), (*I)->getType().getTypePtr(),
IsMicrosoftABI); IsMicrosoftABI);
if (CheckCodeGenInfo) if (CheckCodeGenInfo)
@ -2582,7 +2582,7 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File,
NativeLib->FileName = LibName; NativeLib->FileName = LibName;
llvm::error_code ec; llvm::error_code ec;
for(auto it = Object.get()->begin_symbols(); it != Object.get()->end_symbols(); for(auto it = Object.get()->symbol_begin(); it != Object.get()->symbol_end();
++it) ++it)
{ {
llvm::StringRef SymRef; llvm::StringRef SymRef;
@ -2593,7 +2593,7 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File,
NativeLib->Symbols.push_back(SymRef); NativeLib->Symbols.push_back(SymRef);
} }
for (auto it = Object.get()->begin_symbols(); it != Object.get()->end_symbols(); for (auto it = Object.get()->symbol_begin(); it != Object.get()->symbol_end();
++it) ++it)
{ {
llvm::StringRef SymRef; llvm::StringRef SymRef;

16
src/Parser/Parser.cpp

@ -1734,7 +1734,8 @@ static const clang::CodeGen::CGFunctionInfo& GetCodeGenFuntionInfo(
return CodeGenTypes->arrangeFunctionDeclaration(FD); return CodeGenTypes->arrangeFunctionDeclaration(FD);
} }
static bool CanCheckCodeGenInfo(const clang::Type* Ty, bool IsMicrosoftABI) static bool CanCheckCodeGenInfo(clang::Sema& S,
const clang::Type* Ty, bool IsMicrosoftABI)
{ {
bool CheckCodeGenInfo = true; bool CheckCodeGenInfo = true;
@ -1749,9 +1750,8 @@ static bool CanCheckCodeGenInfo(const clang::Type* Ty, bool IsMicrosoftABI)
if (IsMicrosoftABI) if (IsMicrosoftABI)
{ {
if (auto MPT = Ty->getAs<clang::MemberPointerType>()) if (auto MPT = Ty->getAs<clang::MemberPointerType>())
if (auto RT = MPT->getClass()) if (!MPT->isDependentType())
if (auto RD = RT->getAsCXXRecordDecl()) S.RequireCompleteType(clang::SourceLocation(), clang::QualType(Ty, 0), 0);
RD->getMostRecentDecl()->setMSInheritanceModel();
} }
return CheckCodeGenInfo; return CheckCodeGenInfo;
@ -1865,10 +1865,10 @@ void Parser::WalkFunction(clang::FunctionDecl* FD, CppSharp::AST::Function^ F,
bool IsMicrosoftABI = C->getASTContext().getTargetInfo().getCXXABI().isMicrosoft(); bool IsMicrosoftABI = C->getASTContext().getTargetInfo().getCXXABI().isMicrosoft();
bool CheckCodeGenInfo = !FD->isDependentContext() && !FD->isInvalidDecl(); bool CheckCodeGenInfo = !FD->isDependentContext() && !FD->isInvalidDecl();
CheckCodeGenInfo &= CanCheckCodeGenInfo(FD->getReturnType().getTypePtr(), CheckCodeGenInfo &= CanCheckCodeGenInfo(C->getSema(), FD->getReturnType().getTypePtr(),
IsMicrosoftABI); IsMicrosoftABI);
for (auto I = FD->param_begin(), E = FD->param_end(); I != E; ++I) for (auto I = FD->param_begin(), E = FD->param_end(); I != E; ++I)
CheckCodeGenInfo &= CanCheckCodeGenInfo((*I)->getType().getTypePtr(), CheckCodeGenInfo &= CanCheckCodeGenInfo(C->getSema(), (*I)->getType().getTypePtr(),
IsMicrosoftABI); IsMicrosoftABI);
if (CheckCodeGenInfo) if (CheckCodeGenInfo)
@ -2595,7 +2595,7 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File,
NativeLib->FileName = LibName; NativeLib->FileName = LibName;
llvm::error_code ec; llvm::error_code ec;
for(auto it = Object.get()->begin_symbols(); it != Object.get()->end_symbols(); for(auto it = Object.get()->symbol_begin(); it != Object.get()->symbol_end();
++it) ++it)
{ {
llvm::StringRef SymRef; llvm::StringRef SymRef;
@ -2607,7 +2607,7 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File,
NativeLib->Symbols->Add(SymName); NativeLib->Symbols->Add(SymName);
} }
for(auto it = Object.get()->begin_symbols(); it != Object.get()->end_symbols(); for(auto it = Object.get()->symbol_begin(); it != Object.get()->symbol_end();
++it) ++it)
{ {
llvm::StringRef SymRef; llvm::StringRef SymRef;

Loading…
Cancel
Save