From bf88d870027e4607b2760fa9ac44d2bd6125f50c Mon Sep 17 00:00:00 2001
From: Andrew Pinski <pinskia@physics.uc.edu>
Date: Thu, 17 Jul 2003 22:53:46 +0000
Subject: [PATCH] Andrew Pinski <pinskia@physics.uc.edu>

        PR c++/10476
        * g++.dg/expr/crash-1.C: New test.

        PR c++/11027
        * g++.dg/template/init3.C: New test.

        PR c++/8222
        * g++.dg/template/non-dependent1.C: New test.

        PR c++/11070
        * g++.dg/template/non-dependent2.C: New test.

        PR c++/11071
        * g++.dg/template/non-dependent3.C: New test.

        PR c++/9907
        * g++.dg/template/sizeof5.C: New test.

From-SVN: r69529
---
 gcc/testsuite/ChangeLog                       | 20 ++++++++++++++++++
 gcc/testsuite/g++.dg/expr/crash-1.C           | 15 +++++++++++++
 gcc/testsuite/g++.dg/template/init3.C         | 11 ++++++++++
 .../g++.dg/template/non-dependent1.C          | 21 +++++++++++++++++++
 .../g++.dg/template/non-dependent2.C          | 16 ++++++++++++++
 .../g++.dg/template/non-dependent3.C          | 15 +++++++++++++
 gcc/testsuite/g++.dg/template/sizeof5.C       | 15 +++++++++++++
 7 files changed, 113 insertions(+)
 create mode 100644 gcc/testsuite/g++.dg/expr/crash-1.C
 create mode 100644 gcc/testsuite/g++.dg/template/init3.C
 create mode 100644 gcc/testsuite/g++.dg/template/non-dependent1.C
 create mode 100644 gcc/testsuite/g++.dg/template/non-dependent2.C
 create mode 100644 gcc/testsuite/g++.dg/template/non-dependent3.C
 create mode 100644 gcc/testsuite/g++.dg/template/sizeof5.C

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9be0bd688141..b0b3f4430d2c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,23 @@
+2003-07-17  Andrew Pinski <pinskia@physics.uc.edu>
+
+	PR c++/10476
+	* g++.dg/expr/crash-1.C: New test.
+
+	PR c++/11027
+	* g++.dg/template/init3.C: New test.
+
+	PR c++/8222
+	* g++.dg/template/non-dependent1.C: New test.
+
+	PR c++/11070
+	* g++.dg/template/non-dependent2.C: New test.
+
+	PR c++/11071
+	* g++.dg/template/non-dependent3.C: New test.
+
+	PR c++/9907
+	* g++.dg/template/sizeof5.C: New test.
+
 2003-07-17  Geoffrey Keating  <geoffk@apple.com>
 
 	PR 11498
diff --git a/gcc/testsuite/g++.dg/expr/crash-1.C b/gcc/testsuite/g++.dg/expr/crash-1.C
new file mode 100644
index 000000000000..d8d689fd67b0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/expr/crash-1.C
@@ -0,0 +1,15 @@
+// C++ PR/10476
+// Origin: larsbj@gullik.net and bangerth@dealii.org
+
+
+struct X {
+  X();
+  X(const X& __str);
+};
+X const bar();
+void foo()
+{
+  X y;
+  (true ? y : bar());
+}
+
diff --git a/gcc/testsuite/g++.dg/template/init3.C b/gcc/testsuite/g++.dg/template/init3.C
new file mode 100644
index 000000000000..9799a206d289
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/init3.C
@@ -0,0 +1,11 @@
+// PR c++/11027
+
+template <class T>
+struct X {
+   typedef void (X::*pfun)();
+   static pfun p[];
+};
+
+template <class T>
+typename X<T>::pfun X<T>::p[] = {};
+
diff --git a/gcc/testsuite/g++.dg/template/non-dependent1.C b/gcc/testsuite/g++.dg/template/non-dependent1.C
new file mode 100644
index 000000000000..3fe5c33d7823
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/non-dependent1.C
@@ -0,0 +1,21 @@
+//PR c++/8222
+// Origin: giovannibajo@libero.it and setzersn@gmx.de
+
+// { dg-do run }
+
+struct Foo
+{
+    template <class>
+    void func() {}
+};
+template <class>
+void Bar(Foo* p)
+{
+    p->func<int>();
+}
+ 
+int main()
+{
+    Foo c;
+    Bar<int>(&c);
+}
diff --git a/gcc/testsuite/g++.dg/template/non-dependent2.C b/gcc/testsuite/g++.dg/template/non-dependent2.C
new file mode 100644
index 000000000000..3b073b47a2b6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/non-dependent2.C
@@ -0,0 +1,16 @@
+//PR c++/11070
+// Used to ICE
+// Origin: bangerth@dealii.org and rwgk@yahoo.com
+
+template <bool b> struct X {
+    template <typename T>
+    static int* execute(int* x) { return x; }
+};
+
+template <typename T> void foo() {
+  static bool const same = true;
+  X<same>::execute<int> (0);
+}
+
+template void foo<int> ();
+
diff --git a/gcc/testsuite/g++.dg/template/non-dependent3.C b/gcc/testsuite/g++.dg/template/non-dependent3.C
new file mode 100644
index 000000000000..ce18bf243db1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/non-dependent3.C
@@ -0,0 +1,15 @@
+//PR c++/11071
+// Used to ICE
+// Origin: bangerth@dealii.org and rwgk@yahoo.com
+
+template <bool b> struct X {
+    template <typename T>
+    static int* execute(T* x) { return x; }
+};
+
+template <typename T> void foo() {
+  static bool const same = true;
+  X<same>::execute ((int*)0);
+}
+
+template void foo<int> ();
diff --git a/gcc/testsuite/g++.dg/template/sizeof5.C b/gcc/testsuite/g++.dg/template/sizeof5.C
new file mode 100644
index 000000000000..4096fed5329c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/sizeof5.C
@@ -0,0 +1,15 @@
+// PR c++/9907
+// Origin: nes@lrde.epita.fr
+// sizeof(foo()) was not considered constant.
+
+
+template <unsigned n> struct bar {};
+
+int foo();
+
+template <class T>
+void baz()
+{
+  bar<sizeof(foo())> b;
+}
+
-- 
GitLab