diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2012-09-10 17:21:17 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2012-09-10 17:21:17 +0000 |
commit | 55c195fa1fc12b2273367c475e6851b2059e5701 (patch) | |
tree | e0a863cc88e70a4bdcdec378ba293fb04006a982 | |
parent | 84c3c7ce881a20095532baff121d38848efe2a0a (diff) | |
download | gcc-55c195fa1fc12b2273367c475e6851b2059e5701.zip gcc-55c195fa1fc12b2273367c475e6851b2059e5701.tar.gz gcc-55c195fa1fc12b2273367c475e6851b2059e5701.tar.bz2 |
pr52558-2.c: Delete.
testsuite/
* gcc.dg/pr52558-2.c: Delete.
* gcc.dg/simulate-thread/speculative-store-3.c: New.
From-SVN: r191153
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr52558-2.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/simulate-thread/speculative-store-3.c | 71 |
3 files changed, 76 insertions, 23 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 720e711..948f3c5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -19,6 +19,11 @@ 2012-09-07 Aldy Hernandez <aldyh@redhat.com> + * gcc.dg/pr52558-2.c: Delete. + * gcc.dg/simulate-thread/speculative-store-3.c: New. + +2012-09-07 Aldy Hernandez <aldyh@redhat.com> + PR testsuite/54184 * gcc.dg/pr52558-1.c: Delete. * gcc.dg/simulate-thread/speculative-store-2.c: New. diff --git a/gcc/testsuite/gcc.dg/pr52558-2.c b/gcc/testsuite/gcc.dg/pr52558-2.c deleted file mode 100644 index 6d5f51c..0000000 --- a/gcc/testsuite/gcc.dg/pr52558-2.c +++ /dev/null @@ -1,23 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "--param allow-store-data-races=0 -O2 -fdump-tree-lim1" } */ - -/* Test that g_2 is not written to unless !g_1. */ - -int g_1 = 1; -int g_2 = 0; - -int func_1(void) -{ - int l; - for (l = 0; l < 1234; l++) - { - if (g_1) - return l; - else - g_2 = 0; - } - return 999; -} - -/* { dg-final { scan-tree-dump-times "MEM.*g_2_lsm_flag" 1 "lim1" } } */ -/* { dg-final { cleanup-tree-dump "lim1" } } */ diff --git a/gcc/testsuite/gcc.dg/simulate-thread/speculative-store-3.c b/gcc/testsuite/gcc.dg/simulate-thread/speculative-store-3.c new file mode 100644 index 0000000..203c026 --- /dev/null +++ b/gcc/testsuite/gcc.dg/simulate-thread/speculative-store-3.c @@ -0,0 +1,71 @@ +/* { dg-do link } */ +/* { dg-options "--param allow-store-data-races=0 -O2" } */ +/* { dg-final { simulate-thread } } */ + +#include <stdio.h> +#include <stdlib.h> + +#include "simulate-thread.h" + +/* Test distilled from PR52558. */ + +int g_1 = 1; +int g_2 = 0, insns = 0; +int f; + +/* Test that g_2 is not written to unless !g_1. */ + +__attribute__((noinline)) +int funky() +{ + int l; + for (l = 0; l != 4; l++) + { + if (g_1) + { + /* g_1 is globally true so we should always execute here, + thus never writing to g_2 under any circumstance in this + code path. */ + return l; + } + for (g_2 = 0; g_2 >= 26; ++g_2) + ; + } + return 999; +} + +int simulate_thread_final_verify () +{ + /* If g_2 != insns, someone must have cached `g_2' and stored a + racy value into it. */ + if (g_2 != insns) + { + printf("FAIL: g_2 was incorrectly cached\n"); + return 1; + } + return 0; +} + +void simulate_thread_other_threads () +{ + ++insns; + ++g_2; +} + +int simulate_thread_step_verify () +{ + return 0; +} + +__attribute__((noinline)) +void simulate_thread_main() +{ + f = funky(); +} + +int main() +{ + simulate_thread_main (); + simulate_thread_done (); + return 0; +} |