aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>1998-02-22 22:18:11 -0500
committerJason Merrill <jason@gcc.gnu.org>1998-02-22 22:18:11 -0500
commit138928a69612cfe66459c6095eea555bf0f56646 (patch)
tree632c4dfb375ef0ca974a8f5536b1f51a1bd12aa3
parentf84b4be9a791b299137ac1605d5e058709dafb10 (diff)
downloadgcc-138928a69612cfe66459c6095eea555bf0f56646.zip
gcc-138928a69612cfe66459c6095eea555bf0f56646.tar.gz
gcc-138928a69612cfe66459c6095eea555bf0f56646.tar.bz2
new
From-SVN: r18199
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/cleanup1.C20
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/overcnv1.C15
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/defarg2.C17
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend1.C24
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend10.C29
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend11.C31
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend12.C33
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend13.C33
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend3.C25
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend4.C21
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend5.C17
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend6.C28
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend7.C25
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend8.C18
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/friend9.C22
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C12
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C24
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/ttp42.C21
19 files changed, 417 insertions, 1 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.other/cleanup1.C b/gcc/testsuite/g++.old-deja/g++.other/cleanup1.C
new file mode 100644
index 0000000..ce37360
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/cleanup1.C
@@ -0,0 +1,20 @@
+// Bug: fold is too eager about pushing down CLEANUP_POINT_EXPR.
+
+int d;
+
+struct A {
+ A() { }
+ ~A() { d = 1; }
+};
+
+int f (const A& a)
+{
+ return 1;
+}
+
+main ()
+{
+ if (f (A()) && d == 0)
+ return 0;
+ return 1;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.other/overcnv1.C b/gcc/testsuite/g++.old-deja/g++.other/overcnv1.C
new file mode 100644
index 0000000..05941df
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/overcnv1.C
@@ -0,0 +1,15 @@
+// Build don't link:
+
+class A {
+public:
+ void f(const char * const * );
+};
+void f(const char * const *) {}
+
+void g()
+{
+ char *ar[10];
+ A a;
+ f(ar);
+ a.f(ar);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/defarg2.C b/gcc/testsuite/g++.old-deja/g++.pt/defarg2.C
new file mode 100644
index 0000000..444ecc4
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/defarg2.C
@@ -0,0 +1,17 @@
+template <int S=0, class T=int>
+struct X
+{};
+
+template <>
+struct X<0,int>
+{};
+
+template <int S>
+struct X<S,int>
+: X<>
+{};
+
+int main()
+{
+ X<1,int> x;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend1.C b/gcc/testsuite/g++.old-deja/g++.pt/friend1.C
new file mode 100644
index 0000000..ba642ba
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend1.C
@@ -0,0 +1,24 @@
+template <class T>
+void f(T);
+
+class C
+{
+ template <class T>
+ friend void f(T);
+
+ int i;
+};
+
+
+template <class T>
+void f(T)
+{
+ C c;
+ c.i = 3;
+}
+
+
+int main()
+{
+ f(7);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend10.C b/gcc/testsuite/g++.old-deja/g++.pt/friend10.C
new file mode 100644
index 0000000..bff432b
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend10.C
@@ -0,0 +1,29 @@
+template <class T>
+void f(T);
+
+template <class U>
+class C
+{
+ template <class T>
+ friend void f(T)
+ {
+ C<U> c;
+ c.i = 3;
+ }
+
+public:
+
+ void g()
+ {
+ f(3.0);
+ }
+
+ int i;
+};
+
+int main()
+{
+ f(7);
+ C<double> c;
+ c.g();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend11.C b/gcc/testsuite/g++.old-deja/g++.pt/friend11.C
new file mode 100644
index 0000000..d70fae6
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend11.C
@@ -0,0 +1,31 @@
+template <class T>
+class C;
+
+template <class T>
+struct S
+{
+ template <class U>
+ void f(U u)
+ {
+ C<U> cu;
+ cu.i = 3; // ERROR - S<double>::f<U> is a friend, but this is
+ // S<int>::f<double>.
+ }
+};
+
+
+template <class T>
+class C
+{
+ template <class U>
+ friend void S<T>::f(U);
+
+ int i;
+};
+
+
+int main()
+{
+ S<int> si;
+ si.f(3.0);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend12.C b/gcc/testsuite/g++.old-deja/g++.pt/friend12.C
new file mode 100644
index 0000000..ef9bfc8
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend12.C
@@ -0,0 +1,33 @@
+template <class T>
+class C;
+
+template <class T>
+struct S
+{
+ template <class U>
+ void f(U u1, U u2) {}
+
+ template <class U>
+ void f(U u)
+ {
+ C<T> ct;
+ ct.i = 3;
+ }
+};
+
+
+template <class T>
+class C
+{
+ template <class U>
+ friend void S<T>::f(U);
+
+ int i;
+};
+
+
+int main()
+{
+ S<int> si;
+ si.f(3.0);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend13.C b/gcc/testsuite/g++.old-deja/g++.pt/friend13.C
new file mode 100644
index 0000000..251d52a
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend13.C
@@ -0,0 +1,33 @@
+template <class T>
+class C;
+
+template <class U>
+struct S
+{
+ template <class V>
+ void f(V v)
+ {
+ C<V> cv;
+ cv.i = 3;
+ }
+};
+
+
+template <class T>
+class C
+{
+ template <class U>
+ template <class V>
+ friend void S<U>::f(V);
+
+ int i;
+};
+
+
+int main()
+{
+ S<int> si;
+ si.f(3.0);
+ S<long> sl;
+ sl.f('c');
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend3.C b/gcc/testsuite/g++.old-deja/g++.pt/friend3.C
new file mode 100644
index 0000000..77aabd3
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend3.C
@@ -0,0 +1,25 @@
+// Build don't link:
+
+template <class T>
+void f(T);
+
+class C
+{
+ friend void f<>(double);
+
+ int i;
+};
+
+
+template <class T>
+void f(T)
+{
+ C c;
+ c.i = 3; // ERROR - f<double> is a friend, this is f<int>.
+}
+
+
+int main()
+{
+ f(7);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend4.C b/gcc/testsuite/g++.old-deja/g++.pt/friend4.C
new file mode 100644
index 0000000..ea43927
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend4.C
@@ -0,0 +1,21 @@
+class C
+{
+ template <class T>
+ friend void f(T);
+
+ int i;
+};
+
+
+template <class T>
+void f(T)
+{
+ C c;
+ c.i = 3;
+}
+
+
+int main()
+{
+ f(7);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend5.C b/gcc/testsuite/g++.old-deja/g++.pt/friend5.C
new file mode 100644
index 0000000..516be4d
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend5.C
@@ -0,0 +1,17 @@
+class C
+{
+ template <class T>
+ friend void f(T)
+ {
+ C c;
+ c.i = 3;
+ }
+
+ int i;
+};
+
+
+int main()
+{
+ f(7);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend6.C b/gcc/testsuite/g++.old-deja/g++.pt/friend6.C
new file mode 100644
index 0000000..5651421
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend6.C
@@ -0,0 +1,28 @@
+template <class T>
+void f(T);
+
+class C
+{
+ template <class T>
+ friend void f(T)
+ {
+ C c;
+ c.i = 3;
+ }
+
+public:
+
+ void g()
+ {
+ f(3.0);
+ }
+
+ int i;
+};
+
+int main()
+{
+ f(7);
+ C c;
+ c.g();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend7.C b/gcc/testsuite/g++.old-deja/g++.pt/friend7.C
new file mode 100644
index 0000000..2962d92
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend7.C
@@ -0,0 +1,25 @@
+template <class T>
+void f(T);
+
+template <class U>
+class C
+{
+ template <class T>
+ friend void f(T);
+
+ int i;
+};
+
+
+template <class T>
+void f(T)
+{
+ C<T> c;
+ c.i = 3;
+}
+
+
+int main()
+{
+ f(7);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend8.C b/gcc/testsuite/g++.old-deja/g++.pt/friend8.C
new file mode 100644
index 0000000..ffa9122
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend8.C
@@ -0,0 +1,18 @@
+template <class T>
+class C
+{
+ friend void f (C<T> c)
+ {
+ c.i = 3;
+ }
+
+ int i;
+};
+
+
+int main()
+{
+ C<int> ci;
+
+ f(ci);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend9.C b/gcc/testsuite/g++.old-deja/g++.pt/friend9.C
new file mode 100644
index 0000000..63455d0
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend9.C
@@ -0,0 +1,22 @@
+template <class U>
+class C
+{
+ template <class T>
+ friend void f(T);
+
+ int i;
+};
+
+
+template <class T>
+void f(T)
+{
+ C<int> c;
+ c.i = 3;
+}
+
+
+int main()
+{
+ f(7);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C b/gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C
new file mode 100644
index 0000000..a5c6c49
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C
@@ -0,0 +1,12 @@
+// Build don't link:
+
+template<class T>
+struct X_two {
+ template <class T2> T2 conv_compare_ge(T2 test) {
+ T2 tmp_value = T2 (0);
+ return (tmp_value > test ? tmp_value : test);
+ }
+};
+
+template int X_two<double>::conv_compare_ge(int);
+
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C
index a64adeb..38c2953 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C
@@ -18,7 +18,8 @@ struct A {
template<int N2, class T, int N3>
static void f(B<N2,T>, B<N3,T> b)
{
- D<N2,N3,N>::E::f(b);
+ typedef typename D<N2,N3,N>::E E;
+ E::f(b);
}
};
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C
new file mode 100644
index 0000000..2a9fe8a
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C
@@ -0,0 +1,24 @@
+// Build don't link:
+
+template <class T>
+class X {
+public:
+ T x;
+};
+
+class Y {
+public:
+ template <class T> static void f(X<T>& a) {}
+
+ void g(void);
+};
+
+void
+Y::g(void)
+{
+ X<int> a;
+
+ f(a);
+}
+
+
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp42.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp42.C
new file mode 100644
index 0000000..b2610df
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp42.C
@@ -0,0 +1,21 @@
+template <class T, template <class T> class C>
+struct X
+{};
+
+template <class T>
+struct Y
+{};
+
+template <class T>
+struct Z
+{};
+
+template <class T>
+struct X<T,Y>
+{};
+
+int main()
+{
+ X<int,Y> a;
+ X<int,Z> b;
+}