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

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

?? stmt.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
   ACTUALS is a list of actual parameter expressions (chain of TREE_LISTs).   FORMALS is the chain of decls of formals.   Return 1 if this can be done;   otherwise return 0 and do not emit any code.  */static inttail_recursion_args (actuals, formals)     tree actuals, formals;{  register tree a = actuals, f = formals;  register int i;  register rtx *argvec;  /* Check that number and types of actuals are compatible     with the formals.  This is not always true in valid C code.     Also check that no formal needs to be addressable     and that all formals are scalars.  */  /* Also count the args.  */  for (a = actuals, f = formals, i = 0; a && f; a = TREE_CHAIN (a), f = TREE_CHAIN (f), i++)    {      if (TREE_TYPE (TREE_VALUE (a)) != TREE_TYPE (f))	return 0;      if (GET_CODE (DECL_RTL (f)) != REG || DECL_MODE (f) == BLKmode)	return 0;    }  if (a != 0 || f != 0)    return 0;  /* Compute all the actuals.  */  argvec = (rtx *) alloca (i * sizeof (rtx));  for (a = actuals, i = 0; a; a = TREE_CHAIN (a), i++)    argvec[i] = expand_expr (TREE_VALUE (a), 0, VOIDmode, 0);  /* Find which actual values refer to current values of previous formals.     Copy each of them now, before any formal is changed.  */  for (a = actuals, i = 0; a; a = TREE_CHAIN (a), i++)    {      int copy = 0;      register int j;      for (f = formals, j = 0; j < i; f = TREE_CHAIN (f), j++)	if (reg_mentioned_p (DECL_RTL (f), argvec[i]))	  { copy = 1; break; }      if (copy)	argvec[i] = copy_to_reg (argvec[i]);    }  /* Store the values of the actuals into the formals.  */  for (f = formals, a = actuals, i = 0; f;       f = TREE_CHAIN (f), a = TREE_CHAIN (a), i++)    {      if (DECL_MODE (f) == GET_MODE (argvec[i]))	emit_move_insn (DECL_RTL (f), argvec[i]);      else	convert_move (DECL_RTL (f), argvec[i],		      TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a))));    }  return 1;}/* Generate the RTL code for entering a binding contour.   The variables are declared one by one, by calls to `expand_decl'.   EXIT_FLAG is nonzero if this construct should be visible to   `exit_something'.  */voidexpand_start_bindings (exit_flag)     int exit_flag;{  struct nesting *thisblock    = (struct nesting *) xmalloc (sizeof (struct nesting));  rtx note = emit_note (0, NOTE_INSN_BLOCK_BEG);  /* Make an entry on block_stack for the block we are entering.  */  thisblock->next = block_stack;  thisblock->all = nesting_stack;  thisblock->depth = ++nesting_depth;  thisblock->data.block.stack_level = 0;  thisblock->data.block.cleanups = 0;  /* We build this even if the cleanups lists are empty     because we rely on having an element in the chain     for each block that is pending.  */  thisblock->data.block.outer_cleanups    = (block_stack       ? tree_cons (NULL_TREE, block_stack->data.block.cleanups,		    block_stack->data.block.outer_cleanups)       : 0);  thisblock->data.block.label_chain = 0;  thisblock->data.block.innermost_stack_block = stack_block_stack;  thisblock->data.block.first_insn = note;  thisblock->data.block.block_start_count = ++block_start_count;  thisblock->exit_label = exit_flag ? gen_label_rtx () : 0;  block_stack = thisblock;  nesting_stack = thisblock;}/* Output a USE for any register use in RTL.   This is used with -noreg to mark the extent of lifespan   of any registers used in a user-visible variable's DECL_RTL.  */voiduse_variable (rtl)     rtx rtl;{  if (GET_CODE (rtl) == REG)    /* This is a register variable.  */    emit_insn (gen_rtx (USE, VOIDmode, rtl));  else if (GET_CODE (rtl) == SUBREG)    use_variable (SUBREG_REG (rtl));  else if (GET_CODE (rtl) == MEM	   && GET_CODE (XEXP (rtl, 0)) == REG	   && XEXP (rtl, 0) != frame_pointer_rtx	   && XEXP (rtl, 0) != arg_pointer_rtx)    /* This is a variable-sized structure.  */    emit_insn (gen_rtx (USE, VOIDmode, XEXP (rtl, 0)));}/* Like use_variable except that it outputs the USEs after INSN   instead of at the end of the insn-chain.  */static voiduse_variable_after (rtl, insn)     rtx rtl, insn;{  if (GET_CODE (rtl) == REG)    /* This is a register variable.  */    emit_insn_after (gen_rtx (USE, VOIDmode, rtl), insn);  else if (GET_CODE (rtl) == SUBREG)    use_variable_after (SUBREG_REG (rtl), insn);  else if (GET_CODE (rtl) == MEM	   && GET_CODE (XEXP (rtl, 0)) == REG	   && XEXP (rtl, 0) != frame_pointer_rtx	   && XEXP (rtl, 0) != arg_pointer_rtx)    /* This is a variable-sized structure.  */    emit_insn_after (gen_rtx (USE, VOIDmode, XEXP (rtl, 0)), insn);}/* Generate RTL code to terminate a binding contour.   VARS is the chain of VAR_DECL nodes   for the variables bound in this contour.   MARK_ENDS is nonzero if we should put a note at the beginning   and end of this binding contour.   DONT_JUMP_IN is nonzero if it is not valid to jump into this contour.   (That is true automatically if the contour has a saved stack level.)  */voidexpand_end_bindings (vars, mark_ends, dont_jump_in)     tree vars;     int mark_ends;     int dont_jump_in;{  register struct nesting *thisblock = block_stack;  register tree decl;  if (warn_unused)    for (decl = vars; decl; decl = TREE_CHAIN (decl))      if (! TREE_USED (decl) && TREE_CODE (decl) == VAR_DECL)	warning_with_decl (decl, "unused variable `%s'");  /* Mark the beginning and end of the scope if requested.  */  if (mark_ends)    emit_note (0, NOTE_INSN_BLOCK_END);  else    /* Get rid of the beginning-mark if we don't make an end-mark.  */    NOTE_LINE_NUMBER (thisblock->data.block.first_insn) = NOTE_INSN_DELETED;  if (thisblock->exit_label)    {      do_pending_stack_adjust ();      emit_label (thisblock->exit_label);    }  if (dont_jump_in      || thisblock->data.block.stack_level != 0      || thisblock->data.block.cleanups != 0)    {      struct label_chain *chain;      /* Any labels in this block are no longer valid to go to.	 Mark them to cause an error message.  */      for (chain = thisblock->data.block.label_chain; chain; chain = chain->next)	{	  TREE_PACKED (chain->label) = 1;	  /* If any goto without a fixup came to this label,	     that must be an error, because gotos without fixups	     come from outside all saved stack-levels and all cleanups.  */	  if (TREE_ADDRESSABLE (chain->label))	    error_with_decl (chain->label,			     "label `%s' used before containing binding contour");	}    }  /* Restore stack level in effect before the block     (only if variable-size objects allocated).  */  if (thisblock->data.block.stack_level != 0      || thisblock->data.block.cleanups != 0)    {      /* Perform any cleanups associated with the block.  */      expand_cleanups (thisblock->data.block.cleanups, 0);      /* Restore the stack level.  */      if (thisblock->data.block.stack_level != 0)	{	  do_pending_stack_adjust ();	  emit_move_insn (stack_pointer_rtx,			  thisblock->data.block.stack_level);	}      /* Any gotos out of this block must also do these things.	 Also report any gotos with fixups that came to labels in this level.  */      fixup_gotos (thisblock,		   thisblock->data.block.stack_level,		   thisblock->data.block.cleanups,		   thisblock->data.block.first_insn,		   dont_jump_in);    }  /* If doing stupid register allocation, make sure lives of all     register variables declared here extend thru end of scope.  */  if (obey_regdecls)    for (decl = vars; decl; decl = TREE_CHAIN (decl))      {	rtx rtl = DECL_RTL (decl);	if (TREE_CODE (decl) == VAR_DECL && rtl != 0)	  use_variable (rtl);      }  /* Restore block_stack level for containing block.  */  stack_block_stack = thisblock->data.block.innermost_stack_block;  POPSTACK (block_stack);}/* Generate RTL for the automatic variable declaration DECL.   (Other kinds of declarations are simply ignored if seen here.)   CLEANUP is an expression to be executed at exit from this binding contour;   for example, in C++, it might call the destructor for this variable.   If CLEANUP contains any SAVE_EXPRs, then you must preevaluate them   either before or after calling `expand_decl' but before compiling   any subsequent expressions.  This is because CLEANUP may be expanded   more than once, on different branches of execution.   For the same reason, CLEANUP may not contain a CALL_EXPR   except as its topmost node--else `preexpand_calls' would get confused.   If CLEANUP is nonzero and DECL is zero, we record a cleanup   that is not associated with any particular variable.   There is no special support here for C++ constructors.   They should be handled by the proper code in DECL_INITIAL.  */voidexpand_decl (decl, cleanup)     register tree decl;     tree cleanup;{  struct nesting *thisblock = block_stack;  tree type;    /* Record the cleanup if there is one.  */  if (cleanup != 0)    {      thisblock->data.block.cleanups	= temp_tree_cons (decl, cleanup, thisblock->data.block.cleanups);      /* If this block has a cleanup, it belongs in stack_block_stack.  */      stack_block_stack = thisblock;    }  if (decl == NULL_TREE)    {      /* This was a cleanup with no variable.  */      if (cleanup == 0)	abort ();      return;    }  type = TREE_TYPE (decl);  /* Aside from that, only automatic variables need any expansion done.     Static and external variables, and external functions,     will be handled by `assemble_variable' (called from finish_decl).     TYPE_DECL and CONST_DECL require nothing.     PARM_DECLs are handled in `assign_parms'.  */  if (TREE_CODE (decl) != VAR_DECL)    return;  if (TREE_STATIC (decl) || TREE_EXTERNAL (decl))    return;  /* Create the RTL representation for the variable.  */  if (type == error_mark_node)    DECL_RTL (decl) = gen_rtx (MEM, BLKmode, const0_rtx);  else if (DECL_SIZE (decl) == 0)    /* Variable with incomplete type.  */    {      if (DECL_INITIAL (decl) == 0)	/* Error message was already done; now avoid a crash.  */	DECL_RTL (decl) = assign_stack_local (DECL_MODE (decl), 0);      else	/* An initializer is going to decide the size of this array.	   Until we know the size, represent its address with a reg.  */	DECL_RTL (decl) = gen_rtx (MEM, BLKmode, gen_reg_rtx (Pmode));    }  else if (DECL_MODE (decl) != BLKmode	   /* If -ffloat-store, don't put explicit float vars	      into regs.  */	   && !(flag_float_store		&& TREE_CODE (type) == REAL_TYPE)	   && ! TREE_VOLATILE (decl)	   && ! TREE_ADDRESSABLE (decl)	   && (TREE_REGDECL (decl) || ! obey_regdecls))    {      /* Automatic variable that can go in a register.  */      DECL_RTL (decl) = gen_reg_rtx (DECL_MODE (decl));      if (TREE_CODE (type) == POINTER_TYPE)	mark_reg_pointer (DECL_RTL (decl));      REG_USERVAR_P (DECL_RTL (decl)) = 1;    }  else if (TREE_LITERAL (DECL_SIZE (decl)))    {      rtx oldaddr = 0;      rtx addr;      /* If we previously made RTL for this decl, it must be an array	 whose size was determined by the initializer.	 The old address was a register; set that register now	 to the proper address.  */      if (DECL_RTL (decl) != 0)	{	  if (GET_CODE (DECL_RTL (decl)) != MEM	      || GET_CODE (XEXP (DECL_RTL (decl), 0)) != REG)	    abort ();	  oldaddr = XEXP (DECL_RTL (decl), 0);	}      /* Variable of fixed size that goes on the stack.  */      DECL_RTL (decl)	= assign_stack_local (DECL_MODE (decl),			      (TREE_INT_CST_LOW (DECL_SIZE (decl))			       * DECL_SIZE_UNIT (decl)			       + BITS_PER_UNIT - 1)			      / BITS_PER_UNIT);      if (oldaddr)	{	  addr = force_operand (XEXP (DECL_RTL (decl), 0), oldaddr);	  emit_move_insn (oldaddr, addr);	}      /* If this is a memory ref that contains aggregate components,	 mark it as such for cse and loop optimize.  */      MEM_IN_STRUCT_P (DECL_RTL (decl))	= (TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE	   || TREE_CODE (TREE_TYPE (decl)) == RECORD_TYPE	   || TREE_CODE (TREE_TYPE (decl)) == UNION_TYPE);#if 0      /* If this is in memory because of -ffloat-store,	 set the volatile bit, to prevent optimizations from	 undoing the effects.  */      if (flag_float_store && TREE_CODE (type) == REAL_TYPE)	MEM_VOLATILE_P (DECL_RTL (decl)) = 1;#endif    }  else    /* Dynamic-size object: must push space on the stack.  */    {      rtx address, size;      frame_pointer_needed = 1;      /* Record the stack pointer on entry to block, if have	 not already done so.  */      if (thisblock->data.block.stack_level == 0)	{	  do_pending_stack_adjust ();	  thisblock->data.block.stack_level	    = copy_to_reg (stack_pointer_rtx);	  stack_block_stack = thisblock;	}      /* Compute the variable's size, in bytes.  */      size = expand_expr (convert_units (DECL_SIZE (decl),					 DECL_SIZE_UNIT (decl),					 BITS_PER_UNIT),			  0, VOIDmode, 0);      /* Round it up to this machine's required stack boundary.  */#ifdef STACK_BOUNDARY      /* Avoid extra code if we can prove it's a multiple already.  */      if (DECL_SIZE_UNIT (decl) % STACK_BOUNDARY)	{#ifdef STACK_POINTER_OFFSET	  /* Avoid extra code if we can prove that adding STACK_POINTER_OFFSET	     will not give this address invalid alignment.  */	  if (DECL_ALIGN (decl) > ((S

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久综合中文综合网| 日本在线观看不卡视频| 老司机午夜精品| 在线播放91灌醉迷j高跟美女| 国产精品久久久久国产精品日日| 国产成人a级片| 中文字幕中文字幕在线一区| 99国产精品久久久久久久久久| 中文字幕一区在线观看| 91女神在线视频| 亚洲高清免费观看 | 欧美中文字幕久久| 亚洲成人av电影| 欧美一卡二卡在线| 国产精品自拍av| 亚洲欧洲在线观看av| 在线精品亚洲一区二区不卡| 天堂成人国产精品一区| 日韩精品在线一区二区| 91在线一区二区三区| 亚洲成人免费在线观看| 日韩欧美在线123| 成人精品一区二区三区中文字幕| 亚洲精品日韩专区silk| 欧美一二三四区在线| 国产精品亚洲а∨天堂免在线| 亚洲色图欧洲色图| 欧美一级免费大片| 成人一区在线看| 舔着乳尖日韩一区| 国产三级精品三级| 欧美色综合网站| 国产寡妇亲子伦一区二区| 亚洲一区在线观看视频| 久久嫩草精品久久久精品一| 91香蕉视频mp4| 免费高清在线一区| 亚洲视频精选在线| 欧美电影免费观看完整版| 成人国产精品免费| 免费观看在线色综合| 综合婷婷亚洲小说| 精品国产免费久久| 欧美日韩一区高清| 成人黄色av电影| 久久aⅴ国产欧美74aaa| 一区二区三区色| 精品国产青草久久久久福利| 欧美体内she精高潮| 国产成人免费网站| 男女性色大片免费观看一区二区| 国产精品久久久久一区| 精品1区2区在线观看| 欧美日韩综合一区| 91污在线观看| 国产不卡一区视频| 精品一区二区三区免费毛片爱| 亚洲综合免费观看高清完整版在线| 国产色一区二区| 精品欧美一区二区三区精品久久| 欧美私模裸体表演在线观看| 成人精品在线视频观看| 国产成人av电影在线观看| 美国一区二区三区在线播放| 亚洲成人福利片| 亚洲色图19p| 国产人久久人人人人爽| 精品粉嫩aⅴ一区二区三区四区| 欧美日韩国产电影| 在线观看亚洲a| 色视频欧美一区二区三区| 成人av网址在线| 国产大片一区二区| 国产综合久久久久影院| 看片的网站亚洲| 免费不卡在线观看| 免费在线观看日韩欧美| 人妖欧美一区二区| 美洲天堂一区二卡三卡四卡视频 | 亚洲.国产.中文慕字在线| 亚洲精品视频一区| 一区二区三区丝袜| 亚洲高清三级视频| 亚洲va韩国va欧美va| 天天射综合影视| 免费久久99精品国产| 久久不见久久见中文字幕免费| 裸体一区二区三区| 国产一区二区美女诱惑| 国产精品影视在线观看| 韩国成人精品a∨在线观看| 国模大尺度一区二区三区| 国产在线不卡一区| 国产激情一区二区三区| 成人黄动漫网站免费app| 99国产欧美久久久精品| 日本高清视频一区二区| 欧美欧美午夜aⅴ在线观看| 91麻豆精品国产91久久久更新时间| 欧美老女人第四色| 精品日韩成人av| 国产精品久久久久久亚洲伦| 亚洲欧美另类小说| 亚洲va欧美va人人爽午夜| 青娱乐精品视频在线| 国产在线精品一区在线观看麻豆| 国产成人av一区二区三区在线观看| 99久久99久久久精品齐齐| 欧美性大战久久久久久久| 欧美乱妇一区二区三区不卡视频| 欧美大片日本大片免费观看| 欧美高清在线一区二区| 亚洲一线二线三线久久久| 秋霞av亚洲一区二区三| 成人av在线资源| 在线视频一区二区三| 日韩午夜精品电影| 中文子幕无线码一区tr| 亚洲毛片av在线| 久久精品国产在热久久| 9色porny自拍视频一区二区| 制服丝袜亚洲色图| 欧美激情在线看| 婷婷国产在线综合| 丁香另类激情小说| 91精品麻豆日日躁夜夜躁| 国产精品污网站| 丝袜国产日韩另类美女| 成人精品免费看| 337p亚洲精品色噜噜噜| 中文字幕亚洲综合久久菠萝蜜| 亚洲福利电影网| 粉嫩绯色av一区二区在线观看| 欧美精品一二三| 日本一区二区免费在线观看视频 | 国产在线一区二区综合免费视频| 一本一道久久a久久精品 | 石原莉奈在线亚洲三区| 成人网男人的天堂| 日韩欧美专区在线| 亚洲午夜免费视频| 国产成人av一区二区三区在线 | 91麻豆国产香蕉久久精品| 欧美成人三级在线| 亚洲自拍偷拍综合| www.色综合.com| 久久久久国产一区二区三区四区| 亚洲影院在线观看| 色www精品视频在线观看| 国产天堂亚洲国产碰碰| 日韩成人一区二区| 欧美三区在线视频| 国产精品久久久久久久久免费桃花 | 日本强好片久久久久久aaa| 99精品久久只有精品| 2020日本不卡一区二区视频| 亚洲成人一区二区| 91久久精品一区二区三区| 国产精品天干天干在观线| 国产九色精品成人porny| 日韩一本二本av| 七七婷婷婷婷精品国产| 91精品一区二区三区久久久久久| 亚洲高清一区二区三区| 欧美日韩视频一区二区| 欧美经典一区二区三区| 国产成人免费高清| 久久网这里都是精品| 国内精品伊人久久久久影院对白| 欧美日韩精品免费| 视频一区二区欧美| 日韩午夜精品电影| 久久精品理论片| 久久久91精品国产一区二区精品| 精品亚洲aⅴ乱码一区二区三区| 精品国一区二区三区| 六月婷婷色综合| 久久久国际精品| 国产成人在线影院| 中文字幕欧美日韩一区| 9i看片成人免费高清| 国产精品蜜臀在线观看| 成人网在线免费视频| 亚洲欧洲精品成人久久奇米网| 99精品欧美一区二区三区综合在线| 亚洲精品第1页| 欧美少妇性性性| 久久精品久久久精品美女| 精品国免费一区二区三区| 国产成人免费视频| 国产午夜亚洲精品不卡| 国产成人亚洲综合a∨猫咪| 亚洲天天做日日做天天谢日日欢| 99久久777色| 亚欧色一区w666天堂| 精品国产乱码久久久久久影片| 成人免费视频视频| 一区二区三区日韩精品视频| 日韩一区二区三区视频在线观看| 国产精品亚洲视频|