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

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

?? jump.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
     register int idx;     int ignore_loops;{  int changed = 0;  register int i;  for (i = XVECLEN (x, idx) - 1; i >= 0; i--)    {      register rtx olabel = XEXP (XVECEXP (x, idx, i), 0);      register rtx nlabel = follow_jumps (olabel, ignore_loops);      if (nlabel != olabel)	{	  XEXP (XVECEXP (x, idx, i), 0) = nlabel;	  ++LABEL_NUSES (nlabel);	  if (--LABEL_NUSES (olabel) == 0)	    delete_insn (olabel);	  changed = 1;	}    }  return changed;}/* Find all CODE_LABELs referred to in X,   and increment their use counts.   Also store one of them in JUMP_LABEL (INSN) if INSN is nonzero.   Also, when there are consecutive labels,   canonicalize on the last of them.   Note that two labels separated by a loop-beginning note   must be kept distinct if we have not yet done loop-optimization,   because the gap between them is where loop-optimize   will want to move invariant code to.  CROSS_JUMP tells us   that loop-optimization is done with.  */static voidmark_jump_label (x, insn, cross_jump)     register rtx x;     rtx insn;     int cross_jump;{  register RTX_CODE code = GET_CODE (x);  register int i;  register char *fmt;  if (code == LABEL_REF)    {      register rtx label = XEXP (x, 0);      register rtx next;      if (GET_CODE (label) != CODE_LABEL)	return;      /* If there are other labels following this one,	 replace it with the last of the consecutive labels.  */      for (next = NEXT_INSN (label); next; next = NEXT_INSN (next))	{	  if (GET_CODE (next) == CODE_LABEL)	    label = next;	  else if (GET_CODE (next) != NOTE		   || NOTE_LINE_NUMBER (next) == NOTE_INSN_LOOP_BEG		   || NOTE_LINE_NUMBER (next) == NOTE_INSN_FUNCTION_END)	    break;	}      XEXP (x, 0) = label;      ++LABEL_NUSES (label);      if (insn)	JUMP_LABEL (insn) = label;      return;    }  /* Do walk the labels in a vector,     but don't set its JUMP_LABEL.  */  if (code == ADDR_VEC || code == ADDR_DIFF_VEC)    insn = 0;  fmt = GET_RTX_FORMAT (code);  for (i = GET_RTX_LENGTH (code); i >= 0; i--)    {      if (fmt[i] == 'e')	mark_jump_label (XEXP (x, i), insn, cross_jump);      else if (fmt[i] == 'E')	{	  register int j;	  for (j = 0; j < XVECLEN (x, i); j++)	    mark_jump_label (XVECEXP (x, i, j), insn, cross_jump);	}    }}/* If all INSN does is set the pc, delete it,   and delete the insn that set the condition codes for it   if that's what the previous thing was.  */static voiddelete_jump (insn)     rtx insn;{  register rtx x = PATTERN (insn);  register rtx prev;  if (GET_CODE (x) == SET      && GET_CODE (SET_DEST (x)) == PC)    {      prev = PREV_INSN (insn);      delete_insn (insn);      /* We assume that at this stage	 CC's are always set explicitly	 and always immediately before the jump that	 will use them.  So if the previous insn	 exists to set the CC's, delete it	 (unless it performs auto-increments, etc.).  */      while (prev && GET_CODE (prev) == NOTE)	prev = PREV_INSN (prev);      if (prev && GET_CODE (prev) == INSN	  && sets_cc0_p (PATTERN (prev)) > 0	  && !find_reg_note (prev, REG_INC, 0))	delete_insn (prev);    }}/* Delete insn INSN from the chain of insns and update label ref counts.   May delete some following insns as a consequence; may even delete   a label elsewhere and insns that follow it.   Returns the first insn after INSN that was not deleted.  */rtxdelete_insn (insn)     register rtx insn;{  register rtx next = NEXT_INSN (insn);  register rtx prev = PREV_INSN (insn);  while (next && INSN_DELETED_P (next))    next = NEXT_INSN (next);  /* This insn is already deleted => return first following nondeleted.  */  if (INSN_DELETED_P (insn))    return next;  /* Mark this insn as deleted.  */  INSN_DELETED_P (insn) = 1;  /* If instruction is followed by a barrier,     delete the barrier too.  */  if (next != 0 && GET_CODE (next) == BARRIER)    {      INSN_DELETED_P (next) = 1;      next = NEXT_INSN (next);    }  /* Patch out INSN (and the barrier if any) */  if (optimize)    {      if (prev)	NEXT_INSN (prev) = next;      if (next)	PREV_INSN (next)= prev;      if (prev && NEXT_INSN (prev) == 0)	set_last_insn (prev);    }  /* If deleting a jump, decrement the count of the label,     and delete the label if it is now unused.  */  if (GET_CODE (insn) == JUMP_INSN && JUMP_LABEL (insn))    if (--LABEL_NUSES (JUMP_LABEL (insn)) == 0)      {	/* This can delete NEXT or PREV,	   either directly if NEXT is JUMP_LABEL (INSN),	   or indirectly through more levels of jumps.  */	delete_insn (JUMP_LABEL (insn));	/* I feel a little doubtful about this loop,	   but I see no clean and sure alternative way	   to find the first insn after INSN that is not now deleted.	   I hope this works.  */	while (next && INSN_DELETED_P (next))	  next = NEXT_INSN (next);	return next;      }  while (prev && (INSN_DELETED_P (prev) || GET_CODE (prev) == NOTE))    prev = PREV_INSN (prev);  /* If INSN was a label and a dispatch table follows it,     delete the dispatch table.  The tablejump must have gone already.     It isn't useful to fall through into a table.  */  if (GET_CODE (insn) == CODE_LABEL      && NEXT_INSN (insn) != 0      && GET_CODE (NEXT_INSN (insn)) == JUMP_INSN      && GET_CODE (PATTERN (NEXT_INSN (insn))) == ADDR_VEC)    next = delete_insn (NEXT_INSN (insn));  /* If INSN was a label, delete insns following it if now unreachable.  */  if (GET_CODE (insn) == CODE_LABEL && prev      && GET_CODE (prev) == BARRIER)    {      register RTX_CODE code;      while (next != 0	     && ((code = GET_CODE (next)) == INSN		 || code == JUMP_INSN || code == CALL_INSN		 || code == NOTE))	{	  if (code == NOTE	      && NOTE_LINE_NUMBER (next) != NOTE_INSN_FUNCTION_END)	    next = NEXT_INSN (next);	  else	    /* Note: if this deletes a jump, it can cause more	       deletion of unreachable code, after a different label.	       As long as the value from this recursive call is correct,	       this invocation functions correctly.  */	    next = delete_insn (next);	}    }  return next;}/* Advance from INSN till reaching something not deleted   then return that.  May return INSN itself.  */rtxnext_nondeleted_insn (insn)     rtx insn;{  while (INSN_DELETED_P (insn))    insn = NEXT_INSN (insn);  return insn;}/* Delete a range of insns from FROM to TO, inclusive.   This is for the sake of peephole optimization, so assume   that whatever these insns do will still be done by a new   peephole insn that will replace them.  */voiddelete_for_peephole (from, to)     register rtx from, to;{  register rtx insn = from;  while (1)    {      register rtx next = NEXT_INSN (insn);      register rtx prev = PREV_INSN (insn);      if (GET_CODE (insn) != NOTE)	{	  INSN_DELETED_P (insn) = 1;	  /* Patch this insn out of the chain.  */	  /* We don't do this all at once, because we	     must preserve all NOTEs.  */	  if (prev)	    NEXT_INSN (prev) = next;	  if (next)	    PREV_INSN (next) = prev;	}      if (insn == to)	break;      insn = next;    }  /* Note that if TO is an unconditional jump     we *do not* delete the BARRIER that follows,     since the peephole that replaces this sequence     is also an unconditional jump in that case.  */}/* Invert the condition of the jump JUMP, and make it jump   to label NLABEL instead of where it jumps now.  */voidinvert_jump (jump, nlabel)     rtx jump, nlabel;{  register rtx olabel = JUMP_LABEL (jump);  invert_exp (PATTERN (jump), olabel, nlabel);  JUMP_LABEL (jump) = nlabel;  ++LABEL_NUSES (nlabel);  INSN_CODE (jump) = -1;  if (--LABEL_NUSES (olabel) == 0)    delete_insn (olabel);}/* Invert the jump condition of rtx X,   and replace OLABEL with NLABEL throughout.   This is used in do_jump as well as in this file.  */voidinvert_exp (x, olabel, nlabel)     rtx x;     rtx olabel, nlabel;{  register RTX_CODE code;  register int i;  register char *fmt;  if (x == 0)    return;  code = GET_CODE (x);  if (code == IF_THEN_ELSE)    {      /* Inverting the jump condition of an IF_THEN_ELSE	 means exchanging the THEN-part with the ELSE-part.  */      register rtx tem = XEXP (x, 1);      XEXP (x, 1) = XEXP (x, 2);      XEXP (x, 2) = tem;    }  if (code == LABEL_REF)    {      if (XEXP (x, 0) == olabel)	XEXP (x, 0) = nlabel;      return;    }  fmt = GET_RTX_FORMAT (code);  for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)    {      if (fmt[i] == 'e')	invert_exp (XEXP (x, i), olabel, nlabel);      if (fmt[i] == 'E')	{	  register int j;	  for (j = 0; j < XVECLEN (x, i); j++)	    invert_exp (XVECEXP (x, i, j), olabel, nlabel);	}    }}/* Make jump JUMP jump to label NLABEL instead of where it jumps now.   If the old jump target label is unused as a result,   it and the code following it may be deleted.  */voidredirect_jump (jump, nlabel)     rtx jump, nlabel;{  register rtx olabel = JUMP_LABEL (jump);  if (nlabel == olabel)    return;  redirect_exp (PATTERN (jump), olabel, nlabel);  JUMP_LABEL (jump) = nlabel;  ++LABEL_NUSES (nlabel);  INSN_CODE (jump) = -1;  if (--LABEL_NUSES (olabel) == 0)    delete_insn (olabel);}/* Throughout the rtx X,   alter (LABEL_REF OLABEL) to (LABEL_REF NLABEL).  */static voidredirect_exp (x, olabel, nlabel)     rtx x;     rtx olabel, nlabel;{  register RTX_CODE code = GET_CODE (x);  register int i;  register char *fmt;  if (code == LABEL_REF)    {      if (XEXP (x, 0) == olabel)	XEXP (x, 0) = nlabel;      return;    }  fmt = GET_RTX_FORMAT (code);  for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)    {      if (fmt[i] == 'e')	redirect_exp (XEXP (x, i), olabel, nlabel);      if (fmt[i] == 'E')	{	  register int j;	  for (j = 0; j < XVECLEN (x, i); j++)	    redirect_exp (XVECEXP (x, i, j), olabel, nlabel);	}    }}/* Like rtx_equal_p except that it considers two REGs as equal   if they renumber to the same value.  */intrtx_renumbered_equal_p (x, y)     rtx x, y;{  register int i;  register RTX_CODE code = GET_CODE (x);  register char *fmt;        if (x == y)    return 1;  if ((code == REG || (code == SUBREG && GET_CODE (SUBREG_REG (x)) == REG))      && (GET_CODE (y) == REG || (GET_CODE (y) == SUBREG				  && GET_CODE (SUBREG_REG (y)) == REG)))    {      register int j;      if (GET_MODE (x) != GET_MODE (y))	return 0;      if (code == SUBREG)	{	  i = REGNO (SUBREG_REG (x));	  if (reg_renumber[i] >= 0)	    i = reg_renumber[i];	  i += SUBREG_WORD (x);	}      else	{	  i = REGNO (x);	  if (reg_renumber[i] >= 0)	    i = reg_renumber[i];	}      if (GET_CODE (y) == SUBREG)	{	  j = REGNO (SUBREG_REG (y));	  if (reg_renumber[j] >= 0)	    j = reg_renumber[j];	  j += SUBREG_WORD (y);	}      else	{	  j = REGNO (y);	  if (reg_renumber[j] >= 0)	    j = reg_renumber[j];	}      return i == j;    }  /* Now we have disposed of all the cases      in which different rtx codes can match.  */  if (code != GET_CODE (y))    return 0;  switch (code)    {    case PC:    case CC0:    case ADDR_VEC:    case ADDR_DIFF_VEC:      return 0;    case CONST_INT:      return XINT (x, 0) == XINT (y, 0);    case LABEL_REF:      /* Two label-refs are equivalent if they point at labels	 in the same position in the instruction stream.  */      return (next_real_insn (XEXP (x, 0))	      == next_real_insn (XEXP (y, 0)));    case SYMBOL_REF:      return XSTR (x, 0) == XSTR (y, 0);    }  /* (MULT:SI x y) and (MULT:HI x y) are NOT equivalent.  */  if (GET_MODE (x) != GET_MODE (y))    return 0;  /* Compare the elements.  If any pair of corresponding elements     fail to match, return 0 for the whole things.  */  fmt = GET_RTX_FORMAT (code);  for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)    {      register int j;      switch (fmt[i])	{	case 'i':	  if (XINT (x, i) != XINT (y, i))	    return 0;	  break;	case 's':	  if (strcmp (XSTR (x, i), XSTR (y, i)))	    return 0;	  break;	case 'e':	  if (! rtx_renumbered_equal_p (XEXP (x, i), XEXP (y, i)))	    return 0;	  break;	case '0':	  break;	case 'E':	  if (XVECLEN (x, i) != XVECLEN (y, i))	    return 0;	  for (j = XVECLEN (x, i) - 1; j >= 0; j--)	    if (!rtx_renumbered_equal_p (XVECEXP (x, i, j), XVECEXP (y, i, j)))	      return 0;	  break;	default:	  abort ();	}    }  return 1;}/* If X is a hard register or equivalent to one or a subregister of one,   return the hard register number.  Otherwise, return -1.   Any rtx is valid for X.  */inttrue_regnum (x)     rtx x;{  if (GET_CODE (x) == REG)    {      if (REGNO (x) >= FIRST_PSEUDO_REGISTER)	return reg_renumber[REGNO (x)];      return REGNO (x);    }  if (GET_CODE (x) == SUBREG)    {      int base = true_regnum (SUBREG_REG (x));      if (base >= 0 && base < FIRST_PSEUDO_REGISTER)	return SUBREG_WORD (x) + base;    }  return -1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费视频网站高清观看视频| 日韩一区二区精品葵司在线| 欧美狂野另类xxxxoooo| 精品裸体舞一区二区三区| 亚洲乱码中文字幕| 国产精品夜夜嗨| 91精品国产综合久久久蜜臀粉嫩| 中文字幕亚洲在| 韩国av一区二区三区在线观看| 欧美伊人久久大香线蕉综合69| 国产区在线观看成人精品| 日韩高清在线电影| 欧美日韩一区二区三区视频 | 欧洲精品一区二区| 国产精品热久久久久夜色精品三区 | 国产美女娇喘av呻吟久久| 欧美日韩免费不卡视频一区二区三区| 国产人久久人人人人爽| 经典三级在线一区| 日韩亚洲欧美在线观看| 午夜精品视频一区| 欧美日韩亚洲国产综合| 一区二区三区在线免费| 99re热这里只有精品免费视频| 久久精品亚洲精品国产欧美| 精品在线视频一区| 日韩精品一区二区三区视频| 日韩黄色免费电影| 91麻豆精品国产自产在线观看一区 | 不卡视频在线看| 国产午夜亚洲精品理论片色戒| 久久99精品网久久| 久久婷婷色综合| 国产一区二区免费在线| 亚洲成av人片一区二区三区| 日韩精品中午字幕| 男男视频亚洲欧美| 91精品国产色综合久久不卡蜜臀 | 亚洲电影一区二区三区| 欧美亚洲国产一区二区三区va | 欧美手机在线视频| 亚洲不卡在线观看| 欧美精品tushy高清| 免费成人深夜小野草| 日韩精品中文字幕在线不卡尤物 | 国产精品久久久久久久蜜臀| eeuss鲁片一区二区三区在线看| 国产精品高潮呻吟| 99精品国产91久久久久久| 亚洲色图制服诱惑 | 久久久天堂av| 懂色av中文字幕一区二区三区| 亚洲欧美在线高清| 精品视频1区2区| 免费人成精品欧美精品| 国产亚洲欧美一级| 色综合久久综合网| 免费看黄色91| 欧美极品xxx| 欧美三区在线观看| 极品少妇xxxx精品少妇| 中文字幕二三区不卡| 欧美色老头old∨ideo| 国产一区日韩二区欧美三区| 国产精品白丝在线| 欧美精品电影在线播放| 国产精品系列在线观看| 一区二区久久久久久| 555www色欧美视频| eeuss国产一区二区三区| 亚洲成人福利片| 欧美高清一级片在线观看| 欧美伊人久久大香线蕉综合69 | 韩国欧美一区二区| 国产欧美日本一区视频| 欧美日韩国产精选| 国产成人综合网| 午夜精品福利视频网站| 国产精品网站导航| 这里只有精品视频在线观看| 大胆亚洲人体视频| 日韩高清不卡一区二区三区| 国产精品国产三级国产| 精品盗摄一区二区三区| 欧美视频在线不卡| 成人永久免费视频| 蓝色福利精品导航| 午夜影视日本亚洲欧洲精品| 国产精品久久午夜夜伦鲁鲁| 日韩精品一区二区三区在线| 欧美自拍丝袜亚洲| 97se亚洲国产综合自在线| 精品一区二区三区欧美| 午夜电影网一区| 亚洲私人影院在线观看| 国产精品视频观看| 精品国产乱码久久久久久浪潮| 欧美日韩精品免费| 色天天综合色天天久久| 99视频热这里只有精品免费| 国产伦精一区二区三区| 免费的成人av| 婷婷夜色潮精品综合在线| 亚洲情趣在线观看| 亚洲欧洲美洲综合色网| 欧美韩国日本不卡| 国产午夜亚洲精品不卡| 精品91自产拍在线观看一区| 欧美一级在线观看| 6080yy午夜一二三区久久| 欧美美女一区二区三区| 欧美主播一区二区三区美女| 色成人在线视频| 91国在线观看| 精品视频在线看| 欧美丰满少妇xxxxx高潮对白| 色婷婷av一区二区三区软件| 91视视频在线直接观看在线看网页在线看| 国产乱子轮精品视频| 国产精品影视在线| 国产成人综合在线观看| 成人va在线观看| 99视频一区二区| 欧美优质美女网站| 精品视频在线免费| 欧美大片一区二区| 精品久久久久久无| 国产精品网站在线| 一区二区三区中文字幕| 亚洲高清免费在线| 久久国产剧场电影| 国产精品 欧美精品| 波多野结衣欧美| 欧美色图免费看| 欧美videossexotv100| 国产精品私房写真福利视频| 亚洲欧美日韩国产综合| 性久久久久久久| 国产一区二区主播在线| caoporen国产精品视频| 欧美日韩视频在线第一区 | 五月天国产精品| 六月丁香婷婷久久| 菠萝蜜视频在线观看一区| 色综合天天综合在线视频| 欧美日韩色综合| 国产亚洲视频系列| 亚洲国产一区二区在线播放| 美日韩黄色大片| 99久久久国产精品免费蜜臀| 欧美人伦禁忌dvd放荡欲情| 精品国产青草久久久久福利| 日韩一区在线看| 视频一区中文字幕| 成人一区二区三区视频在线观看| 在线亚洲一区二区| 久久久精品免费观看| 一区二区三区四区在线免费观看| 久久精品国产精品亚洲精品| 99国产精品久久| 精品欧美乱码久久久久久 | 欧美挠脚心视频网站| 国产精品视频线看| 免费在线观看日韩欧美| 91亚洲国产成人精品一区二区三| 日韩亚洲电影在线| 亚洲精品成人a在线观看| 国产一区二区三区四区在线观看| 色综合久久99| 欧美激情一区二区三区在线| 亚洲va韩国va欧美va| av在线免费不卡| 久久婷婷色综合| 美女视频网站黄色亚洲| 色激情天天射综合网| 国产精品久久久久久一区二区三区| 奇米精品一区二区三区四区| 色爱区综合激月婷婷| 日本一区二区三区dvd视频在线| 日韩精品1区2区3区| 在线欧美一区二区| 综合婷婷亚洲小说| 岛国精品在线播放| 欧美国产一区视频在线观看| 国产原创一区二区| 精品日韩一区二区三区免费视频| 日韩精品久久久久久| 欧美日韩精品欧美日韩精品一| 亚洲人成精品久久久久| 91小视频免费观看| 国产精品免费久久久久| 成人激情午夜影院| 欧美国产日韩a欧美在线观看| 国产精品一区二区果冻传媒| 日韩欧美不卡在线观看视频| 蜜桃视频一区二区三区在线观看| 欧美色中文字幕| 午夜欧美视频在线观看| 777色狠狠一区二区三区| 免费在线一区观看|