Commit af4bd920 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

re PR middle-end/54261 (reverse sync/atomic operators when only…

re PR middle-end/54261 (reverse sync/atomic operators when only sync_compare_and_swap_optab libfuncs implemented)

	PR middle-end/54261
	* gcc.dg/torture/pr54261-1.c: New test.

From-SVN: r190455
parent df1a3a7c
2012-08-17 Hans-Peter Nilsson <hp@axis.com>
PR middle-end/54261
* gcc.dg/torture/pr54261-1.c: New test.
2012-08-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/54243
......
/* { dg-do run } */
/* { dg-additional-options "-DSYNC_FALLBACK" { target { ! cas_int } } } */
#ifdef SYNC_FALLBACK
/* The SYNC_FALLBACK code is just so we don't have to restrict this test
to any subset of targets. For targets with no atomics support at
all, the cas_int effective-target is false and the fallback provides
a PASS. Where the bug trigs (at the time this test-case was added),
cas_int is also false but the fallback isn't used. */
__attribute__((__noinline__, __noclone__))
int
# if __INT_MAX__ == 0x7fff
__sync_fetch_and_add_2
# else
__sync_fetch_and_add_4
# endif
(int *at, int val)
{
int tmp = *at;
asm ("");
*at = tmp + val;
return tmp;
}
#endif
__attribute__((__noinline__, __noclone__))
void g (int *at, int val)
{
asm ("");
__sync_fetch_and_add (at, val);
}
int main(void)
{
int x = 41;
int a = 1;
g (&x, a);
if (x != 42)
__builtin_abort ();
__builtin_exit (0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment