On Mon, Apr 22, 2013 at 06:53:59PM +0200, Marek Polacek wrote: > 2013-04-22 Marek Polacek <pola...@redhat.com> > > PR sanitizer/56990 > * tsan.c (instrument_expr): Don't instrument expression > in case its size is zero. > > * gcc.dg/pr56990.c: New test.
Yes, thanks. > --- gcc/tsan.c.mp 2013-04-19 15:39:46.416450528 +0200 > +++ gcc/tsan.c 2013-04-22 18:49:57.834052631 +0200 > @@ -131,7 +131,8 @@ instrument_expr (gimple_stmt_iterator gs > if (TREE_READONLY (base)) > return false; > > - if (bitpos % (size * BITS_PER_UNIT) > + if (size == 0 > + || bitpos % (size * BITS_PER_UNIT) > || bitsize != size * BITS_PER_UNIT) > return false; > > --- gcc/testsuite/gcc.dg/pr56990.c.mp 2013-04-22 17:30:14.523876683 +0200 > +++ gcc/testsuite/gcc.dg/pr56990.c 2013-04-22 17:29:06.704666252 +0200 > @@ -0,0 +1,10 @@ > +/* PR sanitizer/56990 */ > +/* { dg-do compile { target { x86_64-*-linux* && lp64 } } } */ > +/* { dg-options "-fsanitize=thread" } */ > + > +struct S{}; > + > +void foo(struct S *p) > +{ > + *p = (struct S){}; > +} > > > m~ Jakub