diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2015-11-20 07:02:57 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2015-11-20 07:02:57 +0000 |
commit | 3d42f340cd44edf7a79ee2d58e68251a4318a081 (patch) | |
tree | 988ff26f7c79fa22331261a276de8ccae434c34f /clang/lib/Parse/ParseDeclCXX.cpp | |
parent | 362352c6be908af4000812d9e228adf1ff468538 (diff) | |
download | bcm5719-llvm-3d42f340cd44edf7a79ee2d58e68251a4318a081.tar.gz bcm5719-llvm-3d42f340cd44edf7a79ee2d58e68251a4318a081.zip |
[MS] Fix for bug 25013 - #pragma vtordisp is unknown inside functions, by Denis Zobnin.
This patch adds support of #pragma vtordisp inside functions in attempt to improve compatibility. Microsoft compiler appears to save the stack of vtordisp modes on entry of struct methods' bodies and restore it on exit (method-local vtordisp).
Differential Revision: http://reviews.llvm.org/D14467
llvm-svn: 253650
Diffstat (limited to 'clang/lib/Parse/ParseDeclCXX.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDeclCXX.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index 049aa776e98..378cebe67d0 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -2854,6 +2854,11 @@ Parser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclarationWithPragmas( return DeclGroupPtrTy(); } + if (Tok.is(tok::annot_pragma_ms_vtordisp)) { + HandlePragmaMSVtorDisp(); + return DeclGroupPtrTy(); + } + // If we see a namespace here, a close brace was missing somewhere. if (Tok.is(tok::kw_namespace)) { DiagnoseUnexpectedNamespace(cast<NamedDecl>(TagDecl)); |