aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2013-05-06 12:46:53 +0000
committerTeresa Johnson <tejohnson@gcc.gnu.org>2013-05-06 12:46:53 +0000
commit6a927313920b04c44f33ac8f784103236a324ef0 (patch)
treea4a995bbb228d94b70d7d3e82aa65bd6c31ed839 /gcc
parent0107dca2adf82db79c54d6da9707035533d474d6 (diff)
downloadgcc-6a927313920b04c44f33ac8f784103236a324ef0.zip
gcc-6a927313920b04c44f33ac8f784103236a324ef0.tar.gz
gcc-6a927313920b04c44f33ac8f784103236a324ef0.tar.bz2
re PR bootstrap/57154 (Bootstrap broken for powerpc64-unknown-linux-gnu)
2013-05-03 Teresa Johnson <tejohnson@google.com> PR bootstrap/57154 * gcc.dg/pr57154.c: New test. From-SVN: r198626
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr57154.c43
2 files changed, 48 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b4e0479..26cc566 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..5a6531a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr57154.c
@@ -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;
+}