struct s { volatile struct s *next; }; void __attribute__((noinline)) bar (int ignored, int n) { asm volatile (""); } int __attribute__((noinline)) foo (volatile struct s *ptr, int n) { int i; bar (0, n); for (i = 0; i < n; i++) ptr = ptr->next; } int main (void) { volatile struct s rec = { &rec }; foo (&rec, 10); return 0; }