summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/pr39431.c
blob: 756bdb9ebb81025e3b93dd13d9c87dc030ec3b90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* PR target/39431 */
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-options "-O2 -march=i686 -fpic" { target { ilp32 && fpic } } } */

extern void bar (char *, int);

int
foo (long long *p, long long oldv, long long *q, int n)
{
  char buf[n];
  bar (buf, n);
  p[256 + n] = __sync_val_compare_and_swap (p + n, oldv, oldv + 6);
  return __sync_bool_compare_and_swap (q + n, oldv, oldv + 8);
}