/* PR tree-optimization/36508 */
/* { dg-do compile } */
/* { dg-options "-O -ftree-pre" } */

void
foo (short *sp)
{
  int k;
  k = 1;
#define SP0 *sp++ = 1;
  while (1)
    {
      if (k > 6)
	break;
      SP0
      k++;
    }
  k = 1;
  while (1)
    {
      if (k > 6)
	break;
      SP0
      k++;
    }
#define SP1 SP0 SP0 SP0 SP0 SP0 SP0 SP0 SP0 SP0 SP0 SP0
#define SP2 SP1 SP1 SP1 SP1 SP1 SP1 SP1 SP1 SP1 SP1 SP1
  SP2
}