re PR c++/89571 (ICE in nothrow_spec_p, at cp/except.c:1238)
authorPaolo Carlini <paolo.carlini@oracle.com>
Thu, 21 Mar 2019 01:03:30 +0000 (01:03 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Thu, 21 Mar 2019 01:03:30 +0000 (01:03 +0000)
/cp
2019-03-21  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/89571
* method.c (after_nsdmi_defaulted_late_checks): Avoid passing
error_mark_node to comp_except_specs.

/testsuite
2019-03-21  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/89571
* g++.dg/cpp0x/noexcept37.C: New.

From-SVN: r269832

gcc/cp/ChangeLog
gcc/cp/method.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/noexcept37.C [new file with mode: 0644]

index 09fb3f2..5a28c96 100644 (file)
@@ -1,3 +1,9 @@
+2019-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/89571
+       * method.c (after_nsdmi_defaulted_late_checks): Avoid passing
+       error_mark_node to comp_except_specs.
+
 2019-03-20  Jason Merrill  <jason@redhat.com>
 
        PR c++/87480 - decltype of member access in default template arg
index 477d327..da9600c 100644 (file)
@@ -2274,6 +2274,9 @@ after_nsdmi_defaulted_late_checks (tree t)
          continue;
 
        tree eh_spec = get_defaulted_eh_spec (fn);
+       if (eh_spec == error_mark_node)
+         continue;
+
        if (!comp_except_specs (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (fn)),
                                eh_spec, ce_normal))
          DECL_DELETED_FN (fn) = true;
index 7487e91..12fdbd0 100644 (file)
@@ -1,3 +1,8 @@
+2019-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/89571
+       * g++.dg/cpp0x/noexcept37.C: New.
+
 2019-03-21  Iain Buclaw  <ibuclaw@gdcproject.org>
 
        PR d/89017
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept37.C b/gcc/testsuite/g++.dg/cpp0x/noexcept37.C
new file mode 100644 (file)
index 0000000..93dfecb
--- /dev/null
@@ -0,0 +1,8 @@
+// PR c++/89571
+// { dg-do compile { target c++11 } }
+
+struct A
+{
+  int i = ;  // { dg-error "expected" }
+  A() noexcept = default;
+};