From 6a16a7f0c88f4e5ff69fe60c67a7b5f937ccf817 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 1 Nov 2000 02:31:02 -0800 Subject: [PATCH] New tests. From-SVN: r37187 --- gcc/testsuite/ChangeLog | 6 ++++ .../g++.old-deja/g++.ext/namedret1.C | 12 ++++++++ .../g++.old-deja/g++.ext/namedret2.C | 20 +++++++++++++ .../g++.old-deja/g++.ext/namedret3.C | 30 +++++++++++++++++++ 4 files changed, 68 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.ext/namedret1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ext/namedret2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ext/namedret3.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 02b40e1c4b9..9a7634dc8f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2000-11-01 Richard Henderson + + * 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 * 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 00000000000..64df8d1dc77 --- /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 00000000000..8e2b4e620c1 --- /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(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 00000000000..0c4e4b45256 --- /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; +} -- 2.30.2