20070507-1.c

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

C
104
字号
/* This failed on s390x due to bug in loop.c.   loop.c failed to remove a REG_EQUAL note when   hoisting an insn from a loop body.  *//* { dg-options "-O3 -fPIC" } *//* { dg-do run { target fpic } } */typedef __SIZE_TYPE__ size_t;int memcmp(const void *s1, const void *s2, size_t n);typedef struct{  char name[30];  int a;} LOCAL;int global = 0;int sy = 1;int subroutine_offset;LOCAL local = { "local", 0 };LOCAL keywords = { "keywords", 1 };int local_table = 0;int keywords_table = 0;void __attribute__((noinline)) bar (char *p_buffer){  p_buffer[255] = 1;}int __attribute__((noinline)) foo (char *p_str1){  global = 1;  return 1;}int __attribute__((noinline)) loop_next (int *p_table, char *p_table_head){  static loop_next = 0;  if (loop_next == 1)    return 1;  loop_next = 1;  return 0;}intmain (){  char buffer[256];  int ende = 0;  int index;  int local_base = 2;  keywords.a = 1;  for (sy = 0;; sy++)    {      for (index = 1;;)	{	  bar (buffer);	  if (buffer[sy] != 0)	    {	      ende = 1;	      break;	    };	  if (foo (buffer))	    {	      keywords.a += index - 1;	      break;	    }	  index++;	}      if (ende)	break;    }  subroutine_offset = 0;  for (;;)    {      if (loop_next (&keywords_table, (char*)&keywords))	break;      if ((!memcmp (keywords.name, "+++", 3)))	local_base = 100;      else	local_base = 0;      if ((!memcmp (keywords.name, "+++", 3)))	subroutine_offset += local_table;      for (;;)	{	  if (loop_next (&local_table, (char*)&local))	    break;;	  if ((local.a == 0))	    continue;;	  foo (local.name);	}    }  return 0;}

⌨️ 快捷键说明

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