From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- .../gcc.target/cris/torture/cris-torture.exp | 41 ++++++++++++ .../gcc.target/cris/torture/no-pro-epi-1.c | 4 ++ gcc/testsuite/gcc.target/cris/torture/pr24750-2.c | 20 ++++++ gcc/testsuite/gcc.target/cris/torture/pr34773.c | 74 ++++++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 gcc/testsuite/gcc.target/cris/torture/cris-torture.exp create mode 100644 gcc/testsuite/gcc.target/cris/torture/no-pro-epi-1.c create mode 100644 gcc/testsuite/gcc.target/cris/torture/pr24750-2.c create mode 100644 gcc/testsuite/gcc.target/cris/torture/pr34773.c (limited to 'gcc/testsuite/gcc.target/cris/torture') diff --git a/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp b/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp new file mode 100644 index 000000000..a0b294fcd --- /dev/null +++ b/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp @@ -0,0 +1,41 @@ +# Copyright (C) 2005, 2007 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 3 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 GCC; see the file COPYING3. If not see +# . + +# GCC testsuite that uses the `gcc-dg.exp' driver, looping over +# optimization options. + +# Exit immediately if this isn't a CRIS target. +if { ![istarget cris-*-*] && ![istarget crisv32-*-*] } 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. +gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] $DEFAULT_CFLAGS + +# All done. +dg-finish diff --git a/gcc/testsuite/gcc.target/cris/torture/no-pro-epi-1.c b/gcc/testsuite/gcc.target/cris/torture/no-pro-epi-1.c new file mode 100644 index 000000000..728a34c23 --- /dev/null +++ b/gcc/testsuite/gcc.target/cris/torture/no-pro-epi-1.c @@ -0,0 +1,4 @@ +/* { dg-options -mno-prologue-epilogue } */ +void f (void) +{ +} diff --git a/gcc/testsuite/gcc.target/cris/torture/pr24750-2.c b/gcc/testsuite/gcc.target/cris/torture/pr24750-2.c new file mode 100644 index 000000000..281fb47b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/cris/torture/pr24750-2.c @@ -0,0 +1,20 @@ +/* As the invalid insn in this test got as far as to the target output + code and was "near enough" to output invalid assembly-code, we need + to pass it through the assembler as well. + { dg-do assemble } */ + +int +f (short *a, char *y) +{ + __asm__ ("" : : : +#ifndef __PIC__ + "r0", +#endif + "r1", "r2", "r3", "r4", "r5", "r6", "r7", + /* Register R8 is frame-pointer, and we don't have a means + to not clobber it for the test-runs that don't eliminate + it. But that's ok; we have enough general-register + pressure to repeat the bug without that. */ + "r9", "r10", "r11", "r12", "r13"); + return y[*a]; +} diff --git a/gcc/testsuite/gcc.target/cris/torture/pr34773.c b/gcc/testsuite/gcc.target/cris/torture/pr34773.c new file mode 100644 index 000000000..d3723e38f --- /dev/null +++ b/gcc/testsuite/gcc.target/cris/torture/pr34773.c @@ -0,0 +1,74 @@ +/* { dg-do run } */ +union double_union +{ + double d; + int i[2]; +}; +void _dtoa_r (double) __attribute__ ((__noinline__)); +void _vfprintf_r (double) __attribute__ ((__noinline__)); +void +__sprint_r(int); +void +_vfprintf_r(double da) +{ + double ffp = da; + double value = ffp; + union double_union tmp; + + tmp.d = value; + + if ((tmp.i[1]) & ((unsigned)0x80000000L)) { + value = -value; + } + + _dtoa_r (value); + + if (ffp != 0) + __sprint_r(value == 0); + __asm__ (""); +} + + +double dd = -.012; +double ff = .012; + +void exit (int) __attribute__ ((__noreturn__)); +void abort (void) __attribute__ ((__noreturn__)); +void *memset(void *s, int c, __SIZE_TYPE__ n); +void _dtoa_r (double d) +{ + if (d != ff) + abort (); + __asm__ (""); +} + +void __sprint_r (int i) +{ + if (i != 0) + abort (); + __asm__ (""); +} + +int clearstack (void) __attribute__ ((__noinline__)); +int clearstack (void) +{ + char doodle[128]; + memset (doodle, 0, sizeof doodle); + __asm__ volatile ("" : : "g" (doodle) : "memory"); + return doodle[127]; +} + +void doit (void) __attribute__ ((__noinline__)); +void doit (void) +{ + _vfprintf_r (dd); + _vfprintf_r (ff); + __asm__ (""); +} + +int main(void) +{ + clearstack (); + doit (); + exit (0); +} -- cgit v1.2.3