Message ID | 1349737251.21984.55.camel@yam-132-YW-E178-FTW |
---|---|
State | New |
Headers | show |
Oleg Endo <oleg.endo@t-online.de> wrote: > This adds the reduced test case as mentioned by Kaz in the PR to the > test suite. > Tested with > make -k check-gcc RUNTESTFLAGS="compile.exp=pr34777* > --target_board=sh-sim > \{-m2/-ml,-m2/-mb,-m2a/-mb,-m4/-ml,-m4/-mb,-m4a/-ml,-m4a/-mb}" > > OK? It should be put into gcc.target/sh instead of gcc.c-torture/compile and tested with -Os -fschedule-insns -fPIC -mprefergot, shouldn't it? Regards, kaz
On Tue, 2012-10-09 at 18:33 +0900, Kaz Kojima wrote: > Oleg Endo <oleg.endo@t-online.de> wrote: > > This adds the reduced test case as mentioned by Kaz in the PR to the > > test suite. > > Tested with > > make -k check-gcc RUNTESTFLAGS="compile.exp=pr34777* > > --target_board=sh-sim > > \{-m2/-ml,-m2/-mb,-m2a/-mb,-m4/-ml,-m4/-mb,-m4a/-ml,-m4a/-mb}" > > > > OK? > > It should be put into gcc.target/sh instead of gcc.c-torture/compile > and tested with -Os -fschedule-insns -fPIC -mprefergot, shouldn't it? > Uhm, yes, I forgot to add the -fschedule-insns and -mprefergot options. Regarding the -Os option, I think it's better to test this one at multiple optimization levels, just in case. I've looked through gcc.c-torture/compile and found some target specific test cases there, so I thought it would be OK to do the same :) Some targets also have their own torture subdir. If it's better, I could also create gcc.target/sh/torture. Cheers, Oleg
Oleg Endo <oleg.endo@t-online.de> wrote: > Uhm, yes, I forgot to add the -fschedule-insns and -mprefergot options. > Regarding the -Os option, I think it's better to test this one at > multiple optimization levels, just in case. I've looked through > gcc.c-torture/compile and found some target specific test cases there, > so I thought it would be OK to do the same :) > Some targets also have their own torture subdir. If it's better, I > could also create gcc.target/sh/torture. Maybe. For this specific test, I thought that "-Os -fschedule-insns -fPIC -mprefergot" would be enough because empirically these options will give high R0 register pressure which had caused that PR. Regards, kaz
Index: gcc/testsuite/gcc.c-torture/compile/pr34777.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr34777.c (revision 0) +++ gcc/testsuite/gcc.c-torture/compile/pr34777.c (revision 0) @@ -0,0 +1,30 @@ +/* { dg-do compile { target "sh*-*-*" } } */ +/* { dg-additional-options "-fPIC" } */ +/* { 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); +}