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:
Jakub Jelinek 2015-03-19 08:55:22 +01:00 committed by Jakub Jelinek
parent bfd714822b
commit 02703f4c0f
2 changed files with 57 additions and 0 deletions

View File

@ -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.

View 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)" }