*参照元 [#w197645f]
#backlinks

*説明 [#mda5557c]
-パス: [[gcc-8.3/gcc/function.c]]

-FIXME: これは何?
--説明


**引数 [#c82003f4]
-なし


**返り値 [#jba579cc]
-unsigned int
--


**参考 [#g77486f0]


*実装 [#k979218b]
 /* Pass through the INSNS of function FNDECL and convert virtual register
    references to hard register references.  */
 
 static unsigned int
 instantiate_virtual_regs (void)
 {
   rtx_insn *insn;
 
-
--[[gcc-8.3/gcc/rtx_insn]]

   /* Compute the offsets to use for this function.  */
   in_arg_offset = FIRST_PARM_OFFSET (current_function_decl);
   var_offset = targetm.starting_frame_offset ();
   dynamic_offset = STACK_DYNAMIC_OFFSET (current_function_decl);
   out_arg_offset = STACK_POINTER_OFFSET;
 #ifdef FRAME_POINTER_CFA_OFFSET
   cfa_offset = FRAME_POINTER_CFA_OFFSET (current_function_decl);
 #else
   cfa_offset = ARG_POINTER_CFA_OFFSET (current_function_decl);
 #endif
 
-
--[[gcc-8.3/gcc/FIRST_PARM_OFFSET()]]
--[[gcc-8.3/gcc/STACK_DYNAMIC_OFFSET()]]
--[[gcc-8.3/gcc/STACK_POINTER_OFFSET()]]
--[[gcc-8.3/gcc/FRAME_POINTER_CFA_OFFSET()]]
--[[gcc-8.3/gcc/ARG_POINTER_CFA_OFFSET()]]
--[[gcc-8.3/gcc/targetm(global)]]
--targetm は struct gcc_target 型
---[[gcc-8.3/gcc/gcc_target]]
--[[gcc-8.3/gcc/cuurent_function_decl(global)]]
--current_function_decl は struct tree 型
---[[gcc-8.3/gcc/tree]]

   /* Initialize recognition, indicating that volatile is OK.  */
   init_recog ();
 
-
--[[gcc-8.3/gcc/init_recog()]]

   /* Scan through all the insns, instantiating every virtual register still
      present.  */
   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
-
--[[gcc-8.3/gcc/get_insns()]]
--[[gcc-8.3/gcc/NEXT_INSN()]]

     if (INSN_P (insn))
       {
 	/* These patterns in the instruction stream can never be recognized.
 	   Fortunately, they shouldn't contain virtual registers either.  */
         if (GET_CODE (PATTERN (insn)) == USE
 	    || GET_CODE (PATTERN (insn)) == CLOBBER
 	    || GET_CODE (PATTERN (insn)) == ASM_INPUT
 	    || DEBUG_MARKER_INSN_P (insn))
 	  continue;
 	else if (DEBUG_BIND_INSN_P (insn))
 	  instantiate_virtual_regs_in_rtx (INSN_VAR_LOCATION_PTR (insn));
 	else
 	  instantiate_virtual_regs_in_insn (insn);
 
-
--[[gcc-8.3/gcc/INSN_P()]]
--[[gcc-8.3/gcc/GET_CODE()]]
--[[gcc-8.3/gcc/DEBUG_MARKER_INSN_P()]]
--[[gcc-8.3/gcc/DEBUG_BIND_INSN_P()]]
--[[gcc-8.3/gcc/instantiate_virtual_regs_in_rtx()]]
--[[gcc-8.3/gcc/INSN_VAR_LOCATION_PTR()]]
--[[gcc-8.3/gcc/instantiate_virtual_regs_in_insn()]]

 	if (insn->deleted ())
 	  continue;
 
-
--[[gcc-8.3/gcc/rtx_insn/deleted()]]

 	instantiate_virtual_regs_in_rtx (&REG_NOTES (insn));
 
-
--[[gcc-8.3/gcc/REG_NOTES()]]

 	/* Instantiate any virtual registers in CALL_INSN_FUNCTION_USAGE.  */
 	if (CALL_P (insn))
 	  instantiate_virtual_regs_in_rtx (&CALL_INSN_FUNCTION_USAGE (insn));
       }
 
-
--[[gcc-8.3/gcc/CALL_P()]]
--[[gcc-8.3/gcc/CALL_INSN_FUNCTION_USAGE()]]

   /* Instantiate the virtual registers in the DECLs for debugging purposes.  */
   instantiate_decls (current_function_decl);
 
-
--[[gcc-8.3/gcc/instantiate_decls()]]

   targetm.instantiate_decls ();
 
   /* Indicate that, from now on, assign_stack_local should use
      frame_pointer_rtx.  */
   virtuals_instantiated = 1;
 
   return 0;
 }


*コメント [#we3be0b9]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS