https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117642

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Anyway, for the docs I don't believe this is a regression, at least
long long l;
void bar (void);

void
foo (void)
{
  __sync_lock_test_and_set (&l, 1);
  bar ();
  __sync_lock_release (&l);
}
gcc -m32 -march=i486 behaved similarly in GCC 4.1 (silently emitting
call to __sync_lock_test_and_set_8 and incorrectly emitting non-atomic store of
0 zeros to each of the halves).  GCC 3.2/3.4/4.0 didn't support those builtins
at all.

Reply via email to