diff gcc/testsuite/gcc.dg/guality/rotatetest.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gcc.dg/guality/rotatetest.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,76 @@
+/* { dg-do run { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
+/* { dg-options "-g" } */
+
+volatile int vv;
+
+__attribute__((noclone, noinline)) long
+f1 (unsigned long x)
+{
+  long f = (x << 12) | (x >> (64 - 12));
+  long g = f;
+  asm volatile ("" : "+r" (f));
+  vv++;		/* { dg-final { gdb-test 12 "g" "f" } } */
+  return f;
+}
+
+__attribute__((noclone, noinline)) long
+f2 (unsigned long x, int y)
+{
+  long f = (x << y) | (x >> (64 - y));
+  long g = f;
+  asm volatile ("" : "+r" (f));
+  vv++;		/* { dg-final { gdb-test 22 "g" "f" } } */
+  return f;
+}
+
+__attribute__((noclone, noinline)) long
+f3 (unsigned long x, int y)
+{
+  long f = (x >> y) | (x << (64 - y));
+  long g = f;
+  asm volatile ("" : "+r" (f));
+  vv++;		/* { dg-final { gdb-test 32 "g" "f" } } */
+  return f;
+}
+
+__attribute__((noclone, noinline)) unsigned int
+f4 (unsigned int x)
+{
+  unsigned int f = (x << 12) | (x >> (32 - 12));
+  unsigned int g = f;
+  asm volatile ("" : "+r" (f));
+  vv++;		/* { dg-final { gdb-test 42 "g" "f" } } */
+  return f;
+}
+
+__attribute__((noclone, noinline)) unsigned int
+f5 (unsigned int x, int y)
+{
+  unsigned int f = (x << y) | (x >> (32 - y));
+  unsigned int g = f;
+  asm volatile ("" : "+r" (f));
+  vv++;		/* { dg-final { gdb-test 52 "g" "f" } } */
+  return f;
+}
+
+__attribute__((noclone, noinline)) unsigned int
+f6 (unsigned int x, int y)
+{
+  unsigned int f = (x >> y) | (x << (32 - y));
+  unsigned int g = f;
+  asm volatile ("" : "+r" (f));
+  vv++;		/* { dg-final { gdb-test 62 "g" "f" } } */
+  return f;
+}
+
+int
+main ()
+{
+  f1 (0x123456789abcde0fUL);
+  f2 (0x123456789abcde0fUL, 18);
+  f3 (0x123456789abcde0fUL, 17);
+  f4 (0x12345678);
+  f5 (0x12345678, 18);
+  f6 (0x12345678, 17);
+  return 0;
+}