*参照元 [#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 (®_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]