summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclAttr.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2018-12-17 23:10:43 +0000
committerReid Kleckner <rnk@google.com>2018-12-17 23:10:43 +0000
commitd2f98772d008707a8d63f0679778659eb616c57e (patch)
tree6d4ef664d9fec1b3e92f06c5fb1339655e39775a /clang/lib/Sema/SemaDeclAttr.cpp
parentd3a3e4b46d691fc568f8315bc3691c97511d67e7 (diff)
downloadbcm5719-llvm-d2f98772d008707a8d63f0679778659eb616c57e.tar.gz
bcm5719-llvm-d2f98772d008707a8d63f0679778659eb616c57e.zip
Update Microsoft name mangling scheme for exception specifiers in the type system
Summary: The msvc exception specifier for noexcept function types has changed from the prior default of "Z" to "_E" if the function cannot throw when compiling with /std:C++17. Patch by Zachary Henkel! Reviewers: zturner, rnk Reviewed By: rnk Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D55685 llvm-svn: 349414
Diffstat (limited to 'clang/lib/Sema/SemaDeclAttr.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclAttr.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
index ba041a8786b..3e0fa530419 100644
--- a/clang/lib/Sema/SemaDeclAttr.cpp
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
@@ -5694,6 +5694,11 @@ 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) {
S.Diag(AL.getLoc(), diag::err_attribute_argument_out_of_bounds)
OpenPOWER on IntegriCloud