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

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

?? stmt.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
   Make an entry on loop_stack to record the labels associated with   this loop.  */voidexpand_start_loop (exit_flag)     int exit_flag;{  register struct nesting *thisloop    = (struct nesting *) xmalloc (sizeof (struct nesting));  /* Make an entry on loop_stack for the loop we are entering.  */  thisloop->next = loop_stack;  thisloop->all = nesting_stack;  thisloop->depth = ++nesting_depth;  thisloop->data.loop.start_label = gen_label_rtx ();  thisloop->data.loop.end_label = gen_label_rtx ();  thisloop->data.loop.continue_label = thisloop->data.loop.start_label;  thisloop->exit_label = exit_flag ? thisloop->data.loop.end_label : 0;  loop_stack = thisloop;  nesting_stack = thisloop;  do_pending_stack_adjust ();  emit_queue ();  emit_note (0, NOTE_INSN_LOOP_BEG);  emit_label (thisloop->data.loop.start_label);}/* Like expand_start_loop but for a loop where the continuation point   (for expand_continue_loop) will be specified explicitly.  */voidexpand_start_loop_continue_elsewhere (exit_flag)     int exit_flag;{  expand_start_loop (exit_flag);  loop_stack->data.loop.continue_label = gen_label_rtx ();}/* Specify the continuation point for a loop started with   expand_start_loop_continue_elsewhere.   Use this at the point in the code to which a continue statement   should jump.  */voidexpand_loop_continue_here (){  do_pending_stack_adjust ();  emit_note (0, NOTE_INSN_LOOP_CONT);  emit_label (loop_stack->data.loop.continue_label);}/* Finish a loop.  Generate a jump back to the top and the loop-exit label.   Pop the block off of loop_stack.  */voidexpand_end_loop (){  register rtx insn = get_last_insn ();  register rtx start_label = loop_stack->data.loop.start_label;  do_pending_stack_adjust ();  while (insn && GET_CODE (insn) == NOTE)    insn = PREV_INSN (insn);  /* If optimizing, perhaps reorder the loop.  If the loop     does not already end with a conditional branch, scan over the     insns within the loop and try to find a conditional branch which     is a loop exit.  If such an insn is found, move that insn (and     its predecessors) to the end of the loop so that the conditional     exit and the jump back can perhaps be optimized into one insn.  */  if (optimize && insn != 0      &&      ! (GET_CODE (insn) == JUMP_INSN	 && GET_CODE (PATTERN (insn)) == SET	 && SET_DEST (PATTERN (insn)) == pc_rtx	 && GET_CODE (SET_SRC (PATTERN (insn))) == IF_THEN_ELSE))    {      /* Scan insns from the top of the loop looking for a qualified	 conditional exit.  */      for (insn = loop_stack->data.loop.start_label; insn; insn= NEXT_INSN (insn))	if (GET_CODE (insn) == JUMP_INSN && GET_CODE (PATTERN (insn)) == SET	    && SET_DEST (PATTERN (insn)) == pc_rtx	    && GET_CODE (SET_SRC (PATTERN (insn))) == IF_THEN_ELSE	    &&	    ((GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 1)) == LABEL_REF	      && (XEXP (XEXP (SET_SRC (PATTERN (insn)), 1), 0)		  == loop_stack->data.loop.end_label))	     ||	     (GET_CODE (XEXP (SET_SRC (PATTERN (insn)), 2)) == LABEL_REF	      && (XEXP (XEXP (SET_SRC (PATTERN (insn)), 2), 0)		  == loop_stack->data.loop.end_label))))	  break;      if (insn != 0)	{	  /* We found one.  Move everything from there up	     to the end of the loop, and add a jump into the loop	     to jump to there.  */	  register rtx newstart_label = gen_label_rtx ();	  emit_label_after (newstart_label, PREV_INSN (start_label));	  reorder_insns (start_label, insn, get_last_insn ());	  emit_jump_insn_after (gen_jump (start_label), PREV_INSN (newstart_label));	  emit_barrier_after (PREV_INSN (newstart_label));	  start_label = newstart_label;	}    }  emit_jump (start_label);  emit_note (0, NOTE_INSN_LOOP_END);  emit_label (loop_stack->data.loop.end_label);  POPSTACK (loop_stack);  last_expr_type = 0;}/* Generate a jump to the current loop's continue-point.   This is usually the top of the loop, but may be specified   explicitly elsewhere.  If not currently inside a loop,   return 0 and do nothing; caller will print an error message.  */intexpand_continue_loop (){  last_expr_type = 0;  if (loop_stack == 0)    return 0;  expand_goto_internal (0, loop_stack->data.loop.continue_label, 0);  return 1;}/* Generate a jump to exit the current loop.  If not currently inside a loop,   return 0 and do nothing; caller will print an error message.  */intexpand_exit_loop (){  last_expr_type = 0;  if (loop_stack == 0)    return 0;  expand_goto_internal (0, loop_stack->data.loop.end_label, 0);  return 1;}/* Generate a conditional jump to exit the current loop if COND   evaluates to zero.  If not currently inside a loop,   return 0 and do nothing; caller will print an error message.  */intexpand_exit_loop_if_false (cond)     tree cond;{  last_expr_type = 0;  if (loop_stack == 0)    return 0;  do_jump (cond, loop_stack->data.loop.end_label, NULL);  return 1;}/* Return non-zero if currently inside a loop.  */intinside_loop (){  return loop_stack != 0;}/* Generate a jump to exit the current loop, conditional, binding contour   or case statement.  Not all such constructs are visible to this function,   only those started with EXIT_FLAG nonzero.  Individual languages use   the EXIT_FLAG parameter to control which kinds of constructs you can   exit this way.   If not currently inside anything that can be exited,   return 0 and do nothing; caller will print an error message.  */intexpand_exit_something (){  struct nesting *n;  last_expr_type = 0;  for (n = nesting_stack; n; n = n->all)    if (n->exit_label != 0)      {	expand_goto_internal (0, n->exit_label, 0);	return 1;      }  return 0;}/* Generate RTL to return from the current function, with no value.   (That is, we do not do anything about returning any value.)  */voidexpand_null_return (){  struct nesting *block = block_stack;  rtx last_insn = 0;  /* Does any pending block have cleanups?  */  while (block && block->data.block.cleanups == 0)    block = block->next;  /* If yes, use a goto to return, since that runs cleanups.  */  expand_null_return_1 (last_insn, block != 0);}/* Output a return with no value.  If LAST_INSN is nonzero,   pretend that the return takes place after LAST_INSN.   If USE_GOTO is nonzero then don't use a return instruction;   go to the return label instead.  This causes any cleanups   of pending blocks to be executed normally.  */static voidexpand_null_return_1 (last_insn, use_goto)     rtx last_insn;     int use_goto;{  rtx end_label = cleanup_label ? cleanup_label : return_label;  clear_pending_stack_adjust ();  do_pending_stack_adjust ();  last_expr_type = 0;  /* PCC-struct return always uses an epilogue.  */  if (current_function_returns_pcc_struct || use_goto)    {      if (end_label == 0)	end_label = return_label = gen_label_rtx ();      expand_goto_internal (0, end_label, last_insn);      return;    }  /* Otherwise output a simple return-insn if one is available,     unless it won't do the job.  */#ifdef HAVE_return  if (HAVE_return && cleanup_label == 0)    {      emit_jump_insn (gen_return ());      emit_barrier ();      return;    }#endif  /* Otherwise jump to the epilogue.  */  expand_goto_internal (0, end_label, last_insn);}/* Generate RTL to evaluate the expression RETVAL and return it   from the current function.  */voidexpand_return (retval)     tree retval;{  /* If there are any cleanups to be performed, then they will     be inserted following LAST_INSN.  It is desirable     that the last_insn, for such purposes, should be the     last insn before computing the return value.  Otherwise, cleanups     which call functions can clobber the return value.  */  /* ??? rms: I think that is erroneous, because in C++ it would     run destructors on variables that might be used in the subsequent     computation of the return value.  */  rtx last_insn = 0;  register rtx val = 0;  register rtx op0;  tree retval_rhs;  int cleanups;  struct nesting *block;  /* Are any cleanups needed?  E.g. C++ destructors to be run?  */  cleanups = 0;  for (block = block_stack; block; block = block->next)    if (block->data.block.cleanups != 0)      {	cleanups = 1;	break;      }  if (TREE_CODE (retval) == RESULT_DECL)    retval_rhs = retval;  else if ((TREE_CODE (retval) == MODIFY_EXPR || TREE_CODE (retval) == INIT_EXPR)	   && TREE_CODE (TREE_OPERAND (retval, 0)) == RESULT_DECL)    retval_rhs = TREE_OPERAND (retval, 1);  else if (TREE_TYPE (retval) == void_type_node)    /* Recognize tail-recursive call to void function.  */    retval_rhs = retval;  else    retval_rhs = NULL_TREE;  /* Only use `last_insn' if there are cleanups which must be run.  */  if (cleanups || cleanup_label != 0)    last_insn = get_last_insn ();  /* For tail-recursive call to current function,     just jump back to the beginning.     It's unsafe if any auto variable in this function     has its address taken; for simplicity,     require stack frame to be empty.  */  if (optimize && retval_rhs != 0      && frame_offset == STARTING_FRAME_OFFSET      && TREE_CODE (retval_rhs) == CALL_EXPR      && TREE_CODE (TREE_OPERAND (retval_rhs, 0)) == ADDR_EXPR      && TREE_OPERAND (TREE_OPERAND (retval_rhs, 0), 0) == this_function      /* Finish checking validity, and if valid emit code	 to set the argument variables for the new call.  */      && tail_recursion_args (TREE_OPERAND (retval_rhs, 1),			      DECL_ARGUMENTS (this_function)))    {      if (tail_recursion_label == 0)	{	  tail_recursion_label = gen_label_rtx ();	  emit_label_after (tail_recursion_label,			    tail_recursion_reentry);	}      emit_queue ();      expand_goto_internal (0, tail_recursion_label, last_insn);      emit_barrier ();      return;    }#ifdef HAVE_return  /* This optimization is safe if there are local cleanups     because expand_null_return takes care of them.     ??? I think it should also be safe when there is a cleanup label,     because expand_null_return takes care of them, too.     Any reason why not?  */  if (HAVE_return && cleanup_label == 0      && ! current_function_returns_pcc_struct)    {      /* If this is  return x == y;  then generate	 if (x == y) return 1; else return 0;	 if we can do it with explicit return insns.  */      if (retval_rhs)	switch (TREE_CODE (retval_rhs))	  {	  case EQ_EXPR:	  case NE_EXPR:	  case GT_EXPR:	  case GE_EXPR:	  case LT_EXPR:	  case LE_EXPR:	  case TRUTH_ANDIF_EXPR:	  case TRUTH_ORIF_EXPR:	  case TRUTH_AND_EXPR:	  case TRUTH_OR_EXPR:	  case TRUTH_NOT_EXPR:	    op0 = gen_label_rtx ();	    val = DECL_RTL (DECL_RESULT (this_function));	    jumpifnot (retval_rhs, op0);	    emit_move_insn (val, const1_rtx);	    emit_insn (gen_rtx (USE, VOIDmode, val));	    expand_null_return ();	    emit_label (op0);	    emit_move_insn (val, const0_rtx);	    emit_insn (gen_rtx (USE, VOIDmode, val));	    expand_null_return ();	    return;	  }    }#endif /* HAVE_return */  if (cleanups      && retval_rhs != 0      && TREE_TYPE (retval_rhs) != void_type_node      && GET_CODE (DECL_RTL (DECL_RESULT (this_function))) == REG)    {      rtx last_insn;      /* Calculate the return value into a pseudo reg.  */      val = expand_expr (retval_rhs, 0, VOIDmode, 0);      emit_queue ();      /* Put the cleanups here.  */      last_insn = get_last_insn ();      /* Copy the value into hard return reg.  */      emit_move_insn (DECL_RTL (DECL_RESULT (this_function)), val);      val = DECL_RTL (DECL_RESULT (this_function));      if (GET_CODE (val) == REG)	emit_insn (gen_rtx (USE, VOIDmode, val));      expand_null_return_1 (last_insn, cleanups);    }  else    {      /* No cleanups or no hard reg used;	 calculate value into hard return reg	 and let cleanups come after.  */      val = expand_expr (retval, 0, VOIDmode, 0);      emit_queue ();      val = DECL_RTL (DECL_RESULT (this_function));      if (val && GET_CODE (val) == REG)	emit_insn (gen_rtx (USE, VOIDmode, val));      expand_null_return ();    }}/* Return 1 if the end of the generated RTX is not a barrier.   This means code already compiled can drop through.  */intdrop_through_at_end_p (){  rtx insn = get_last_insn ();  while (insn && GET_CODE (insn) == NOTE)    insn = PREV_INSN (insn);  return insn && GET_CODE (insn) != BARRIER;}/* Emit code to alter this function's formal parms for a tail-recursive call.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲精品一区二区三区在线观看| 一二三区精品福利视频| 日韩一区二区精品在线观看| 欧美激情艳妇裸体舞| 亚洲一区av在线| 国产人久久人人人人爽| 国产精品久久久久影院亚瑟 | 欧美成人一区二区三区片免费| 91精品国产黑色紧身裤美女| 久久久五月婷婷| 欧洲一区二区三区在线| 国产精品嫩草影院com| 成人午夜激情视频| 亚洲精品日产精品乱码不卡| 国产精品一二三四五| a亚洲天堂av| 精品国产精品一区二区夜夜嗨| 久久久久久免费| 日韩一区二区三区免费观看| 亚洲高清免费视频| a亚洲天堂av| 成人av动漫在线| 99久久99久久久精品齐齐| 在线成人高清不卡| 亚洲人成网站精品片在线观看| 美腿丝袜亚洲三区| 777a∨成人精品桃花网| 午夜在线电影亚洲一区| 一本大道久久a久久综合| 一区二区三区欧美日韩| 国产精品996| 日韩毛片精品高清免费| 欧美日韩国产不卡| 久久不见久久见免费视频1| 日韩伦理av电影| 久久先锋资源网| 国产91在线看| 日韩av不卡一区二区| 国产色爱av资源综合区| 一本色道亚洲精品aⅴ| 国产一区二区h| 九九在线精品视频| 中文字幕一区三区| 在线观看欧美黄色| 久久色在线观看| 91久久一区二区| 亚洲欧美一区二区三区久本道91| eeuss鲁片一区二区三区| 国产精品无圣光一区二区| 欧美影院午夜播放| 亚洲成人免费视频| 日韩一区二区视频| 欧美精品久久久久久久多人混战| 国产999精品久久| 亚洲国产精品尤物yw在线观看| 欧美精品一区二区三区一线天视频| 色欧美乱欧美15图片| av一区二区不卡| 精品国产一区二区三区久久久蜜月| 成人高清视频在线观看| 国产麻豆视频精品| 色综合天天综合| 亚洲免费资源在线播放| 91美女视频网站| 亚洲成a人片综合在线| 欧美性感一区二区三区| 亚洲欧美日韩国产另类专区| 99久久精品免费| 亚洲精品老司机| 91麻豆精品91久久久久久清纯 | 亚洲成av人综合在线观看| 国内精品视频一区二区三区八戒 | 奇米亚洲午夜久久精品| 欧美日韩精品系列| 亚洲在线观看免费视频| 亚洲精品亚洲人成人网| 日本欧美肥老太交大片| 国产精品白丝jk黑袜喷水| 中文字幕亚洲电影| 欧美日韩免费高清一区色橹橹| 日本亚洲电影天堂| 日韩理论片网站| 欧美日韩第一区日日骚| 精品一区二区三区在线播放| 欧美精彩视频一区二区三区| 日本乱人伦aⅴ精品| 国产在线视频不卡二| 亚洲天堂中文字幕| 91精品国产综合久久久久久 | 亚洲小说欧美激情另类| 日韩一区二区在线免费观看| 国产激情偷乱视频一区二区三区| 91精品国产综合久久福利| 不卡在线观看av| 毛片av中文字幕一区二区| 国产精品精品国产色婷婷| 久久在线观看免费| 色菇凉天天综合网| 国产精品一区不卡| 狠狠狠色丁香婷婷综合激情| 亚洲天堂2016| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩成人在线| 97se狠狠狠综合亚洲狠狠| 国产精品一二一区| 免费欧美日韩国产三级电影| 中文在线资源观看网站视频免费不卡| 911精品国产一区二区在线| 成人av小说网| 国产91色综合久久免费分享| 午夜电影网一区| 亚洲伦在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美一级二级三级蜜桃| 91搞黄在线观看| 国产91精品一区二区麻豆网站| 首页国产欧美日韩丝袜| 五月天激情综合| 亚洲一区二区三区免费视频| 欧美一级在线观看| 欧美三级电影网| 色视频一区二区| 精品视频在线看| 欧美色图天堂网| av电影天堂一区二区在线观看| 国产麻豆精品一区二区| 久久不见久久见免费视频1| 美女免费视频一区| 蜜臀av亚洲一区中文字幕| 久久国产夜色精品鲁鲁99| 午夜久久久久久久久久一区二区| 天天亚洲美女在线视频| 亚洲精品国产品国语在线app| 中文字幕日韩一区二区| 亚洲精品少妇30p| 亚洲麻豆国产自偷在线| 亚洲三级在线播放| 日韩理论片一区二区| 国产不卡在线一区| 成人av电影免费观看| 97se亚洲国产综合自在线不卡 | 九九**精品视频免费播放| 日韩和欧美一区二区三区| 亚洲天天做日日做天天谢日日欢| 亚洲制服欧美中文字幕中文字幕| 亚洲激情在线播放| 亚洲色图制服诱惑| 视频一区在线播放| 久久丁香综合五月国产三级网站| 男女性色大片免费观看一区二区 | 亚洲女与黑人做爰| 日韩中文字幕一区二区三区| 免费人成网站在线观看欧美高清| 免费在线观看一区二区三区| 国产一区不卡视频| 不卡在线视频中文字幕| 欧美大片在线观看一区二区| 久久久蜜桃精品| 亚洲在线视频网站| 裸体一区二区三区| 懂色av中文一区二区三区| 欧美视频三区在线播放| 久久综合久久99| 亚洲成av人影院| 国产一区二区三区精品视频| 欧美日韩在线免费视频| 久久综合999| 一区二区三区日韩在线观看| 国产一区二区三区最好精华液| voyeur盗摄精品| 91成人免费电影| 久久久久久电影| 亚洲一区二区三区四区五区黄| 国产91在线观看丝袜| 欧美日韩一级视频| 国产精品麻豆网站| 免费在线成人网| 狠狠色综合色综合网络| 99re热这里只有精品视频| 日韩欧美在线一区二区三区| 亚洲国产日韩一级| 国产成人福利片| 欧美精品三级在线观看| 国产精品成人一区二区艾草| 蜜乳av一区二区| 91激情五月电影| 欧美一区二区三区影视| 亚洲尤物视频在线| 成人中文字幕合集| 成人av高清在线| 国产欧美精品一区二区色综合 | 97se亚洲国产综合自在线观| 日韩欧美黄色影院| 最新中文字幕一区二区三区| 经典三级视频一区| 欧美日韩国产不卡| 亚洲综合免费观看高清在线观看| 国产精品一区二区在线观看不卡| 欧美日韩一二三| 性欧美大战久久久久久久久|