diff options
author | Reid Kleckner <rnk@google.com> | 2018-12-17 23:16:43 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2018-12-17 23:16:43 +0000 |
commit | 1a94d877bfc88580d9a3279ccca49c352daa3265 (patch) | |
tree | 5802ecfb2c2f1fac34dde0125f05272cdc78330a /clang/lib/Sema/SemaDeclAttr.cpp | |
parent | d2f98772d008707a8d63f0679778659eb616c57e (diff) | |
download | bcm5719-llvm-1a94d877bfc88580d9a3279ccca49c352daa3265.tar.gz bcm5719-llvm-1a94d877bfc88580d9a3279ccca49c352daa3265.zip |
Fix ms-layout_version declspec test and add missing new test
Now that MSVC compatibility versions are stored as a four digit number
(1912) instead of a two digit number (19), we need to adjust how we
handle this attribute.
Also add a new test that was intended to be part of r349414.
llvm-svn: 349415
Diffstat (limited to 'clang/lib/Sema/SemaDeclAttr.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 3e0fa530419..829bc9a1046 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -5694,18 +5694,18 @@ static void handleLayoutVersion(Sema &S, Decl *D, const ParsedAttr &AL) { if (!checkUInt32Argument(S, AL, AL.getArgAsExpr(0), Version)) return; - // The attribute expects a "major" version number like 19, but new versions of - // MSVC have moved to updating the "minor", or less significant numbers, so we - // have to multiply by 100 now. - Version *= 100; - // TODO: Investigate what happens with the next major version of MSVC. - if (Version != LangOptions::MSVC2015) { + if (Version != LangOptions::MSVC2015 / 100) { S.Diag(AL.getLoc(), diag::err_attribute_argument_out_of_bounds) << AL << Version << VersionExpr->getSourceRange(); return; } + // The attribute expects a "major" version number like 19, but new versions of + // MSVC have moved to updating the "minor", or less significant numbers, so we + // have to multiply by 100 now. + Version *= 100; + D->addAttr(::new (S.Context) LayoutVersionAttr(AL.getRange(), S.Context, Version, AL.getAttributeSpellingListIndex())); |