From fa7682c7297a0d9f9e94bafed70acb20029ff3ef Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Sat, 12 Nov 2005 21:10:23 +0000 Subject: [PATCH] cris.exp: New file. * gcc.target/cris/cris.exp: New file. * gcc.target/cris/rld-legit1.c: New test. * gcc.target/cris/rld-legit2.c: New test. From-SVN: r106836 --- gcc/testsuite/ChangeLog | 6 ++++ gcc/testsuite/gcc.target/cris/cris.exp | 41 ++++++++++++++++++++++ gcc/testsuite/gcc.target/cris/rld-legit1.c | 21 +++++++++++ gcc/testsuite/gcc.target/cris/rld-legit2.c | 16 +++++++++ 4 files changed, 84 insertions(+) create mode 100644 gcc/testsuite/gcc.target/cris/cris.exp create mode 100644 gcc/testsuite/gcc.target/cris/rld-legit1.c create mode 100644 gcc/testsuite/gcc.target/cris/rld-legit2.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e9cc432b966..8d12b2e8254 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-11-12 Hans-Peter Nilsson + + * gcc.target/cris/cris.exp: New file. + * gcc.target/cris/rld-legit1.c: New test. + * gcc.target/cris/rld-legit2.c: New test. + 2005-11-12 Jakub Jelinek PR c++/24780 diff --git a/gcc/testsuite/gcc.target/cris/cris.exp b/gcc/testsuite/gcc.target/cris/cris.exp new file mode 100644 index 00000000000..db94f299cff --- /dev/null +++ b/gcc/testsuite/gcc.target/cris/cris.exp @@ -0,0 +1,41 @@ +# Copyright (C) 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# GCC testsuite that uses the `gcc-dg.exp' driver, just a single option, no +# looping over tests. + +# Exit immediately if this isn't a CRIS target. +if ![istarget cris-*-*] then { + return +} + +# Load support procs. +load_lib gcc-dg.exp + +# If a testcase doesn't have special options, use these. +global DEFAULT_CFLAGS +if ![info exists DEFAULT_CFLAGS] then { + set DEFAULT_CFLAGS " -ansi -pedantic-errors" +} + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" $DEFAULT_CFLAGS + +# All done. +dg-finish diff --git a/gcc/testsuite/gcc.target/cris/rld-legit1.c b/gcc/testsuite/gcc.target/cris/rld-legit1.c new file mode 100644 index 00000000000..53a38af2c3b --- /dev/null +++ b/gcc/testsuite/gcc.target/cris/rld-legit1.c @@ -0,0 +1,21 @@ +/* Check that we don't get unnecessary insns due to reload using more + insns than needed due to reloading of more locations than + needed. */ +/* { dg-options -O2 } */ +/* { dg-final { scan-assembler-not "movs.w" } } */ +/* { dg-final { scan-assembler-not "move.w" } } */ + +/* As torture/pr24750-2.c, except we need to clobber R8 for thorough + testing and know we can do, since we replace the frame-pointer. */ + +int +f (short *a, char *y) +{ + __asm__ ("" : : : +#ifndef __PIC__ + "r0", +#endif + "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", + "r9", "r10", "r11", "r12", "r13"); + return y[*a]; +} diff --git a/gcc/testsuite/gcc.target/cris/rld-legit2.c b/gcc/testsuite/gcc.target/cris/rld-legit2.c new file mode 100644 index 00000000000..0add3e2b5c6 --- /dev/null +++ b/gcc/testsuite/gcc.target/cris/rld-legit2.c @@ -0,0 +1,16 @@ +/* A variant of rld-legit1.c only for full code coverage of the + initial version of cris_reload_address_legitimized. */ +/* { dg-options -O2 } */ + +short * +g (short *a, char *y) +{ + __asm__ ("" : : : +#ifndef __PIC__ + "r0", +#endif + "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", + "r9", "r10", "r11", "r12", "r13"); + y[*a++] = 0; + return a; +}