re PR sanitizer/64265 (r217669 broke tsan)
PR sanitizer/64265 * g++.dg/tsan/pr64265.C: New test. From-SVN: r221509
This commit is contained in:
parent
bfd714822b
commit
02703f4c0f
@ -1,5 +1,8 @@
|
||||
2015-03-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR sanitizer/64265
|
||||
* g++.dg/tsan/pr64265.C: New test.
|
||||
|
||||
PR sanitizer/65400
|
||||
* c-c++-common/tsan/pr65400-1.c: New test.
|
||||
* c-c++-common/tsan/pr65400-2.c: New test.
|
||||
|
54
gcc/testsuite/g++.dg/tsan/pr64265.C
Normal file
54
gcc/testsuite/g++.dg/tsan/pr64265.C
Normal file
@ -0,0 +1,54 @@
|
||||
// PR sanitizer/64265
|
||||
// { dg-shouldfail "tsan" }
|
||||
// { dg-additional-options "-fno-omit-frame-pointer -ldl" }
|
||||
|
||||
#include <pthread.h>
|
||||
#include "tsan_barrier.h"
|
||||
|
||||
static pthread_barrier_t barrier;
|
||||
int v;
|
||||
|
||||
__attribute__((noinline, noclone)) int
|
||||
foo (int x)
|
||||
{
|
||||
if (x < 99)
|
||||
throw x;
|
||||
barrier_wait (&barrier);
|
||||
v++;
|
||||
return x;
|
||||
}
|
||||
|
||||
__attribute__((noinline, noclone)) void
|
||||
bar (void)
|
||||
{
|
||||
for (int i = 0; i < 100; i++)
|
||||
try
|
||||
{
|
||||
foo (i);
|
||||
}
|
||||
catch (int)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((noinline, noclone)) void *
|
||||
tf (void *)
|
||||
{
|
||||
bar ();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
pthread_t th;
|
||||
barrier_init (&barrier, 2);
|
||||
if (pthread_create (&th, NULL, tf, NULL))
|
||||
return 0;
|
||||
v++;
|
||||
barrier_wait (&barrier);
|
||||
pthread_join (th, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// { dg-output "WARNING: ThreadSanitizer: data race.*#2 _?(tf|_Z2tfPv)" }
|
Loading…
Reference in New Issue
Block a user