[PATCH] D38209: [Sema] Correct nothrow inherited by noexcept
Erich Keane via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 27 10:29:11 PDT 2017
erichkeane updated this revision to Diff 116840.
erichkeane marked 2 inline comments as done.
erichkeane added a comment.
2 small changes @aaron.ballman requested.
https://reviews.llvm.org/D38209
Files:
lib/Sema/SemaDeclCXX.cpp
test/SemaCXX/nothrow-as-noexcept-ctor.cpp
Index: test/SemaCXX/nothrow-as-noexcept-ctor.cpp
===================================================================
--- /dev/null
+++ test/SemaCXX/nothrow-as-noexcept-ctor.cpp
@@ -0,0 +1,26 @@
+// RUN: %clang_cc1 %s -fcxx-exceptions -fsyntax-only -Wexceptions -verify -std=c++14
+
+// expected-no-diagnostics
+struct Base {
+ __attribute__((nothrow)) Base() {}
+};
+
+struct Derived : Base {
+ Derived() noexcept = default;
+};
+
+struct Base2 {
+ Base2() noexcept {}
+};
+
+struct Derived2 : Base2 {
+ __attribute__((nothrow)) Derived2() = default;
+};
+
+struct Base3 {
+ __attribute__((nothrow)) Base3() {}
+};
+
+struct Derived3 : Base3 {
+ __attribute__((nothrow)) Derived3() = default;
+};
Index: lib/Sema/SemaDeclCXX.cpp
===================================================================
--- lib/Sema/SemaDeclCXX.cpp
+++ lib/Sema/SemaDeclCXX.cpp
@@ -167,6 +167,9 @@
if (ComputedEST == EST_None)
return;
+ if (EST == EST_None && Method->hasAttr<NoThrowAttr>())
+ EST = EST_BasicNoexcept;
+
switch(EST) {
// If this function can throw any exceptions, make a note of that.
case EST_MSAny:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D38209.116840.patch
Type: text/x-patch
Size: 1125 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170927/b36b4a4a/attachment.bin>
More information about the cfe-commits
mailing list