aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2003-07-17 22:53:46 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2003-07-17 15:53:46 -0700
commitbf88d870027e4607b2760fa9ac44d2bd6125f50c (patch)
treef83f3a5027bfaca42976250fe3b7e13063efdac1
parent26e0dcb3262e0b0dae53d60ef6a8ea3cce6b2e40 (diff)
downloadgcc-bf88d870027e4607b2760fa9ac44d2bd6125f50c.zip
gcc-bf88d870027e4607b2760fa9ac44d2bd6125f50c.tar.gz
gcc-bf88d870027e4607b2760fa9ac44d2bd6125f50c.tar.bz2
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
-rw-r--r--gcc/testsuite/ChangeLog20
-rw-r--r--gcc/testsuite/g++.dg/expr/crash-1.C15
-rw-r--r--gcc/testsuite/g++.dg/template/init3.C11
-rw-r--r--gcc/testsuite/g++.dg/template/non-dependent1.C21
-rw-r--r--gcc/testsuite/g++.dg/template/non-dependent2.C16
-rw-r--r--gcc/testsuite/g++.dg/template/non-dependent3.C15
-rw-r--r--gcc/testsuite/g++.dg/template/sizeof5.C15
7 files changed, 113 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9be0bd6..b0b3f44 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 0000000..d8d689f
--- /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 0000000..9799a20
--- /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 0000000..3fe5c33
--- /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 0000000..3b073b4
--- /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 0000000..ce18bf2
--- /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 0000000..4096fed
--- /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;
+}
+