aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2016-05-24 21:32:29 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2016-05-24 21:32:29 +0000
commitb2dc9c3b2012f7bf7bd3e69bac8ea2fd1c470975 (patch)
tree1b93cf5cf43508f63fe769ff40ed056b26ad6290
parent66f90a1761f1e819d1dbffff2056836b5d39d545 (diff)
downloadgcc-b2dc9c3b2012f7bf7bd3e69bac8ea2fd1c470975.zip
gcc-b2dc9c3b2012f7bf7bd3e69bac8ea2fd1c470975.tar.gz
gcc-b2dc9c3b2012f7bf7bd3e69bac8ea2fd1c470975.tar.bz2
re PR c++/50436 (Crash or hang on invalid template code)
2016-05-24 Paolo Carlini <paolo.carlini@oracle.com> PR c++/50436 * g++.dg/template/crash123.C: New. * g++.dg/template/crash124.C: Likewise. From-SVN: r236671
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/template/crash123.C19
-rw-r--r--gcc/testsuite/g++.dg/template/crash124.C21
3 files changed, 46 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6c03e26..39c6b27 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50436
+ * g++.dg/template/crash123.C: New.
+ * g++.dg/template/crash124.C: Likewise.
+
2016-05-24 Martin Sebor <msebor@redhat.com>
PR c++/71147
diff --git a/gcc/testsuite/g++.dg/template/crash123.C b/gcc/testsuite/g++.dg/template/crash123.C
new file mode 100644
index 0000000..20a4961
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/crash123.C
@@ -0,0 +1,19 @@
+// PR c++/50436
+
+template <bool> struct VI {};
+template <typename T>
+struct IP
+{
+ static const bool r = IP<T>::r; // { dg-error "depth" }
+};
+template <typename T> struct V
+{
+ VI<IP<T>::r> vi;
+};
+struct X;
+struct Y
+{
+ V<X> v; // { dg-message "from here" }
+};
+
+// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/template/crash124.C b/gcc/testsuite/g++.dg/template/crash124.C
new file mode 100644
index 0000000..4931aa8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/crash124.C
@@ -0,0 +1,21 @@
+// PR c++/50436
+
+template <bool> struct VI {};
+template <typename T>
+struct IP
+{
+ static const bool r = IP<T>::r; // { dg-error "depth" }
+};
+template <typename T>
+struct V
+{
+ static const bool r = IP<T>::r;
+ VI<r> vi;
+};
+struct X;
+struct Y
+{
+ V<X> v; // { dg-message "from here" }
+}
+
+// { dg-prune-output "compilation terminated" }