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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? stmt.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
struct goto_fixup{  /* Points to following fixup.  */  struct goto_fixup *next;  /* Points to the insn before the jump insn.     If more code must be inserted, it goes after this insn.  */  rtx before_jump;  /* The LABEL_DECL that this jump is jumping to, or 0     for break, continue or return.  */  tree target;  /* The CODE_LABEL rtx that this is jumping to.  */  rtx target_rtl;  /* Number of binding contours started in current function     before the label reference.  */  int block_start_count;  /* The outermost stack level that should be restored for this jump.     Each time a binding contour that resets the stack is exited,     if the target label is *not* yet defined, this slot is updated.  */  rtx stack_level;  /* List of lists of cleanup expressions to be run by this goto.     There is one element for each block that this goto is within.     The TREE_VALUE contains the cleanup list of that block as of the     time this goto was seen.     The TREE_ADDRESSABLE flag is 1 for a block that has been exited.  */  tree cleanup_list_list;};static struct goto_fixup *goto_fixup_chain;/* Within any binding contour that must restore a stack level,   all labels are recorded with a chain of these structures.  */struct label_chain{  /* Points to following fixup.  */  struct label_chain *next;  tree label;};/* Specify the location in the RTL code of a label BODY,   which is a LABEL_DECL tree node.   This is used for the kind of label that the user can jump to with a   goto statement, and for alternatives of a switch or case statement.   RTL labels generated for loops and conditionals don't go through here;   they are generated directly at the RTL level, by other functions below.   Note that this has nothing to do with defining label *names*.   Languages vary in how they do that and what that even means.  */voidexpand_label (body)     tree body;{  struct label_chain *p;  do_pending_stack_adjust ();  emit_label (label_rtx (body));  if (stack_block_stack != 0)    {      p = (struct label_chain *) oballoc (sizeof (struct label_chain));      p->next = stack_block_stack->data.block.label_chain;      stack_block_stack->data.block.label_chain = p;      p->label = body;    }}/* Generate RTL code for a `goto' statement with target label BODY.   BODY should be a LABEL_DECL tree node that was or will later be   defined with `expand_label'.  */voidexpand_goto (body)     tree body;{  expand_goto_internal (body, label_rtx (body), 0);}/* Generate RTL code for a `goto' statement with target label BODY.   LABEL should be a LABEL_REF.   LAST_INSN, if non-0, is the rtx we should consider as the last   insn emitted (for the purposes of cleaning up a return).  */static voidexpand_goto_internal (body, label, last_insn)     tree body;     rtx label;     rtx last_insn;{  struct nesting *block;  rtx stack_level = 0;  if (GET_CODE (label) != CODE_LABEL)    abort ();  /* If label has already been defined, we can tell now     whether and how we must alter the stack level.  */  if (PREV_INSN (label) != 0)    {      /* Find the innermost pending block that contains the label.	 (Check containment by comparing insn-uids.)	 Then restore the outermost stack level within that block,	 and do cleanups of all blocks contained in it.  */      for (block = block_stack; block; block = block->next)	{	  if (INSN_UID (block->data.block.first_insn) < INSN_UID (label))	    break;	  if (block->data.block.stack_level != 0)	    stack_level = block->data.block.stack_level;	  /* Execute the cleanups for blocks we are exiting.  */	  if (block->data.block.cleanups != 0)	    expand_cleanups (block->data.block.cleanups, 0);	}      if (stack_level)	emit_move_insn (stack_pointer_rtx, stack_level);      if (body != 0 && TREE_PACKED (body))	error ("jump to `%s' invalidly jumps into binding contour",	       IDENTIFIER_POINTER (DECL_NAME (body)));    }  /* Label not yet defined: may need to put this goto     on the fixup list.  */  else if (! expand_fixup (body, label, last_insn))    {      /* No fixup needed.  Record that the label is the target	 of at least one goto that has no fixup.  */      if (body != 0)	TREE_ADDRESSABLE (body) = 1;    }  emit_jump (label);}/* Generate if necessary a fixup for a goto   whose target label in tree structure (if any) is TREE_LABEL   and whose target in rtl is RTL_LABEL.   If LAST_INSN is nonzero, we pretend that the jump appears   after insn LAST_INSN instead of at the current point in the insn stream.   The fixup will be used later to insert insns at this point   to restore the stack level as appropriate for the target label.   Value is nonzero if a fixup is made.  */static intexpand_fixup (tree_label, rtl_label, last_insn)     tree tree_label;     rtx rtl_label;     rtx last_insn;{  struct nesting *block, *end_block;  /* See if we can recognize which block the label will be output in.     This is possible in some very common cases.     If we succeed, set END_BLOCK to that block.     Otherwise, set it to 0.  */  if (cond_stack      && (rtl_label == cond_stack->data.cond.else_label	  || rtl_label == cond_stack->data.cond.after_label))    end_block = cond_stack;  /* If we are in a loop, recognize certain labels which     are likely targets.  This reduces the number of fixups     we need to create.  */  else if (loop_stack      && (rtl_label == loop_stack->data.loop.start_label	  || rtl_label == loop_stack->data.loop.end_label	  || rtl_label == loop_stack->data.loop.continue_label))    end_block = loop_stack;  else    end_block = 0;  /* Now set END_BLOCK to the binding level to which we will return.  */  if (end_block)    {      struct nesting *next_block = end_block->all;      block = block_stack;      /* First see if the END_BLOCK is inside the innermost binding level.	 If so, then no cleanups or stack levels are relevant.  */      while (next_block && next_block != block)	next_block = next_block->all;      if (next_block)	return 0;      /* Otherwise, set END_BLOCK to the innermost binding level	 which is outside the relevant control-structure nesting.  */      next_block = block_stack->next;      for (block = block_stack; block != end_block; block = block->all)	if (block == next_block)	  next_block = next_block->next;      end_block = next_block;    }  /* Does any containing block have a stack level or cleanups?     If not, no fixup is needed, and that is the normal case     (the only case, for standard C).  */  for (block = block_stack; block != end_block; block = block->next)    if (block->data.block.stack_level != 0	|| block->data.block.cleanups != 0)      break;  if (block != end_block)    {      /* Ok, a fixup is needed.  Add a fixup to the list of such.  */      struct goto_fixup *fixup	= (struct goto_fixup *) oballoc (sizeof (struct goto_fixup));      /* In case an old stack level is restored, make sure that comes	 after any pending stack adjust.  */      do_pending_stack_adjust ();      fixup->before_jump = last_insn ? last_insn : get_last_insn ();      fixup->target = tree_label;      fixup->target_rtl = rtl_label;      fixup->block_start_count = block_start_count;      fixup->stack_level = 0;      fixup->cleanup_list_list	= (block->data.block.outer_cleanups || block->data.block.cleanups	   ? tree_cons (0, block->data.block.cleanups,			block->data.block.outer_cleanups)	   : 0);      fixup->next = goto_fixup_chain;      goto_fixup_chain = fixup;    }  return block != 0;}/* When exiting a binding contour, process all pending gotos requiring fixups.   THISBLOCK is the structure that describes the block being exited.   STACK_LEVEL is the rtx for the stack level to restore exiting this contour.   CLEANUP_LIST is a list of expressions to evaluate on exiting this contour.   FIRST_INSN is the insn that began this contour.   Gotos that jump out of this contour must restore the   stack level and do the cleanups before actually jumping.   DONT_JUMP_IN nonzero means report error there is a jump into this   contour from before the beginning of the contour.   This is also done if STACK_LEVEL is nonzero.  */static voidfixup_gotos (thisblock, stack_level, cleanup_list, first_insn, dont_jump_in)     struct nesting *thisblock;     rtx stack_level;     tree cleanup_list;     rtx first_insn;     int dont_jump_in;{  register struct goto_fixup *f, *prev;  /* F is the fixup we are considering; PREV is the previous one.  */  for (prev = 0, f = goto_fixup_chain; f; prev = f, f = f->next)    {      /* Test for a fixup that is inactive because it is already handled.  */      if (f->before_jump == 0)	{	  /* Delete inactive fixup from the chain, if that is easy to do.  */	  if (prev != 0)	    prev->next = f->next;	}      /* Has this fixup's target label been defined?	 If so, we can finalize it.  */      else if (PREV_INSN (f->target_rtl) != 0)	{	  rtx after_label = f->target_rtl;	  while (after_label != 0 && GET_CODE (after_label) == CODE_LABEL)	    after_label = NEXT_INSN (after_label);	  /* If this fixup jumped into this contour from before the beginning	     of this contour, report an error.  */	  /* ??? Bug: this does not detect jumping in through intermediate	     blocks that have stack levels or cleanups.	     It detects only a problem with the innermost block	     around the label.  */	  if (f->target != 0	      && (dont_jump_in || stack_level || cleanup_list)	      /* If AFTER_LABEL is 0, it means the jump goes to the end		 of the rtl, which means it jumps into this scope.  */	      && (after_label == 0		  || INSN_UID (first_insn) < INSN_UID (after_label))	      && INSN_UID (first_insn) > INSN_UID (f->before_jump)	      && ! TREE_REGDECL (f->target))	    {	      error_with_decl (f->target,			       "label `%s' used before containing binding contour");	      /* Prevent multiple errors for one label.  */	      TREE_REGDECL (f->target) = 1;	    }	  /* Execute cleanups for blocks this jump exits.  */	  if (f->cleanup_list_list)	    {	      tree lists;	      for (lists = f->cleanup_list_list; lists; lists = TREE_CHAIN (lists))		/* Marked elements correspond to blocks that have been closed.		   Do their cleanups.  */		if (TREE_ADDRESSABLE (lists)		    && TREE_VALUE (lists) != 0)		  fixup_cleanups (TREE_VALUE (lists), &f->before_jump);	    }	  /* Restore stack level for the biggest contour that this	     jump jumps out of.  */	  if (f->stack_level)	    emit_insn_after (gen_move_insn (stack_pointer_rtx, f->stack_level),			     f->before_jump);	  f->before_jump = 0;	}      /* Label has still not appeared.  If we are exiting a block with	 a stack level to restore, that started before the fixup,	 mark this stack level as needing restoration	 when the fixup is later finalized.	 Also mark the cleanup_list_list element for F	 that corresponds to this block, so that ultimately	 this block's cleanups will be executed by the code above.  */      /* Note: if THISBLOCK == 0 and we have a label that hasn't appeared,	 it means the label is undefined.  That's erroneous, but possible.  */      else if (thisblock != 0	       && (thisblock->data.block.block_start_count		   < f->block_start_count))	{	  tree lists = f->cleanup_list_list;	  for (; lists; lists = TREE_CHAIN (lists))	    /* If the following elt. corresponds to our containing block	       then the elt. must be for this block.  */	    if (TREE_CHAIN (lists) == thisblock->data.block.outer_cleanups)	      TREE_ADDRESSABLE (lists) = 1;	  if (stack_level)	    f->stack_level = stack_level;	}    }}/* Generate RTL for an asm statement (explicit assembler code).   BODY is a STRING_CST node containing the assembler code text.  */voidexpand_asm (body)     tree body;{  emit_insn (gen_rtx (ASM_INPUT, VOIDmode,		      TREE_STRING_POINTER (body)));  last_expr_type = 0;}/* Generate RTL for an asm statement with arguments.   STRING is the instruction template.   OUTPUTS is a list of output arguments (lvalues); INPUTS a list of inputs.   Each output or input has an expression in the TREE_VALUE and   a constraint-string in the TREE_PURPOSE.   CLOBBERS is a list of STRING_CST nodes each naming a hard register   that is clobbered by this insn.   Not all kinds of lvalue that may appear in OUTPUTS can be stored directly.   Some elements of OUTPUTS may be replaced with trees representing temporary   values.  The caller should copy those temporary values to the originally   specified lvalues.   VOL nonzero means the insn is volatile; don't optimize it.  */voidexpand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)     tree string, outputs, inputs, clobbers;     int vol;     char *filename;     int line;{  rtvec argvec, constraints;  rtx body;  int ninputs = list_length (inputs);  int noutputs = list_length (outputs);  int nclobbers = list_length (clobbers);  tree tail;  register int i;  /* Vector of RTX's of evaluated output operands.  */  rtx *output_rtx = (rtx *) alloca (noutputs * sizeof (rtx));  /* The insn we have emitted.  */  rtx insn;  last_expr_type = 0;  for (i = 0, tail = outputs; tail; tail = TREE_CHAIN (tail), i++)    {      tree val = TREE_VALUE (tail);      tree val1;      int j;      int found_equal;      /* If there's an erroneous arg, emit no insn.  */      if (TREE_TYPE (val) == error_mark_node)	return;      /* Make sure constraint has `=' and does not have `+'.  */      found_equal = 0;      for (j = 0; j < TREE_STRING_LENGTH (TREE_PURPOSE (tail)); j++)	{	  if (TREE_STRING_POINTER (TREE_PURPOSE (tail))[j] == '+')	    {	      error ("output operand constraint contains `+'");	      return;	    }	  if (TREE_STRING_POINTER (TREE_PURPOSE (tail))[j] == '=')	    found_equal = 1;	}      if (! found_equal)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人小视频| 亚洲高清免费在线| 久久成人羞羞网站| 日韩欧美国产午夜精品| 麻豆精品一区二区av白丝在线| 3d动漫精品啪啪| 蓝色福利精品导航| 国产欧美一区二区精品忘忧草| 国产在线视频一区二区三区| 26uuu色噜噜精品一区| 成人毛片视频在线观看| 国产精品青草综合久久久久99| 色综合一区二区| 五月天激情小说综合| 日韩欧美一级二级三级| 成人性生交大片免费看中文网站| 国产精品天天摸av网| 91极品视觉盛宴| 日韩av网站免费在线| xnxx国产精品| 99久久免费国产| 五月天国产精品| 久久久久久亚洲综合| 91.com视频| www国产成人免费观看视频 深夜成人网| 亚洲一区国产视频| 毛片av中文字幕一区二区| 国产福利一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美极品另类videosde| 午夜免费久久看| 99re免费视频精品全部| 精品国产91久久久久久久妲己| 亚洲欧洲精品一区二区三区| 亚洲精品美国一| 日韩一区二区三区精品视频| 成人免费黄色在线| 免播放器亚洲一区| 国产精品美女久久久久aⅴ| 欧美日韩一级二级三级| 丰满少妇在线播放bd日韩电影| 亚洲综合一二区| 国产精品免费视频一区| 91精选在线观看| 91麻豆.com| 国产91丝袜在线观看| 日韩黄色小视频| 亚洲激情av在线| 中文字幕欧美日韩一区| 日韩欧美黄色影院| 欧美日韩精品综合在线| 91小视频在线免费看| 国产黄人亚洲片| 日本在线不卡视频一二三区| 亚洲人午夜精品天堂一二香蕉| 精品成人一区二区三区| 欧美精品1区2区3区| 91浏览器在线视频| 成人精品电影在线观看| 国产一区二区不卡在线| 欧美aaaaa成人免费观看视频| 亚洲手机成人高清视频| 国产欧美精品在线观看| 精品少妇一区二区三区| 91精品国产黑色紧身裤美女| 盗摄精品av一区二区三区| 麻豆成人综合网| 日本亚洲视频在线| 日韩成人一级大片| 午夜视频在线观看一区二区三区| 亚洲欧美日韩国产中文在线| 国产精品美女久久久久高潮| 国产视频一区在线观看| 精品国产乱码久久| 欧美电视剧免费全集观看| 日韩三级电影网址| 日韩欧美123| 精品久久久久久久久久久久久久久久久| 欧美精品一卡二卡| 欧美一区二区三区免费在线看 | 不卡的看片网站| 亚洲日本韩国一区| 日本美女一区二区三区视频| 久久尤物电影视频在线观看| 欧美体内she精视频| 欧美日韩精品欧美日韩精品| 精品无码三级在线观看视频| 一区二区中文字幕在线| 久久久www免费人成精品| 欧美一区二区三区视频免费| 色婷婷激情一区二区三区| 韩国精品免费视频| 欧美日韩免费高清一区色橹橹 | 色香色香欲天天天影视综合网| 成人国产免费视频| 91在线观看污| 欧美色图片你懂的| 在线91免费看| 久久先锋资源网| 欧美极品少妇xxxxⅹ高跟鞋| 自拍视频在线观看一区二区| 亚洲激情图片小说视频| 午夜精品久久久久久久99水蜜桃| 日韩电影在线一区二区三区| 狠狠色2019综合网| 成人国产视频在线观看| 欧美剧情电影在线观看完整版免费励志电影 | 91精品综合久久久久久| 欧美一级夜夜爽| 国产三级三级三级精品8ⅰ区| 国产精品福利一区二区| 亚洲h精品动漫在线观看| 另类的小说在线视频另类成人小视频在线 | 白白色亚洲国产精品| 欧美在线|欧美| 欧美xxxxx裸体时装秀| 亚洲欧洲成人av每日更新| 亚洲国产精品久久久男人的天堂| 久久精品国产99| 91网站在线观看视频| 欧美一区二区三区白人| 中文字幕av一区二区三区高 | 日本怡春院一区二区| 国产精品一区二区久久精品爱涩| 99久久99久久精品免费观看| 欧美老年两性高潮| 中文字幕不卡一区| 美女视频第一区二区三区免费观看网站| 高清成人在线观看| 欧美欧美欧美欧美首页| 国产精品伦一区二区三级视频| 日韩电影在线观看电影| 91色九色蝌蚪| 精品视频1区2区| 国产三级久久久| 91亚洲精品一区二区乱码| 国产精品美女一区二区在线观看| 亚洲一区二区三区在线看| 国v精品久久久网| 亚洲欧美成人一区二区三区| 亚洲成人av资源| 色综合天天综合网国产成人综合天 | 国产精品美女www爽爽爽| 精品三级在线看| 亚州成人在线电影| 99久久99久久精品免费看蜜桃| 在线电影一区二区三区| 亚洲欧洲无码一区二区三区| 国内成+人亚洲+欧美+综合在线| 91极品视觉盛宴| 最新不卡av在线| 国产91精品一区二区麻豆亚洲| 8v天堂国产在线一区二区| 亚洲黄一区二区三区| 成人av电影在线| 国产农村妇女毛片精品久久麻豆 | 国内偷窥港台综合视频在线播放| 欧美日韩另类国产亚洲欧美一级| 中文字幕一区二区三区在线不卡 | 中文字幕在线一区免费| 国产一区二区免费视频| 欧美xxxxx牲另类人与| 蜜桃av一区二区在线观看| 欧美日韩免费观看一区二区三区 | 午夜一区二区三区在线观看| 日本韩国一区二区三区| 亚洲伦理在线精品| 波多野结衣欧美| 中文字幕一区二区三区乱码在线| 国产米奇在线777精品观看| www欧美成人18+| 国产精品一区二区久激情瑜伽 | 成人黄色a**站在线观看| 国产日韩精品一区二区三区在线| 精彩视频一区二区| 久久久久久亚洲综合影院红桃| 精品午夜久久福利影院| 久久久久久免费毛片精品| 国产一区二区0| 国产精品久久久久久福利一牛影视| 成人午夜激情影院| 国产精品乱人伦一区二区| 不卡的看片网站| 亚洲综合精品久久| 欧美日本免费一区二区三区| 亚洲电影在线播放| 日韩女优毛片在线| 国产91精品一区二区麻豆网站| 亚洲人成网站色在线观看| 欧美日韩亚洲综合| 蜜臀久久久99精品久久久久久| 精品国偷自产国产一区| 国产精品国产三级国产三级人妇| 欧美肥大bbwbbw高潮| 91麻豆精品国产91久久久久久| 亚洲一区二区在线免费看| 中文字幕一区二区三区四区不卡 | 欧美日韩美少妇| 91精品国产品国语在线不卡| 成人免费视频caoporn|