/* { dg-do compile } */
/* { dg-options "-Os" } */

/* Test if we restore correctly blink when using millicode.  */
extern void bar (void);

void foo (void)
{
  __asm__ volatile ( "" : : : "r13","r14","r15","r16","r17","r18","r20","r21");
  bar();
}

void foo2 (void)
{
  bar();
  __asm__ volatile ( "" : : : "r13","r14","r15","r16","r17","r18","r20","r21");
}

/* { dg-final { scan-assembler-not "st.*r13,\\\[sp" } } */
/* { dg-final { scan-assembler-not "st.*r14,\\\[sp" } } */
/* { dg-final { scan-assembler-not "st.*r15,\\\[sp" } } */
/* { dg-final { scan-assembler "ld.*blink,\\\[sp,32" } } */
/* { dg-final { scan-assembler "mov_s.*r12,32" } } */
