* [SH][committed] Add another test case for PR 58314
@ 2014-12-22 19:00 Oleg Endo
0 siblings, 0 replies; only message in thread
From: Oleg Endo @ 2014-12-22 19:00 UTC (permalink / raw)
To: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 491 bytes --]
Hi,
I've noticed that the test case mentioned in the PR hasn't been
committed. Moreover, setting -Os in sh/torture/pr58314.c doesn't
accomplish anything. Tested with
make -k check-gcc RUNTESTFLAGS="sh-torture.exp=pr58314*
--target_board=sh-sim
\{-m2/-ml,-m2/-mb,-m2a/-mb,-m4/-ml,-m4/-mb,-m4a/-ml,-m4a/-mb}"
Committed as r219030.
Cheers,
Oleg
gcc/testsuite/ChangeLog:
PR target/58314
* gcc.target/sh/torture/pr58314-2.c: New.
* gcc.target/sh/torture/pr58314.c: Don't set -Os option.
[-- Attachment #2: sh_pr58314_2_test.patch --]
[-- Type: text/x-patch, Size: 4314 bytes --]
Index: gcc/testsuite/gcc.target/sh/torture/pr58314-2.c
===================================================================
--- gcc/testsuite/gcc.target/sh/torture/pr58314-2.c (revision 0)
+++ gcc/testsuite/gcc.target/sh/torture/pr58314-2.c (revision 0)
@@ -0,0 +1,160 @@
+/* { dg-do compile } */
+
+struct unipair
+{
+ unsigned short unicode;
+ unsigned short fontpos;
+};
+
+struct __large_struct
+{
+ unsigned long buf[100];
+};
+
+struct vc_data
+{
+ unsigned long *vc_uni_pagedir_loc;
+};
+
+struct uni_pagedir
+{
+ unsigned short **uni_pgdir[32];
+};
+
+void con_get_unimap (struct vc_data *vc, unsigned short ct, unsigned short *uct,
+ struct unipair *list)
+{
+ int i, j, k, ect;
+ unsigned short **p1, *p2;
+ struct uni_pagedir *p;
+
+ ect = 0;
+
+ if (*vc->vc_uni_pagedir_loc)
+ {
+ p = (struct uni_pagedir *)*vc->vc_uni_pagedir_loc;
+ for (i = 0; i < 32; i++)
+ if ((p1 = p->uni_pgdir[i]))
+ for (j = 0; j < 32; j++)
+ if ((p2 = *(p1++)))
+ for (k = 0; k < 64; k++)
+ {
+ if (*p2 < 512 && ect++ < ct)
+ {
+ {
+ long __pu_err;
+ __typeof__(*((&list->unicode))) *__pu_addr = ((&list->unicode));
+ __typeof__(*((&list->unicode))) __pu_val =
+ ((unsigned short)((i<<11)+(j<<6)+k));
+ __pu_err = 0;
+ switch ((sizeof(*(&list->unicode))))
+ {
+ case 1:
+ __asm__ __volatile__ (
+ "1:\n\t"
+ "mov." "b" " %1, %2\n\t"
+ "2:\n"
+ ".section .fixup,\"ax\"\n"
+ "3:\n\t"
+ "mov.l 4f, %0\n\t"
+ "jmp @%0\n\t"
+ " mov %3, %0\n\t"
+ ".balign 4\n"
+ "4: .long 2b\n\t"
+ ".previous\n"
+ ".section __ex_table,\"a\"\n\t"
+ ".long 1b, 3b\n\t"
+ ".previous"
+ : "=&r" (__pu_err)
+ : "r" (__pu_val), "m" ((*(struct __large_struct *)(__pu_addr))),
+ "i" (-14), "0" (__pu_err) : "memory" );
+
+ break;
+
+ case 2:
+ __asm__ __volatile__ (
+ "1:\n\t"
+ "mov." "w" " %1, %2\n\t"
+ "2:\n"
+ ".section .fixup,\"ax\"\n"
+ "3:\n\t"
+ "mov.l 4f, %0\n\t"
+ "jmp @%0\n\t"
+ " mov %3, %0\n\t"
+ ".balign 4\n"
+ "4: .long 2b\n\t"
+ ".previous\n"
+ ".section __ex_table,\"a\"\n\t"
+ ".long 1b, 3b\n\t"
+ ".previous"
+ : "=&r" (__pu_err)
+ : "r" (__pu_val), "m" ((*(struct __large_struct *)(__pu_addr))),
+ "i" (-14), "0" (__pu_err) : "memory" );
+ break;
+
+ default:
+ break;
+ }
+ }
+
+
+ {
+ long __pu_err;
+ __typeof__(*((&list->fontpos))) *__pu_addr = ((&list->fontpos));
+ __typeof__(*((&list->fontpos))) __pu_val = ((unsigned short) *p2);
+ __pu_err = 0;
+ switch ((sizeof(*(&list->fontpos))))
+ {
+ case 1:
+ __asm__ __volatile__ (
+ "1:\n\t"
+ "mov." "b" " %1, %2\n\t"
+ "2:\n"
+ ".section .fixup,\"ax\"\n"
+ "3:\n\t"
+ "mov.l 4f, %0\n\t"
+ "jmp @%0\n\t"
+ " mov %3, %0\n\t"
+ ".balign 4\n"
+ "4: .long 2b\n\t"
+ ".previous\n"
+ ".section __ex_table,\"a\"\n\t"
+ ".long 1b, 3b\n\t"
+ ".previous"
+ : "=&r" (__pu_err)
+ : "r" (__pu_val), "m" ((*(struct __large_struct *)(__pu_addr))),
+ "i" (-14), "0" (__pu_err) : "memory" );
+ break;
+
+ case 2:
+ __asm__ __volatile__ (
+ "1:\n\t"
+ "mov." "w" " %1, %2\n\t"
+ "2:\n"
+ ".section .fixup,\"ax\"\n"
+ "3:\n\t"
+ "mov.l 4f, %0\n\t"
+ "jmp @%0\n\t"
+ " mov %3, %0\n\t"
+ ".balign 4\n"
+ "4: .long 2b\n\t"
+ ".previous\n"
+ ".section __ex_table,\"a\"\n\t"
+ ".long 1b, 3b\n\t"
+ ".previous"
+ : "=&r" (__pu_err)
+ : "r" (__pu_val), "m" ((*(struct __large_struct *)(__pu_addr))),
+ "i" (-14), "0" (__pu_err) : "memory" );
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ list++;
+ }
+ p2++;
+ }
+ }
+}
Index: gcc/testsuite/gcc.target/sh/torture/pr58314.c
===================================================================
--- gcc/testsuite/gcc.target/sh/torture/pr58314.c (revision 219015)
+++ gcc/testsuite/gcc.target/sh/torture/pr58314.c (working copy)
@@ -1,13 +1,15 @@
+/* { dg-additional-options "-std=gnu99" } */
/* { dg-do compile } */
-/* { dg-options "-Os" } */
typedef unsigned short __u16;
typedef unsigned int __u32;
-
typedef signed short s16;
-static inline __attribute__((always_inline)) __attribute__((__const__)) __u16 __arch_swab16(__u16 x)
+static inline
+__attribute__((always_inline))
+__attribute__((__const__))
+__u16 __arch_swab16(__u16 x)
{
__asm__(
"swap.b %1, %0"
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2014-12-22 18:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-22 19:00 [SH][committed] Add another test case for PR 58314 Oleg Endo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).