aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/m68k/pr45015.c
blob: fba9550e9ef0328842cdb1feb28a0b5cdd2330ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* PR debug/45015 */
/* { dg-do compile } */
/* { dg-options "-O2 -g" } */

unsigned int
foo (unsigned int *x, const unsigned int *y, int z, unsigned int w)
{
  unsigned int a, b, c, s;
  int j;
  j = -z;
  x -= j;
  y -= j;
  a = 0;
  do
    {
      __asm__ ("move.l %2, %0; move.l %3, %1" : "=d" (b), "=d" (c) : "g<>" (y[j]), "d" (w));
      c += a;
      a = (c < a) + b;
      s = x[j];
      c = s + c;
      a += (c < s);
      x[j] = c;
    }
  while (++j != 0);
  return a;
}