re PR bootstrap/57154 (Bootstrap broken for powerpc64-unknown-linux-gnu)
authorTeresa Johnson <tejohnson@google.com>
Mon, 6 May 2013 12:46:53 +0000 (12:46 +0000)
committerTeresa Johnson <tejohnson@gcc.gnu.org>
Mon, 6 May 2013 12:46:53 +0000 (12:46 +0000)
2013-05-03  Teresa Johnson  <tejohnson@google.com>

PR bootstrap/57154
* gcc.dg/pr57154.c: New test.

From-SVN: r198626

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr57154.c [new file with mode: 0644]

index b4e04799c9d4d27d8759a12729b66575fb4bbdb5..26cc566c7632a630f164515a7fffc7ca4e628c83 100644 (file)
@@ -1,3 +1,8 @@
+2013-05-03  Teresa Johnson  <tejohnson@google.com>
+
+       PR bootstrap/57154
+       * gcc.dg/pr57154.c: New test.
+
 2013-05-06  Richard Biener  <rguenther@suse.de>
 
        PR middle-end/57147
diff --git a/gcc/testsuite/gcc.dg/pr57154.c b/gcc/testsuite/gcc.dg/pr57154.c
new file mode 100644 (file)
index 0000000..5a6531a
--- /dev/null
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fschedule-insns" } */
+
+#define PF_FROZEN 0x00010000
+#define likely(x)      __builtin_expect(!!(x), 1)
+
+struct cur
+{
+  unsigned long flags;
+};
+struct cur *cur;
+
+unsigned long freeze_cnt;
+
+extern int foo(void *);
+extern int slow_path(void *);
+
+static inline int freezing(void *p)
+{
+        if (likely(!foo(&freeze_cnt)))
+                return 0;
+        return slow_path(p);
+}
+
+extern int blah(void);
+
+int testcase(int check_kthr_stop)
+{
+  int was_frozen = 0;
+
+  for (;;) {
+    if (!freezing(cur) ||
+        (check_kthr_stop && blah()))
+      cur->flags &= ~PF_FROZEN;
+
+    if (!(cur->flags & PF_FROZEN))
+      break;
+
+    was_frozen = 1;
+  }
+
+  return was_frozen;
+}