re PR c++/72845 (gcc crashes (ICE) when compiling program with complex noexcept decla...
authorMarek Polacek <polacek@redhat.com>
Sat, 8 Jun 2019 12:51:07 +0000 (12:51 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Sat, 8 Jun 2019 12:51:07 +0000 (12:51 +0000)
PR c++/72845
* g++.dg/cpp0x/noexcept41.C: New test.

From-SVN: r272078

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/noexcept41.C [new file with mode: 0644]

index 372b06bc1af6d4ebcaf2778d3be3f2e8f4ea3b2e..72ee262ff808d069dd0adacc81a97358a30dd634 100644 (file)
@@ -1,3 +1,8 @@
+2019-06-08  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/72845
+       * g++.dg/cpp0x/noexcept41.C: New test.
+
 2019-06-08  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
 
        * gcc.target/aarch64/sve/init_1.c: Remove options
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept41.C b/gcc/testsuite/g++.dg/cpp0x/noexcept41.C
new file mode 100644 (file)
index 0000000..4cd3d8d
--- /dev/null
@@ -0,0 +1,12 @@
+// PR c++/72845
+// { dg-do compile { target c++11 } }
+
+template <typename> struct g { static const int h = 0; };
+template <typename i> void declval() { static_assert(!g<i>::h,""); }
+template <typename> struct a {
+  template <typename d, typename c>
+  friend auto f(d &&, c &&) noexcept(declval<c>) -> decltype(declval<c>); // { dg-error "different exception" }
+};
+template <typename d, typename c> auto f(d &&, c &&) -> decltype(declval<c>);
+struct e {};
+static_assert((e{}, declval<a<int>>),""); // { dg-error "no context to resolve type" }