aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2000-11-01 02:31:02 -0800
committerRichard Henderson <rth@gcc.gnu.org>2000-11-01 02:31:02 -0800
commit6a16a7f0c88f4e5ff69fe60c67a7b5f937ccf817 (patch)
treebdb65f1bd18a7cf35bd45017b835981f40b22ab0 /gcc
parentf0de0c5d1735d0e47fcd9eed2c55c7447be3db7c (diff)
downloadgcc-6a16a7f0c88f4e5ff69fe60c67a7b5f937ccf817.zip
gcc-6a16a7f0c88f4e5ff69fe60c67a7b5f937ccf817.tar.gz
gcc-6a16a7f0c88f4e5ff69fe60c67a7b5f937ccf817.tar.bz2
New tests.
From-SVN: r37187
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ext/namedret1.C12
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ext/namedret2.C20
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ext/namedret3.C30
4 files changed, 68 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 02b40e1..9a7634d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..64df8d1
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
@@ -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
index 0000000..8e2b4e6
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ext/namedret2.C
@@ -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
index 0000000..0c4e4b4
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
@@ -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;
+}