New tests.
authorRichard Henderson <rth@redhat.com>
Wed, 1 Nov 2000 10:31:02 +0000 (02:31 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 1 Nov 2000 10:31:02 +0000 (02:31 -0800)
From-SVN: r37187

gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.ext/namedret1.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.ext/namedret2.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.ext/namedret3.C [new file with mode: 0644]

index 02b40e1c4b9adc1a95b7db600460b71e51fb03ac..9a7634dc8f41934d6347ec542510e8d8f4fafa28 100644 (file)
@@ -1,3 +1,9 @@
+2000-11-01  Richard Henderson  <rth@redhat.com>
+
+       * g++.old-deja/g++.ext/namedret1.C: New.
+       * g++.old-deja/g++.ext/namedret2.C: New.
+       * g++.old-deja/g++.ext/namedret3.C: New.
+
 2000-10-31  Geoffrey Keating  <geoffk@cygnus.com>
 
        * gcc.c-torture/compile/920501-7.c: Remove 'CYGNUS LOCAL' markers.
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/namedret1.C b/gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
new file mode 100644 (file)
index 0000000..64df8d1
--- /dev/null
@@ -0,0 +1,12 @@
+// Special g++ Options: -Wno-deprecated
+
+int f(int x) return y(x) { }
+
+extern "C" void abort ();
+
+int main()
+{
+  if (f(1) != 1 || f(2) != 2 || f(3) != 3)
+    abort ();
+  return 0;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/namedret2.C b/gcc/testsuite/g++.old-deja/g++.ext/namedret2.C
new file mode 100644 (file)
index 0000000..8e2b4e6
--- /dev/null
@@ -0,0 +1,20 @@
+// Skip if not target: alpha*-*-*
+// Special g++ Options: -Wno-deprecated
+
+// This test verifies that return type promotion is working correctly.  
+// The Alpha ABI specifies that 32-bit return values have bit 31 propagated,
+// i.e. the value is sign-extended even if the unpromoted type is unsigned.
+
+unsigned int f(unsigned int x) return y(x) { }
+
+extern "C" void abort ();
+
+int main()
+{
+  typedef long (*long_func)(long);
+  long_func g = reinterpret_cast<long_func>(f);
+
+  if (g(-1L) != -1L)
+    abort ();
+  return 0;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/namedret3.C b/gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
new file mode 100644 (file)
index 0000000..0c4e4b4
--- /dev/null
@@ -0,0 +1,30 @@
+// Special g++ Options: -Wno-deprecated
+
+extern "C" void abort();
+
+int f2(int *x)
+{
+  *x = 1;
+  return 2;
+}
+
+int f1() return x
+{
+  f2(&x);
+}
+
+void g()
+{
+  int scratch[100];
+  int i;
+  for (i = 0; i < 100; ++i)
+    scratch[i] = 0;
+}
+
+int main()
+{
+  g();
+  if (f1() != 1)
+    abort ();
+  return 0;
+}