20061220-1.c

来自「用于进行gcc测试」· C语言 代码 · 共 73 行

C
73
字号
/* PR middle-end/30262 */extern void abort (void);intfoo (void){  unsigned int x = 0;  void nested (void)  {    x = 254;  }  nested ();  asm volatile ("" :: "r" (x));  asm volatile ("" :: "m" (x));  asm volatile ("" :: "mr" (x));  asm volatile ("" : "=r" (x) : "0" (x));  asm volatile ("" : "=m" (x) : "m" (x));  return x;}intbar (void){  unsigned int x = 0;  void nested (void)  {    asm volatile ("" :: "r" (x));    asm volatile ("" :: "m" (x));    asm volatile ("" :: "mr" (x));    x += 4;    asm volatile ("" : "=r" (x) : "0" (x));    asm volatile ("" : "=m" (x) : "m" (x));  }  nested ();  return x;}intbaz (void){  unsigned int x = 0;  void nested (void)  {    void nested2 (void)    {      asm volatile ("" :: "r" (x));      asm volatile ("" :: "m" (x));      asm volatile ("" :: "mr" (x));      x += 4;      asm volatile ("" : "=r" (x) : "0" (x));      asm volatile ("" : "=m" (x) : "m" (x));    }    nested2 ();    nested2 ();  }  nested ();  return x;}intmain (void){  if (foo () != 254 || bar () != 4 || baz () != 8)    abort ();  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?