⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20011119-1.c

📁 this is a gcc file, you can download it and learn its usetility, for further detail please look at t
💻 C
字号:
/* Test for reload failing to eliminate from argp to sp.  *//* { dg-do run { target i?86-*-* } } *//* { dg-options "-O2 -fomit-frame-pointer" } */static int ustrsize (const char *s);static int (*ucwidth) (int c);static int (*ugetxc) (const char **s);static int (*usetc) (char *s, int c);char *ustrzcat(char *dest, int size, const char *src){   int pos = ustrsize(dest);   int c;   size -= pos + ucwidth(0);   while ((c = ugetxc(&src)) != 0) {      size -= ucwidth(c);      if (size < 0)         break;      pos += usetc(dest+pos, c);   }   usetc(dest+pos, 0);   return dest;}static int __attribute__((noinline))ustrsize (const char *s){  return 0;}static intucwidth_ (int c){  return 1;}static intugetxc_ (const char **s){  return '\0';}static intusetc_ (char *s, int c){  return 1;}intmain(){  ucwidth = ucwidth_;  ugetxc = ugetxc_;  usetc = usetc_;    /* ??? It is impossible to explicitly modify the hard frame pointer.     This will run afoul of code in flow.c that declines to mark regs     in eliminate_regs in regs_ever_used.  Apparently, we have to wait     for reload to decide that it won't need a frame pointer before a     variable can be allocated to %ebp.     So save, restore, and clobber %ebp by hand.  */  asm ("pushl %%ebp\n\t"       "movl $-1, %%ebp\n\t"       "pushl $0\n\t"       "pushl $0\n\t"       "pushl $0\n\t"       "call %P0\n\t"       "addl $12, %%esp\n\t"       "popl %%ebp"       : : "i"(ustrzcat));  return 0;}

⌨️ 快捷键说明

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