From: Aldy Hernandez Date: Mon, 10 Sep 2012 17:21:17 +0000 (+0000) Subject: pr52558-2.c: Delete. X-Git-Tag: upstream/12.2.0~74356 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=55c195fa1fc12b2273367c475e6851b2059e5701;p=platform%2Fupstream%2Fgcc.git pr52558-2.c: Delete. testsuite/ * gcc.dg/pr52558-2.c: Delete. * gcc.dg/simulate-thread/speculative-store-3.c: New. From-SVN: r191153 --- 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 + * gcc.dg/pr52558-2.c: Delete. + * gcc.dg/simulate-thread/speculative-store-3.c: New. + +2012-09-07 Aldy Hernandez + 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 +#include + +#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; +}