diff options
author | Oleg Endo <olegendo@gcc.gnu.org> | 2012-10-15 21:59:21 +0000 |
---|---|---|
committer | Oleg Endo <olegendo@gcc.gnu.org> | 2012-10-15 21:59:21 +0000 |
commit | e67ae07334003536ec8c29f656b8ef5c863bba3e (patch) | |
tree | 94fd4d2fac3e88c77db68abf76f97d54bc46edb0 /gcc | |
parent | 9945a8768187bb1e8f9d566bb4f6b51665619b4c (diff) | |
download | gcc-e67ae07334003536ec8c29f656b8ef5c863bba3e.zip gcc-e67ae07334003536ec8c29f656b8ef5c863bba3e.tar.gz gcc-e67ae07334003536ec8c29f656b8ef5c863bba3e.tar.bz2 |
re PR target/34777 (uClibc-0.9.29 compilation error for sh4 arch with gcc-4.x)
PR target/34777
* gcc.target/sh/torture/sh-torture.exp: New.
* gcc.target/sh/torture/pr34777.c: New.
From-SVN: r192478
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/sh/torture/pr34777.c | 30 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/sh/torture/sh-torture.exp | 41 |
3 files changed, 77 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 588928a..805bfb2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-10-15 Oleg Endo <olegendo@gcc.gnu.org> + + PR target/34777 + * gcc.target/sh/torture/sh-torture.exp: New. + * gcc.target/sh/torture/pr34777.c: New. + 2012-10-15 Matthias Klose <doko@ubuntu.com> * lib/target-supports.exp (check_profiling_available): Match diff --git a/gcc/testsuite/gcc.target/sh/torture/pr34777.c b/gcc/testsuite/gcc.target/sh/torture/pr34777.c new file mode 100644 index 0000000..b2ec56a --- /dev/null +++ b/gcc/testsuite/gcc.target/sh/torture/pr34777.c @@ -0,0 +1,30 @@ +/* { dg-do compile { target "sh*-*-*" } } */ +/* { dg-additional-options "-fschedule-insns -fPIC -mprefergot" } */ +/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */ + +static __inline __attribute__ ((__always_inline__)) void * +_dl_mmap (void * start, int length, int prot, int flags, int fd, + int offset) +{ + register long __sc3 __asm__ ("r3") = 90; + register long __sc4 __asm__ ("r4") = (long) start; + register long __sc5 __asm__ ("r5") = (long) length; + register long __sc6 __asm__ ("r6") = (long) prot; + register long __sc7 __asm__ ("r7") = (long) flags; + register long __sc0 __asm__ ("r0") = (long) fd; + register long __sc1 __asm__ ("r1") = (long) offset; + __asm__ __volatile__ ("trapa %1" + : "=z" (__sc0) + : "i" (0x10 + 6), "0" (__sc0), "r" (__sc4), + "r" (__sc5), "r" (__sc6), "r" (__sc7), + "r" (__sc3), "r" (__sc1) + : "memory" ); +} + +extern int _dl_pagesize; +void +_dl_dprintf(int fd, const char *fmt, ...) +{ + static char *buf; + buf = _dl_mmap ((void *) 0, _dl_pagesize, 0x1 | 0x2, 0x02 | 0x20, -1, 0); +} diff --git a/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp b/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp new file mode 100644 index 0000000..f025aa3 --- /dev/null +++ b/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp @@ -0,0 +1,41 @@ +# Copyright (C) 2012 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 +# <http://www.gnu.org/licenses/>. + +# GCC testsuite that uses the `gcc-dg.exp' driver, looping over +# optimization options. + +# Exit immediately if this isn't a SH target. +if { ![istarget sh*-*-*] } 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 |