summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseDeclCXX.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2015-11-20 07:02:57 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2015-11-20 07:02:57 +0000
commit3d42f340cd44edf7a79ee2d58e68251a4318a081 (patch)
tree988ff26f7c79fa22331261a276de8ccae434c34f /clang/lib/Parse/ParseDeclCXX.cpp
parent362352c6be908af4000812d9e228adf1ff468538 (diff)
downloadbcm5719-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.cpp5
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));
OpenPOWER on IntegriCloud