aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2018-03-27 21:19:25 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2018-03-27 21:19:25 +0000
commitf7d9ed11b28023715dfc10f29754beff86b28fe9 (patch)
tree78a20a80bcadfdaa90e3ef47c4cf71234251bf73
parent153dba6cbb3b37ad07d23d212890b2bd055ac05f (diff)
downloadgcc-f7d9ed11b28023715dfc10f29754beff86b28fe9.zip
gcc-f7d9ed11b28023715dfc10f29754beff86b28fe9.tar.gz
gcc-f7d9ed11b28023715dfc10f29754beff86b28fe9.tar.bz2
re PR c++/85067 (ICE with volatile parameter in defaulted copy-constructor)
/cp 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/85067 * method.c (defaulted_late_check): Partially revert r253321 changes, do not early return upon error. /testsuite 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/85067 * g++.dg/cpp0x/defaulted51.C: New. * g++.dg/cpp0x/constexpr-68754.C: Adjust. From-SVN: r258904
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/method.c1
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-68754.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted51.C15
5 files changed, 28 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1799d8a..4c02981 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85067
+ * method.c (defaulted_late_check): Partially revert r253321 changes,
+ do not early return upon error.
+
2018-03-27 Jakub Jelinek <jakub@redhat.com>
PR c++/85077
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 83fed6c..eaa930f 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -2189,7 +2189,6 @@ defaulted_late_check (tree fn)
"expected signature", fn);
inform (DECL_SOURCE_LOCATION (fn),
"expected signature: %qD", implicit_fn);
- return;
}
if (DECL_DELETED_FN (implicit_fn))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ba8ba77..4c22980 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85067
+ * g++.dg/cpp0x/defaulted51.C: New.
+ * g++.dg/cpp0x/constexpr-68754.C: Adjust.
+
2018-03-27 Jakub Jelinek <jakub@redhat.com>
PR c++/85077
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-68754.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-68754.C
index 643fa07..72b8200 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-68754.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-68754.C
@@ -3,5 +3,5 @@
struct base { };
struct derived : base {
- constexpr derived& operator=(derived const&) = default; // { dg-error "defaulted declaration" "" { target { ! c++14 } } }
+ constexpr derived& operator=(derived const&) = default; // { dg-error "defaulted" "" { target { ! c++14 } } }
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted51.C b/gcc/testsuite/g++.dg/cpp0x/defaulted51.C
new file mode 100644
index 0000000..0a7d308
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted51.C
@@ -0,0 +1,15 @@
+// PR c++/85067
+// { dg-do compile { target c++11 } }
+
+template<int> struct A
+{
+ A();
+ A(volatile A&) = default; // { dg-error "defaulted" }
+};
+
+struct B
+{
+ A<0> a;
+};
+
+B b;