diff gcc/testsuite/gcc.dg/pr83393.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gcc.dg/pr83393.c	Thu Oct 25 07:37:49 2018 +0900
@@ -0,0 +1,38 @@
+/* PR rtl-optimization/83393 */
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-forward-propagate -fno-tree-bit-ccp" } */
+
+typedef unsigned char u8;
+typedef unsigned short u16;
+typedef unsigned int u32;
+typedef unsigned long long u64;
+
+u32 a, d;
+u64 b;
+u8 c;
+
+static u64 __attribute__ ((noinline, noclone))
+foo (u16 f, u64 g)
+{
+  f <<= 15;
+  f *= d;
+  f -= g %= 44;
+  f <<= f <= g;
+  c = 255;
+  c >>= (u8) f == 0;
+  f *= g;
+  c -= ~c;
+  return f + a + b + f;
+}
+
+int
+main (void)
+{
+#if (__SIZEOF_LONG_LONG__ == 8 && __SIZEOF_INT__ == 4 \
+     && __SIZEOF_SHORT__ == 2 && __CHAR_BIT__ == 8)
+  u64 x = foo (3, 0xE6C0011BBA6DBD7LL);
+  if (x != 0x1f66e)
+    __builtin_abort ();
+#endif
+  return 0;
+}