2013-11-07 Joseph Myers <joseph@codesourcery.com>
+ * gcc.dg/atomic-compare-exchange-1.c,
+ gcc.dg/atomic-compare-exchange-2.c,
+ gcc.dg/atomic-compare-exchange-3.c,
+ gcc.dg/atomic-compare-exchange-4.c,
+ gcc.dg/atomic-compare-exchange-5.c, gcc.dg/atomic-exchange-1.c,
+ gcc.dg/atomic-exchange-2.c, gcc.dg/atomic-exchange-3.c,
+ gcc.dg/atomic-exchange-4.c, gcc.dg/atomic-exchange-5.c,
+ gcc.dg/atomic-fence.c, gcc.dg/atomic-flag.c,
+ gcc.dg/atomic-generic.c, gcc.dg/atomic-invalid.c,
+ gcc.dg/atomic-load-1.c, gcc.dg/atomic-load-2.c,
+ gcc.dg/atomic-load-3.c, gcc.dg/atomic-load-4.c,
+ gcc.dg/atomic-load-5.c, gcc.dg/atomic-lockfree.c,
+ gcc.dg/atomic-noinline.c, gcc.dg/atomic-op-1.c,
+ gcc.dg/atomic-op-2.c, gcc.dg/atomic-op-3.c, gcc.dg/atomic-op-4.c,
+ gcc.dg/atomic-op-5.c, gcc.dg/atomic-param.c,
+ gcc.dg/atomic-store-1.c, gcc.dg/atomic-store-2.c,
+ gcc.dg/atomic-store-3.c, gcc.dg/atomic-store-4.c,
+ gcc.dg/atomic-store-5.c: Declare main as returning int.
+ * gcc.dg/atomic-exchange-1.c, gcc.dg/atomic-exchange-2.c,
+ gcc.dg/atomic-exchange-3.c, gcc.dg/atomic-exchange-4.c,
+ gcc.dg/atomic-exchange-5.c: Separate increments of count from
+ expression using value of count.
+
+2013-11-07 Joseph Myers <joseph@codesourcery.com>
+
* lib/target-supports.exp
(check_effective_target_fenv_exceptions): New function.
* lib/atomic-dg.exp, gcc.dg/atomic/atomic.exp: New files.
#define STRONG 0
#define WEAK 1
+int
main ()
{
#define STRONG 0
#define WEAK 1
+int
main ()
{
#define STRONG 0
#define WEAK 1
+int
main ()
{
#define STRONG 0
#define WEAK 1
+int
main ()
{
#define STRONG 0
#define WEAK 1
+int
main ()
{
char v, count, ret;
+int
main ()
{
v = 0;
count = 0;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count)
abort ();
+ count++;
/* Now test the generic version. */
short v, count, ret;
+int
main ()
{
v = 0;
count = 0;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count)
abort ();
+ count++;
/* Now test the generic version. */
int v, count, ret;
+int
main ()
{
v = 0;
count = 0;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count)
abort ();
+ count++;
/* Now test the generic version. */
long long v, count, ret;
+int
main ()
{
v = 0;
count = 0;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count)
abort ();
+ count++;
/* Now test the generic version. */
__int128_t v, count, ret;
+int
main ()
{
v = 0;
count = 0;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count)
abort ();
+ count++;
- if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count++)
+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count)
abort ();
+ count++;
/* Now test the generic version. */
/* Test that __atomic_{thread,signal}_fence builtins execute. */
+int
main ()
{
__atomic_thread_fence (__ATOMIC_RELAXED);
extern void abort(void);
unsigned char a;
+int
main ()
{
int b;
int size = sizeof (test_struct);
/* Test for consistency on sizes 1, 2, 4, 8, 16 and 32. */
+int
main ()
{
test_struct c;
size_t s;
bool x;
+int
main ()
{
__atomic_compare_exchange_n (&i, &e, 1, 0, __ATOMIC_RELAXED, __ATOMIC_SEQ_CST); /* { dg-error "failure memory model cannot be stronger" } */
char v, count;
+int
main ()
{
v = 0;
short v, count;
+int
main ()
{
v = 0;
int v, count;
+int
main ()
{
v = 0;
long long v, count;
+int
main ()
{
v = 0;
__int128_t v, count;
+int
main ()
{
v = 0;
int r1, r2;
/* Test for consistency on sizes 1, 2, 4, 8, 16 and 32. */
+int
main ()
{
short as,bs,cs;
char ac,bc,cc;
+int
main ()
{
abort ();
}
+int
main ()
{
test_fetch_add ();
abort ();
}
+int
main ()
{
test_fetch_add ();
abort ();
}
+int
main ()
{
test_fetch_add ();
abort ();
}
+int
main ()
{
test_fetch_add ();
abort ();
}
+int
main ()
{
test_fetch_add ();
char v, count;
+int
main ()
{
v = 0;
short v, count;
+int
main ()
{
v = 0;
int v, count;
+int
main ()
{
v = 0;
long long v, count;
+int
main ()
{
v = 0;
__int128_t v, count;
+int
main ()
{
v = 0;