📄 20051215-1.c
字号:
/* ARM's load-and-call patterns used to allow automodified addresses. This was wrong, because if the modified register were spilled, the call would need an output reload. *//* { dg-do run { target arm*-*-* } } *//* { dg-options "-O2 -fno-omit-frame-pointer" } */extern void abort (void);typedef void (*callback) (void);static voidfoo (callback *first, callback *p){ while (p > first) { (*--p) ();#ifndef __thumb__ asm ("" : "=r" (p) : "0" (p) : "r4", "r5", "r6", "r7", "r8", "r9", "r10");#endif } }static voiddummy (void){ static int count; if (count++ == 1) abort ();}intmain (void){ callback list[1] = { dummy }; foo (&list[0], &list[1]); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -