diff options
author | Max Ostapenko <m.ostapenko@partner.samsung.com> | 2014-01-31 15:42:10 +0200 |
---|---|---|
committer | Maxim Ostapenko <chefmax@gcc.gnu.org> | 2014-01-31 15:42:10 +0200 |
commit | af3978a10db6f6b915b4a785228955d458062d2d (patch) | |
tree | 290959e958103557b3aa58d74441a7e7ccbdef0b /gcc | |
parent | e0514839c0d55605ffd20eb876b890e11ce832f0 (diff) | |
download | gcc-af3978a10db6f6b915b4a785228955d458062d2d.zip gcc-af3978a10db6f6b915b4a785228955d458062d2d.tar.gz gcc-af3978a10db6f6b915b4a785228955d458062d2d.tar.bz2 |
* c-c++-common/tsan/simple_race.c: Made test less flaky.
From-SVN: r207344
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/tsan/simple_race.c | 25 |
2 files changed, 27 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6417c8d..c81b82d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,6 @@ +2014-01-31 Maxim Ostapenko <m.ostapenko@partner.samsung.com> + * c-c++-common/tsan/simple_race.c: Made test less flaky. + 2014-01-31 Ilya Tocar <ilya.tocar@intel.com> * gcc.target/i386/m512-check.h: Use correct rounding values. diff --git a/gcc/testsuite/c-c++-common/tsan/simple_race.c b/gcc/testsuite/c-c++-common/tsan/simple_race.c index 24b88e8..4626efd 100644 --- a/gcc/testsuite/c-c++-common/tsan/simple_race.c +++ b/gcc/testsuite/c-c++-common/tsan/simple_race.c @@ -1,12 +1,35 @@ /* { dg-do run } */ +/* { dg-set-target-env-var TSAN_OPTIONS "halt_on_error=1" } */ /* { dg-shouldfail "tsan" } */ #include <pthread.h> #include <stdio.h> +#include <unistd.h> + +#define MAX_ITERATIONS_NUMBER 100 +#define SLEEP_STEP 128000 + +unsigned int delay_time = 1000; + +static inline void delay () { + usleep(delay_time); +} + +extern int main_1(); + +int main() { + int i; + for (i = 0; i < MAX_ITERATIONS_NUMBER; i++) { + main_1(); + delay_time += delay_time < 256000 ? delay_time : SLEEP_STEP; + } + return 0; +} int Global; void *Thread1(void *x) { + delay(); Global = 42; return NULL; } @@ -16,7 +39,7 @@ void *Thread2(void *x) { return NULL; } -int main() { +int main_1() { pthread_t t[2]; pthread_create(&t[0], NULL, Thread1, NULL); pthread_create(&t[1], NULL, Thread2, NULL); |