blob: 48dea27956ce2495f5a04f1e91e05d8dfb554dea [file] [log] [blame]
/* PR opt/6722 */
/* { dg-do run } */
/* { dg-options "-O2" } */
/* We need this type to be as wide as the register chosen below, so
that, when we preserve it across main, we preserve all of it. */
typedef int __attribute__ ((mode (__word__))) reg_type;
#if !__PIC__
register reg_type k asm("%ebx");
#elif __amd64
register reg_type k asm("%r12");
#else
register reg_type k asm("%esi");
#endif
void __attribute__((noinline))
foo()
{
k = 1;
}
void test()
{
reg_type i;
for (i = 0; i < 10; i += k)
{
k = 0;
foo();
}
}
int main()
{
reg_type old = k;
test();
k = old;
return 0;
}