亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? genpeep.c

?? 這是完整的gcc源代碼
?? C
字號:
/* Generate code from machine description to perform peephole optimizations.   Copyright (C) 1987, 1989 Free Software Foundation, Inc.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 1, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */#include <stdio.h>#include "config.h"#include "rtl.h"#include "obstack.h"struct obstack obstack;struct obstack *rtl_obstack = &obstack;#define obstack_chunk_alloc xmalloc#define obstack_chunk_free freeextern int xmalloc ();extern void free ();/* While tree-walking an instruction pattern, we keep a chain   of these `struct link's to record how to get down to the   current position.  In each one, POS is the operand number,   and if the operand is a vector VEC is the element number.   VEC is -1 if the operand is not a vector.  */struct link{  struct link *next;  int pos;  int vecelt;};void match_rtx ();void gen_exp ();void fatal ();void fancy_abort ();int max_opno;/* Number of operands used in current peephole definition.  */int n_operands;/* Peephole optimizations get insn codes just like insn patterns.   Count them so we know the code of the define_peephole we are handling.  */int insn_code_number = 0;void print_path ();void print_code ();voidgen_peephole (peep)     rtx peep;{  int ninsns = XVECLEN (peep, 0);  int i;  n_operands = 0;  printf ("  insn = ins1;\n");#if 0  printf ("  want_jump = 0;\n");#endif  for (i = 0; i < ninsns; i++)    {      if (i > 0)	{	  printf ("  do { insn = NEXT_INSN (insn);\n");	  printf ("       if (insn == 0) goto L%d; }\n",		  insn_code_number);	  printf ("  while (GET_CODE (insn) == NOTE);\n");	  printf ("  if (GET_CODE (insn) == CODE_LABEL\n\      || GET_CODE (insn) == BARRIER)\n    goto L%d;\n",  		  insn_code_number);	}#if 0      printf ("  if (GET_CODE (insn) == JUMP_INSN)\n");      printf ("    want_jump = JUMP_LABEL (insn);\n");#endif      printf ("  pat = PATTERN (insn);\n");      /* Walk the insn's pattern, remembering at all times the path	 down to the walking point.  */      match_rtx (XVECEXP (peep, 0, i), 0, insn_code_number);    }  /* We get this far if the pattern matches.     Now test the extra condition.  */  if (XSTR (peep, 1) && XSTR (peep, 1)[0])    printf ("  if (! (%s)) goto L%d;\n",	    XSTR (peep, 1), insn_code_number);  /* If that matches, construct new pattern and put it in the first insn.     This new pattern will never be matched.     It exists only so that insn-extract can get the operands back.     So use a simple regular form: a PARALLEL containing a vector     of all the operands.  */  printf ("  PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (%d, operands));\n", n_operands);#if 0  printf ("  if (want_jump && GET_CODE (ins1) != JUMP_INSN)\n");  printf ("    {\n");  printf ("      rtx insn2 = emit_jump_insn_before (PATTERN (ins1), ins1);\n");  printf ("      delete_insn (ins1);\n");  printf ("      ins1 = ins2;\n");  printf ("    }\n");#endif  /* Record this define_peephole's insn code in the insn,     as if it had been recognized to match this.  */  printf ("  INSN_CODE (ins1) = %d;\n",	  insn_code_number);  /* Delete the remaining insns.  */  if (ninsns > 1)    printf ("  delete_for_peephole (NEXT_INSN (ins1), insn);\n");  /* See reload1.c for insertion of NOTE which guarantees that this     cannot be zero.  */  printf ("  return NEXT_INSN (insn);\n");  printf (" L%d:\n\n", insn_code_number);}voidmatch_rtx (x, path, fail_label)     rtx x;     struct link *path;     int fail_label;{  register RTX_CODE code;  register int i;  register int len;  register char *fmt;  struct link link;  if (x == 0)    return;  code = GET_CODE (x);  switch (code)    {    case MATCH_OPERAND:      if (XINT (x, 0) > max_opno)	max_opno = XINT (x, 0);      if (XINT (x, 0) >= n_operands)	n_operands = 1 + XINT (x, 0);      printf ("  x = ");      print_path (path);      printf (";\n");      printf ("  operands[%d] = x;\n", XINT (x, 0));      if (XSTR (x, 1) && XSTR (x, 1)[0])	printf ("  if (! %s (x, %smode)) goto L%d;\n",		XSTR (x, 1), GET_MODE_NAME (GET_MODE (x)), fail_label);      return;    case MATCH_DUP:      printf ("  x = ");      print_path (path);      printf (";\n");      printf ("  if (!rtx_equal_p (operands[%d], x)) goto L%d;\n",	      XINT (x, 0), fail_label);      return;    case MATCH_OPERATOR:      if (XINT (x, 0) > max_opno)	max_opno = XINT (x, 0);      if (XINT (x, 0) >= n_operands)	n_operands = 1 + XINT (x, 0);      printf ("  x = (rtx)");      print_path (path);      printf (";\n");      printf ("  operands[%d] = x;\n", XINT (x, 0));      if (XSTR (x, 1) && XSTR (x, 1)[0])	printf ("  if (! %s (x, %smode)) goto L%d;\n",		XSTR (x, 1), GET_MODE_NAME (GET_MODE (x)), fail_label);      link.next = path;      link.vecelt = -1;      for (i = 0; i < XVECLEN (x, 2); i++)	{	  link.pos = i;	  match_rtx (XVECEXP (x, 2, i), &link, fail_label);	}      return;    case ADDRESS:      match_rtx (XEXP (x, 0), path, fail_label);      return;    }  printf ("  x = ");  print_path (path);  printf (";\n");  printf ("  if (GET_CODE (x) != ");  print_code (code);  printf (") goto L%d;\n", fail_label);  if (GET_MODE (x) != VOIDmode)    {      printf ("  if (GET_MODE (x) != %smode) goto L%d;\n",	      GET_MODE_NAME (GET_MODE (x)), fail_label);    }  link.next = path;  link.vecelt = -1;  fmt = GET_RTX_FORMAT (code);  len = GET_RTX_LENGTH (code);  for (i = 0; i < len; i++)    {      link.pos = i;      if (fmt[i] == 'e' || fmt[i] == 'u')	match_rtx (XEXP (x, i), &link, fail_label);      else if (fmt[i] == 'E')	{	  int j;	  printf ("  if (XVECLEN (x, %d) != %d) goto L%d;\n",		  i, XVECLEN (x, i), fail_label);	  for (j = XVECLEN (x, i) - 1; j >= 0; j--)	    {	      link.vecelt = j;	      match_rtx (XVECEXP (x, i, j), &link, fail_label);	    }	}      else if (fmt[i] == 'i')	{	  /* Make sure that at run time `x' is the RTX we want to test.  */	  if (i != 0)	    {	      printf ("  x = ");	      print_path (path);	      printf (";\n");	    }	  printf ("  if (XINT (x, %d) != %d) goto L%d;\n",		  i, XINT (x, i), fail_label);	}      else if (fmt[i] == 's')	{	  /* Make sure that at run time `x' is the RTX we want to test.  */	  if (i != 0)	    {	      printf ("  x = ");	      print_path (path);	      printf (";\n");	    }	  printf ("  if (strcmp (XSTR (x, %d), \"%s\")) goto L%d;\n",		  i, XSTR (x, i), fail_label);	}    }}/* Given a PATH, representing a path down the instruction's   pattern from the root to a certain point, output code to   evaluate to the rtx at that point.  */voidprint_path (path)     struct link *path;{  if (path == 0)    printf ("pat");  else if (path->vecelt >= 0)    {      printf ("XVECEXP (");      print_path (path->next);      printf (", %d, %d)", path->pos, path->vecelt);    }  else    {      printf ("XEXP (");      print_path (path->next);      printf (", %d)", path->pos);    }}voidprint_code (code)     RTX_CODE code;{  register char *p1;  for (p1 = GET_RTX_NAME (code); *p1; p1++)    {      if (*p1 >= 'a' && *p1 <= 'z')	putchar (*p1 + 'A' - 'a');      else	putchar (*p1);    }}intxmalloc (size){  register int val = malloc (size);  if (val == 0)    fatal ("virtual memory exhausted");  return val;}intxrealloc (ptr, size)     char *ptr;     int size;{  int result = realloc (ptr, size);  if (!result)    fatal ("virtual memory exhausted");  return result;}voidfatal (s, a1, a2)     char *s;{  fprintf (stderr, "genpeep: ");  fprintf (stderr, s, a1, a2);  fprintf (stderr, "\n");  exit (FATAL_EXIT_CODE);}/* More 'friendly' abort that prints the line and file.   config.h can #define abort fancy_abort if you like that sort of thing.  */voidfancy_abort (){  fatal ("Internal gcc abort.");}intmain (argc, argv)     int argc;     char **argv;{  rtx desc;  FILE *infile;  extern rtx read_rtx ();  register int c;  max_opno = -1;  obstack_init (rtl_obstack);  if (argc <= 1)    fatal ("No input file name.");  infile = fopen (argv[1], "r");  if (infile == 0)    {      perror (argv[1]);      exit (FATAL_EXIT_CODE);    }  init_rtl ();  printf ("/* Generated automatically by the program `genpeep'\n\from the machine description file `md'.  */\n\n");  printf ("#include \"config.h\"\n");  printf ("#include \"rtl.h\"\n");  printf ("#include \"regs.h\"\n");  printf ("#include \"real.h\"\n\n");  printf ("extern rtx peep_operand[];\n\n");  printf ("#define operands peep_operand\n\n");  printf ("rtx\npeephole (ins1)\n     rtx ins1;\n{\n");  printf ("  rtx insn, x, pat;\n");  printf ("  int i;\n\n");  /* Early out: no peepholes for insns followed by barriers.  */  printf ("  if (NEXT_INSN (ins1)\n");  printf ("      && GET_CODE (NEXT_INSN (ins1)) == BARRIER)\n");  printf ("    return 0;\n\n");  /* Read the machine description.  */  while (1)    {      c = read_skip_spaces (infile);      if (c == EOF)	break;      ungetc (c, infile);      desc = read_rtx (infile);      if (GET_CODE (desc) == DEFINE_PEEPHOLE)	{	  gen_peephole (desc);	  insn_code_number++;	}      if (GET_CODE (desc) == DEFINE_INSN || GET_CODE (desc) == DEFINE_EXPAND)	{	  insn_code_number++;	}    }  printf ("  return 0;\n}\n\n");  if (max_opno == -1)    max_opno = 1;  printf ("rtx peep_operand[%d];\n", max_opno + 1);  fflush (stdout);  exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产资源精品在线观看| 亚洲大型综合色站| 日本在线不卡一区| 91精品国产综合久久精品性色| 国产精品国产自产拍在线| 成人免费黄色大片| 亚洲福利视频导航| 日韩免费观看2025年上映的电影| 91色在线porny| 亚洲男同1069视频| 在线观看日韩国产| 国产精品第13页| 一区二区三区国产| 在线一区二区三区| 免费在线看一区| 国产精品国产三级国产专播品爱网| 成人国产亚洲欧美成人综合网| 麻豆精品精品国产自在97香蕉| 精品日韩99亚洲| 亚洲一区二区综合| av在线播放一区二区三区| 久久综合九色综合欧美就去吻| 亚洲成人在线观看视频| 91麻豆免费在线观看| 中文字幕av一区二区三区免费看| 久久66热偷产精品| 日韩一卡二卡三卡国产欧美| 视频一区国产视频| 欧美日韩一区 二区 三区 久久精品| 亚洲精品乱码久久久久久| 成人福利视频在线看| 国产日韩欧美麻豆| 国产精品亚洲综合一区在线观看| 日韩美女视频在线| 亚洲成人777| 欧美视频中文一区二区三区在线观看| 综合精品久久久| 色域天天综合网| 亚洲一二三区在线观看| 欧美日韩一区不卡| 轻轻草成人在线| 26uuu精品一区二区在线观看| 九九在线精品视频| 久久精品亚洲一区二区三区浴池| 高清国产午夜精品久久久久久| 中文字幕一区二区视频| 不卡的av网站| 亚洲综合成人在线| 欧美日韩电影在线播放| 日本不卡123| 2020日本不卡一区二区视频| 国产大陆精品国产| 日韩一区中文字幕| 欧美日韩夫妻久久| 韩国av一区二区三区| 中文字幕乱码久久午夜不卡| 91国偷自产一区二区开放时间| 亚洲sss视频在线视频| 欧美一级免费观看| 国产伦精品一区二区三区免费迷| 国产精品美女一区二区三区| 欧美亚洲图片小说| 久久精品二区亚洲w码| 久久九九99视频| 欧美在线短视频| 国模无码大尺度一区二区三区| 中文字幕亚洲在| 国产视频一区不卡| 亚洲在线中文字幕| 欧美电影免费观看高清完整版在| 亚洲精品久久嫩草网站秘色| 国产伦精品一区二区三区视频青涩| 99国产精品99久久久久久| 欧美年轻男男videosbes| 国产日韩欧美a| 日本午夜精品视频在线观看| 91成人看片片| 亚洲一区二区三区四区在线免费观看 | 寂寞少妇一区二区三区| 国产欧美日韩激情| 这里只有精品99re| 99亚偷拍自图区亚洲| 日本亚洲免费观看| 亚洲欧洲日韩一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 精品久久久久久久一区二区蜜臀| 成人深夜福利app| 久草这里只有精品视频| 亚洲主播在线观看| 中文一区在线播放| 日韩一区二区三区精品视频| 99精品视频中文字幕| 国产美女娇喘av呻吟久久| 偷拍与自拍一区| 一区二区三区在线高清| 精品乱人伦小说| 欧美一卡2卡3卡4卡| 国产91在线看| 激情综合网最新| 日本aⅴ亚洲精品中文乱码| 亚洲欧美一区二区三区国产精品| 久久久精品一品道一区| 日韩精品一区二区三区在线播放| 欧美人xxxx| 欧美日韩亚洲丝袜制服| 99re这里都是精品| www.色综合.com| www.久久久久久久久| 成人午夜视频免费看| 国产1区2区3区精品美女| 国产一区不卡精品| 国产自产视频一区二区三区| 国产在线播精品第三| 久热成人在线视频| 奇米一区二区三区av| 青草av.久久免费一区| 日韩精品国产欧美| 青椒成人免费视频| 欧美福利一区二区| 精品欧美乱码久久久久久1区2区| 欧美一a一片一级一片| 色综合一区二区| 色婷婷av一区二区| 一本久久a久久精品亚洲| 91久久人澡人人添人人爽欧美| 91片在线免费观看| 在线免费精品视频| 欧美精品丝袜久久久中文字幕| 91精品在线一区二区| 欧美一卡二卡在线| 26uuuu精品一区二区| 国产日本一区二区| 国产精品久久久久久久久免费相片 | 欧美不卡一区二区三区四区| 337p粉嫩大胆色噜噜噜噜亚洲| 久久久美女毛片| 91香蕉视频mp4| 欧美岛国在线观看| 久久综合久久鬼色| 久久精品欧美日韩精品| 亚洲国产精品av| 亚洲麻豆国产自偷在线| 一区二区三区四区亚洲| 亚洲v精品v日韩v欧美v专区| 捆绑变态av一区二区三区| 国产麻豆午夜三级精品| 国产suv精品一区二区883| 一本大道久久a久久精品综合| 在线不卡中文字幕| 久久免费美女视频| 亚洲精品日日夜夜| 九色综合狠狠综合久久| av电影在线观看不卡| 欧美日韩精品免费观看视频| 久久亚洲一级片| 亚洲成年人影院| 成人午夜在线视频| 在线91免费看| 亚洲特级片在线| 美女国产一区二区| 成人久久视频在线观看| 欧美一区二区免费观在线| 久久99久久99| 国产自产高清不卡| 91碰在线视频| 亚洲精品一区在线观看| 中文字幕中文乱码欧美一区二区 | 一本一道久久a久久精品综合蜜臀| 欧美精品乱码久久久久久| 国产精品女同互慰在线看| 丝袜美腿高跟呻吟高潮一区| 波多野结衣中文字幕一区| 精品少妇一区二区三区在线播放| 亚洲欧洲综合另类在线| 国产精品资源在线| 日韩一区二区三区视频在线| 亚洲国产一区二区三区| 成人一级片网址| www国产精品av| 青青草国产精品亚洲专区无| 精品视频一区三区九区| ...av二区三区久久精品| 国产suv精品一区二区6| ww亚洲ww在线观看国产| 久久国产精品99久久久久久老狼| 欧美中文字幕不卡| 青青草原综合久久大伊人精品优势 | 国产精品夜夜爽| 一区二区在线观看视频| 欧美一级高清大全免费观看| 91丨porny丨国产| 亚洲国产色一区| 久久久久久日产精品| 亚洲午夜免费福利视频| 色综合久久久久综合| 欧美激情自拍偷拍| 国产激情视频一区二区三区欧美| 精品国产不卡一区二区三区| 久久精品国产亚洲一区二区三区 | 久久精品国产一区二区|