20000815-1.c

来自「linux下的gcc编译器」· C语言 代码 · 共 71 行

C
71
字号
struct table_elt{  void *exp;  struct table_elt *next_same_hash;  struct table_elt *prev_same_hash;  struct table_elt *next_same_value;  struct table_elt *prev_same_value;  struct table_elt *first_same_value;  struct table_elt *related_value;  int cost;  int mode;  char in_memory;  char in_struct;  char is_const;  char flag;};struct write_data{  int sp : 1;			   int var : 1;			   int nonscalar : 1;		   int all : 1;			 };int cse_rtx_addr_varies_p(void *);void remove_from_table(struct table_elt *, int);static struct table_elt *table[32];voidinvalidate_memory (writes)     struct write_data *writes;{  register int i;  register struct table_elt *p, *next;  int all = writes->all;  int nonscalar = writes->nonscalar;  for (i = 0; i < 31; i++)    for (p = table[i]; p; p = next)      {	next = p->next_same_hash;	if (p->in_memory	    && (all		|| (nonscalar && p->in_struct)		|| cse_rtx_addr_varies_p (p->exp)))	  remove_from_table (p, i);      }}int cse_rtx_addr_varies_p(void *x) { return 0; }void remove_from_table(struct table_elt *x, int y) { abort (); }intmain(){  struct write_data writes;  struct table_elt elt;  __builtin_memset(&elt, 0, sizeof(elt));  elt.in_memory = 1;  table[0] = &elt;  __builtin_memset(&writes, 0, sizeof(writes));  writes.var = 1;  writes.nonscalar = 1;  invalidate_memory(&writes);  return 0;}

⌨️ 快捷键说明

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