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

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

?? jump.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
		      newjpos = 0;		      /* TARGET is nonzero if it is ok to cross jump			 to code before TARGET.  If so, see if matches.  */		      find_cross_jump (insn, JUMP_LABEL (insn), 1,				       &newjpos, &newlpos);		      /* If cannot cross jump to code before the label,			 see if we can cross jump to another jump to			 the same label.  */		      /* Try each other jump to this label.  */		      if (INSN_UID (JUMP_LABEL (insn)) < max_uid)			for (target = jump_chain[INSN_UID (JUMP_LABEL (insn))];			     target != 0 && newjpos == 0;			     target = jump_chain[INSN_UID (target)])			  if (target != insn			      && JUMP_LABEL (target) == JUMP_LABEL (insn)			      /* Ignore TARGET if it's deleted.  */			      && ! INSN_DELETED_P (target))			    find_cross_jump (insn, target, 2,					     &newjpos, &newlpos);		      if (newjpos != 0)			{			  do_cross_jump (insn, newjpos, newlpos);			  changed = 1;			  next = insn;			}		    }		}	    }	  else if (GET_CODE (insn) == JUMP_INSN		   && GET_CODE (PATTERN (insn)) == RETURN)	    {	      /* Return insns all "jump to the same place"		 so we can cross-jump between any two of them.  */	      if (cross_jump)		{		  rtx newjpos, newlpos, target;		  newjpos = 0;		  /* If cannot cross jump to code before the label,		     see if we can cross jump to another jump to		     the same label.  */		  /* Try each other jump to this label.  */		  for (target = jump_chain[0];		       target != 0 && newjpos == 0;		       target = jump_chain[INSN_UID (target)])		    if (target != insn			&& ! INSN_DELETED_P (target)			&& GET_CODE (PATTERN (target)) == RETURN)		      find_cross_jump (insn, target, 2,				       &newjpos, &newlpos);		  if (newjpos != 0)		    {		      do_cross_jump (insn, newjpos, newlpos);		      changed = 1;		      next = insn;		    }		}	    }	}      first = 0;    }  /* See if there is still a NOTE_INSN_FUNCTION_END in this function.     If so, delete it, and record that this function can drop off the end.  */  insn = last_insn;  {    int n_labels = 1;    while (insn	   /* One label can follow the end-note: the return label.  */	   && ((GET_CODE (insn) == CODE_LABEL && n_labels-- > 0)	       /* Ordinary insns can follow it if returning a structure.  */	       || GET_CODE (insn) == INSN	       /* If machine uses explicit RETURN insns, no epilogue,		  then one of them follows the note.  */	       || (GET_CODE (insn) == JUMP_INSN		   && GET_CODE (PATTERN (insn)) == RETURN)	       /* Other kinds of notes can follow also.  */	       || (GET_CODE (insn) == NOTE		   && NOTE_LINE_NUMBER (insn) != NOTE_INSN_FUNCTION_END)))      insn = PREV_INSN (insn);  }  if (insn && GET_CODE (insn) == NOTE      && NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_END)    {      extern int current_function_returns_null;      current_function_returns_null = 1;      delete_insn (insn);    }}/* Compare the instructions before insn E1 with those before E2.   Assume E1 is a jump that jumps to label E2   (that is not always true but it might as well be).   Find the longest possible equivalent sequences   and store the first insns of those sequences into *F1 and *F2.   Store zero there if no equivalent preceding instructions are found.   We give up if we find a label in stream 1.   Actually we could transfer that label into stream 2.  */static voidfind_cross_jump (e1, e2, minimum, f1, f2)     rtx e1, e2;     int minimum;     rtx *f1, *f2;{  register rtx i1 = e1, i2 = e2;  register rtx p1, p2;  rtx last1 = 0, last2 = 0;  rtx afterlast1 = 0, afterlast2 = 0;  *f1 = 0;  *f2 = 0;  while (1)    {      i1 = PREV_INSN (i1);      while (i1 && GET_CODE (i1) == NOTE)	i1 = PREV_INSN (i1);      i2 = PREV_INSN (i2);      while (i2 && (GET_CODE (i2) == NOTE || GET_CODE (i2) == CODE_LABEL))	i2 = PREV_INSN (i2);      if (i1 == 0)	break;      /* Don't allow the range of insns preceding E1 or E2	 to include the other (E2 or E1).  */      if (i2 == e1 || i1 == e2)	break;      /* If we will get to this code by jumping, those jumps will be	 tensioned to go directly to the new label (before I2),	 so this cross-jumping won't cost extra.  So reduce the minimum.  */      if (GET_CODE (i1) == CODE_LABEL)	{	  --minimum;	  break;	}      if (i2 == 0 || GET_CODE (i1) != GET_CODE (i2))	break;      p1 = PATTERN (i1);      p2 = PATTERN (i2);	      if (GET_CODE (p1) != GET_CODE (p2)	  || !rtx_renumbered_equal_p (p1, p2))	{	  /* Insns fail to match; cross jumping is limited to the following	     insns.  */	  /* Don't allow the insn after a compare to be shared by cross-jumping	     unless the compare is also shared.	     Here, if either of these non-matching insns is a compare,	     exclude the following insn from possible cross-jumping.  */	  if (sets_cc0_p (p1) || sets_cc0_p (p2))	    last1 = afterlast1, last2 = afterlast2, ++minimum;	  /* If cross-jumping here will feed a jump-around-jump optimization,	     this jump won't cost extra, so reduce the minimum.  */	  if (GET_CODE (i1) == JUMP_INSN	      && JUMP_LABEL (i1)	      && prev_real_insn (JUMP_LABEL (i1)) == e1)	    --minimum;	  break;	}      if (GET_CODE (p1) != USE && GET_CODE (p1) != CLOBBER)	{	  /* Ok, this insn is potentially includable in a cross-jump here.  */	  afterlast1 = last1, afterlast2 = last2;	  last1 = i1, last2 = i2, --minimum;	}    }  if (minimum <= 0 && last1 != 0)    *f1 = last1, *f2 = last2;}static voiddo_cross_jump (insn, newjpos, newlpos)     rtx insn, newjpos, newlpos;{  register rtx label;  /* Find an existing label at this point     or make a new one if there is none.  */  label = PREV_INSN (newlpos);  while (label && GET_CODE (label) == NOTE)    label = PREV_INSN (label);  if (label == 0 || GET_CODE (label) != CODE_LABEL)    {      label = gen_label_rtx ();      emit_label_after (label, PREV_INSN (newlpos));      LABEL_NUSES (label) = 0;    }  /* Make the same jump insn jump to the new point.  */  if (GET_CODE (PATTERN (insn)) == RETURN)    {      extern rtx gen_jump ();      PATTERN (insn) = gen_jump (label);      INSN_CODE (insn) = -1;      JUMP_LABEL (insn) = label;      LABEL_NUSES (label)++;    }  else    redirect_jump (insn, label);  /* Delete the matching insns before the jump.  */  newjpos = PREV_INSN (newjpos);  while (NEXT_INSN (newjpos) != insn)    /* Don't delete line numbers.  */    if (GET_CODE (NEXT_INSN (newjpos)) != NOTE)      delete_insn (NEXT_INSN (newjpos));    else      newjpos = NEXT_INSN (newjpos);}/* Move all block-beg and block-end notes between START and END   out before START.  Assume neither START nor END is such a note.  */static voidsqueeze_block_notes (start, end)     rtx start, end;{  rtx insn;  rtx next;  for (insn = start; insn != end; insn = next)    {      next = NEXT_INSN (insn);      if (GET_CODE (insn) == NOTE	  && (NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_END	      || NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_BEG))	{	  rtx prev = PREV_INSN (insn);	  PREV_INSN (insn) = PREV_INSN (start);	  NEXT_INSN (insn) = start;	  NEXT_INSN (PREV_INSN (insn)) = insn;	  PREV_INSN (NEXT_INSN (insn)) = insn;	  NEXT_INSN (prev) = next;	  PREV_INSN (next) = prev;	}    }}/* Return 1 if INSN is a jump that jumps to right after TARGET   only on the condition that TARGET itself would drop through.   Assumes that TARGET is a conditional jump.  */static intjump_back_p (insn, target)     rtx insn, target;{  rtx cinsn, ctarget, prev;  enum rtx_code codei, codet;  if (simplejump_p (insn) || ! condjump_p (insn)      || simplejump_p (target))    return 0;  if (target != prev_real_insn (JUMP_LABEL (insn)))    return 0;  /* Verify that the condition code was based on a fixed-point computation.     Using reverse_condition is invalid for IEEE floating point with nans.  */  prev = prev_real_insn (insn);  if (! (prev != 0	 && GET_CODE (prev) == INSN	 && GET_CODE (PATTERN (prev)) == SET	 && SET_DEST (PATTERN (prev)) == cc0_rtx	 && (GET_MODE_CLASS (GET_MODE (SET_SRC (PATTERN (prev)))) == MODE_INT	     || (GET_CODE (SET_SRC (PATTERN (prev))) == COMPARE		 && (GET_MODE_CLASS (GET_MODE (XEXP (SET_SRC (PATTERN (prev)), 0)))		     == MODE_INT)))))    return 0;  cinsn = XEXP (SET_SRC (PATTERN (insn)), 0);  ctarget = XEXP (SET_SRC (PATTERN (target)), 0);  codei = GET_CODE (cinsn);  codet = GET_CODE (ctarget);  if (XEXP (SET_SRC (PATTERN (insn)), 1) == pc_rtx)    codei = reverse_condition (codei);  if (XEXP (SET_SRC (PATTERN (target)), 2) == pc_rtx)    codet = reverse_condition (codet);  return (codei == codet	  && rtx_renumbered_equal_p (XEXP (cinsn, 0), XEXP (ctarget, 0))	  && rtx_renumbered_equal_p (XEXP (cinsn, 1), XEXP (ctarget, 1)));}/* Given an rtx-code for a comparison, return the code   for the negated comparison.   WATCH OUT!  reverse_condition is not safe to use on a jump   that might be acting on the results of an IEEE floating point comparison,   because of the special treatment of non-signaling nans in comparisons.  */static enum rtx_codereverse_condition (code)     enum rtx_code code;{  switch (code)    {    case EQ:      return NE;    case NE:      return EQ;    case GT:      return LE;    case GE:      return LT;    case LT:      return GE;    case LE:      return GT;    case GTU:      return LEU;    case GEU:      return LTU;    case LTU:      return GEU;    case LEU:      return GTU;    default:      abort ();      return UNKNOWN;    }}/* Return 1 if INSN is an unconditional jump and nothing else.  */intsimplejump_p (insn)     rtx insn;{  register rtx x = PATTERN (insn);  if (GET_CODE (x) != SET)    return 0;  if (GET_CODE (SET_DEST (x)) != PC)    return 0;  if (GET_CODE (SET_SRC (x)) != LABEL_REF)    return 0;  return 1;}/* Return nonzero if INSN is a (possibly) conditional jump   and nothing more.  */intcondjump_p (insn)     rtx insn;{  register rtx x = PATTERN (insn);  if (GET_CODE (x) != SET)    return 0;  if (GET_CODE (SET_DEST (x)) != PC)    return 0;  if (GET_CODE (SET_SRC (x)) == LABEL_REF)    return 1;  if (GET_CODE (SET_SRC (x)) != IF_THEN_ELSE)    return 0;  if (XEXP (SET_SRC (x), 2) == pc_rtx      && GET_CODE (XEXP (SET_SRC (x), 1)) == LABEL_REF)    return 1;  if (XEXP (SET_SRC (x), 1) == pc_rtx      && GET_CODE (XEXP (SET_SRC (x), 2)) == LABEL_REF)    return 1;  return 0;}/* Return 1 if X is an RTX that does nothing but set the condition codes   and CLOBBER or USE registers.   Return -1 if X does explicitly set the condition codes,   but also does other things.  */intsets_cc0_p (x)     rtx x;{  if (GET_CODE (x) == SET && SET_DEST (x) == cc0_rtx)    return 1;  if (GET_CODE (x) == PARALLEL)    {      int i;      int sets_cc0 = 0;      int other_things = 0;      for (i = XVECLEN (x, 0) - 1; i >= 0; i--)	{	  if (GET_CODE (XVECEXP (x, 0, i)) == SET	      && SET_DEST (XVECEXP (x, 0, i)) == cc0_rtx)	    sets_cc0 = 1;	  else if (GET_CODE (XVECEXP (x, 0, i)) == SET)	    other_things = 1;	}      return ! sets_cc0 ? 0 : other_things ? -1 : 1;    }  return 0;}/* Return 1 if in between BEG and END there is no CODE_LABEL insn.  */intno_labels_between_p (beg, end)     rtx beg, end;{  register rtx p;  for (p = beg; p != end; p = NEXT_INSN (p))    if (GET_CODE (p) == CODE_LABEL)      return 0;  return 1;}/* Return the last INSN, CALL_INSN or JUMP_INSN before LABEL;   or 0, if there is none.  */rtxprev_real_insn (label)     rtx label;{  register rtx insn = PREV_INSN (label);  register RTX_CODE code;  while (1)    {      if (insn == 0)	return 0;      code = GET_CODE (insn);      if (code == INSN || code == CALL_INSN || code == JUMP_INSN)	break;      insn = PREV_INSN (insn);    }  return insn;}/* Return the next INSN, CALL_INSN or JUMP_INSN after LABEL;   or 0, if there is none.  */rtxnext_real_insn (label)     rtx label;{  register rtx insn = NEXT_INSN (label);  register RTX_CODE code;  while (1)    {      if (insn == 0)	return insn;      code = GET_CODE (insn);      if (code == INSN || code == CALL_INSN || code == JUMP_INSN)	break;      insn = NEXT_INSN (insn);    }  return insn;}/* Return the next CODE_LABEL after the insn INSN, or 0 if there is none.  */rtxnext_label (insn)     rtx insn;{  do insn = NEXT_INSN (insn);  while (insn != 0 && GET_CODE (insn) != CODE_LABEL);  return insn;}/* Follow any unconditional jump at LABEL;   return the ultimate label reached by any such chain of jumps.   If LABEL is not followed by a jump, return LABEL.   If IGNORE_LOOPS is 0, we do not chain across a NOTE_INSN_LOOP_BEG.  */static rtxfollow_jumps (label, ignore_loops)     rtx label;     int ignore_loops;{  register rtx insn;  register rtx next;  register rtx value = label;  register int depth;  for (depth = 0;       (depth < 10	&& (insn = next_real_insn (value)) != 0	&& GET_CODE (insn) == JUMP_INSN	&& JUMP_LABEL (insn) != 0	&& (next = NEXT_INSN (insn))	&& GET_CODE (next) == BARRIER);       depth++)    {      /* Don't chain through the insn that jumps into a loop	 from outside the loop,	 since that would create multiple loop entry jumps	 and prevent loop optimization.  */      rtx tem;      if (!ignore_loops)	for (tem = value; tem != insn; tem = NEXT_INSN (tem))	  if (GET_CODE (tem) == NOTE	      && NOTE_LINE_NUMBER (tem) == NOTE_INSN_LOOP_BEG)	    return value;      /* If we have found a cycle, make the insn jump to itself.  */      if (JUMP_LABEL (insn) == label)	break;      value = JUMP_LABEL (insn);    }  return value;}/* Assuming that field IDX of X is a vector of label_refs,   replace each of them by the ultimate label reached by it.   Return nonzero if a change is made.   If IGNORE_LOOPS is 0, we do not chain across a NOTE_INSN_LOOP_BEG.  */static inttension_vector_labels (x, idx, ignore_loops)     register rtx x;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天视频一区| www.色精品| 亚欧色一区w666天堂| 久久精品夜色噜噜亚洲aⅴ| 欧美在线999| av在线免费不卡| 国产又黄又大久久| 蜜桃视频一区二区| 亚洲一区二区三区国产| 中文字幕一区在线| 国产欧美日韩亚州综合| 精品精品欲导航| 欧美电影影音先锋| 欧美乱妇15p| 欧美性大战久久久久久久蜜臀| 国产成人精品午夜视频免费| 午夜婷婷国产麻豆精品| 一区二区三区四区蜜桃| 亚洲天堂精品视频| 1000部国产精品成人观看| 欧美日韩精品电影| 色94色欧美sute亚洲线路一久| 91久久精品一区二区| 日韩一级视频免费观看在线| 国产激情一区二区三区四区| 精品国产三级电影在线观看| 国产亚洲一区二区三区| 亚洲日穴在线视频| 日韩激情一二三区| 国产成人精品免费网站| 99久久夜色精品国产网站| 成人av中文字幕| 日本二三区不卡| 精品国产一区二区在线观看| 欧美一区二区三区播放老司机| 精品国产第一区二区三区观看体验| 日韩精品一区二区在线| 国产精品一区三区| 91美女在线视频| 欧美一级搡bbbb搡bbbb| 免费高清视频精品| 日韩—二三区免费观看av| 精品亚洲porn| aaa欧美大片| 日韩欧美色综合网站| 国产精品久久久久四虎| 午夜久久电影网| 懂色av一区二区三区免费看| 成年人国产精品| 久久久精品日韩欧美| 加勒比av一区二区| 欧美丰满少妇xxxxx高潮对白 | 国产精品护士白丝一区av| 三级精品在线观看| 欧洲亚洲国产日韩| 亚洲视频免费看| 国产白丝精品91爽爽久久| 欧美丰满美乳xxx高潮www| 一区在线观看视频| 国产在线精品免费| 日韩欧美国产综合在线一区二区三区| 日韩欧美黄色影院| 在线电影一区二区三区| 性久久久久久久久| 99久久精品国产毛片| 最好看的中文字幕久久| 国产成人8x视频一区二区 | 日日夜夜免费精品视频| 欧美三级日韩三级国产三级| 亚洲人123区| 欧美色偷偷大香| 国产精品视频九色porn| 久久爱www久久做| 欧美v日韩v国产v| 另类小说欧美激情| 欧美一区二区三区在线观看视频| 亚洲国产一二三| 欧美日韩一区二区三区不卡| 亚洲自拍欧美精品| 欧美视频你懂的| 亚洲gay无套男同| 欧美剧情片在线观看| 午夜成人在线视频| 91精品国产综合久久福利| 麻豆视频观看网址久久| 精品粉嫩aⅴ一区二区三区四区| 九色|91porny| 国产精品少妇自拍| av在线播放不卡| 一区二区理论电影在线观看| 色婷婷亚洲精品| 亚洲国产成人porn| 日韩欧美精品在线| 国产精品乡下勾搭老头1| 中文字幕的久久| a在线播放不卡| 亚洲欧美在线高清| 欧美日韩一二区| 国产高清亚洲一区| 亚洲国产sm捆绑调教视频 | 91免费视频网址| 韩国视频一区二区| 婷婷国产v国产偷v亚洲高清| 国产免费成人在线视频| 久久久综合网站| 91香蕉视频在线| 天堂成人国产精品一区| 国产婷婷色一区二区三区| 色综合久久综合网97色综合| 蜜桃视频在线观看一区| 欧美国产日韩亚洲一区| 亚洲精品在线三区| 在线观看国产精品网站| 欧美在线免费观看视频| 成人午夜精品一区二区三区| 紧缚奴在线一区二区三区| 免费xxxx性欧美18vr| 亚洲男人的天堂在线观看| 久久精品亚洲精品国产欧美| 欧美一区二区三区思思人| 色婷婷综合久久久久中文一区二区| 精品在线一区二区三区| 亚洲成人激情社区| 亚洲欧美一区二区三区极速播放| 日韩一级大片在线观看| 日本高清不卡aⅴ免费网站| 欧美吻胸吃奶大尺度电影| 国产美女精品人人做人人爽| 亚洲va在线va天堂| 国产成人在线视频免费播放| 午夜精品一区二区三区电影天堂| 亚洲国产乱码最新视频| 午夜精品久久久久久久久久 | 欧美国产日本韩| 国产欧美日韩在线看| 国产精品乱码一区二区三区软件 | 亚洲综合偷拍欧美一区色| 亚洲精选免费视频| 亚洲国产精品天堂| 日韩成人午夜精品| 韩国三级在线一区| 国产精品影视天天线| 不卡的电影网站| 狠狠色丁香婷综合久久| 国产精品拍天天在线| 成人免费在线播放视频| 国产日韩欧美一区二区三区综合| 欧美一二三四区在线| 欧美人狂配大交3d怪物一区| 国产精品人成在线观看免费| 欧美福利电影网| 欧美在线一区二区| 麻豆成人91精品二区三区| 亚洲天堂网中文字| 中文子幕无线码一区tr| 日韩精品资源二区在线| 欧美日韩激情一区二区三区| 国产suv精品一区二区6| 免费在线观看一区| 亚洲mv大片欧洲mv大片精品| 亚洲另类色综合网站| 国产精品免费视频观看| 久久综合色一综合色88| 欧美一区二视频| 在线综合亚洲欧美在线视频| 欧亚洲嫩模精品一区三区| 成人免费高清视频在线观看| 国产福利91精品一区二区三区| 美女在线一区二区| 日韩精品亚洲一区| 天天影视色香欲综合网老头| 亚洲欧美日韩精品久久久久| 中文字幕日本乱码精品影院| 中文在线资源观看网站视频免费不卡 | 欧美肥胖老妇做爰| 国产亚洲欧洲997久久综合| 日韩国产欧美三级| 一本一道波多野结衣一区二区 | 久久99精品久久久| 激情综合五月天| 色av综合在线| 欧美特级限制片免费在线观看| 色呦呦一区二区三区| 欧美写真视频网站| 精品免费99久久| 久久99精品视频| 久久久www成人免费无遮挡大片| 亚洲一区自拍偷拍| 日韩免费看网站| 一区二区三区中文在线| 国产精品1区2区| 欧美一级二级三级乱码| 亚洲精品国产视频| 国产伦精一区二区三区| 欧美精品久久99久久在免费线| 中文字幕免费不卡| 久久91精品国产91久久小草| 欧美日韩中文另类| 国产精品理伦片| 国产麻豆视频一区|