OSDN Git Service

new
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 23 Feb 1998 03:18:11 +0000 (03:18 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 23 Feb 1998 03:18:11 +0000 (03:18 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@18199 138bc75d-0d04-0410-961f-82ee72b054a4

19 files changed:
gcc/testsuite/g++.old-deja/g++.other/cleanup1.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.other/overcnv1.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/defarg2.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend1.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend10.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend11.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend12.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend13.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend3.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend4.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend5.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend6.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend7.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend8.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/friend9.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C
gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp42.C [new file with mode: 0644]

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 (file)
index 0000000..ce37360
--- /dev/null
@@ -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 (file)
index 0000000..05941df
--- /dev/null
@@ -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 (file)
index 0000000..444ecc4
--- /dev/null
@@ -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 (file)
index 0000000..ba642ba
--- /dev/null
@@ -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 (file)
index 0000000..bff432b
--- /dev/null
@@ -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 (file)
index 0000000..d70fae6
--- /dev/null
@@ -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 (file)
index 0000000..ef9bfc8
--- /dev/null
@@ -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 (file)
index 0000000..251d52a
--- /dev/null
@@ -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 (file)
index 0000000..77aabd3
--- /dev/null
@@ -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 (file)
index 0000000..ea43927
--- /dev/null
@@ -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 (file)
index 0000000..516be4d
--- /dev/null
@@ -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 (file)
index 0000000..5651421
--- /dev/null
@@ -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 (file)
index 0000000..2962d92
--- /dev/null
@@ -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 (file)
index 0000000..ffa9122
--- /dev/null
@@ -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 (file)
index 0000000..63455d0
--- /dev/null
@@ -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 (file)
index 0000000..a5c6c49
--- /dev/null
@@ -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);
+
index a64adeb..38c2953 100644 (file)
@@ -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 (file)
index 0000000..2a9fe8a
--- /dev/null
@@ -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 (file)
index 0000000..b2610df
--- /dev/null
@@ -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;
+}