/* { 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" } } */