diff options
Diffstat (limited to 'gcc/config/rs6000/rs6000.c')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 65 |
1 files changed, 34 insertions, 31 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index fe6a9001a4e..1bb50b5fa70 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -6777,14 +6777,16 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode) return; } - if (reload_in_progress && cfun->machine->sdmode_stack_slot != NULL_RTX) - cfun->machine->sdmode_stack_slot = - eliminate_regs (cfun->machine->sdmode_stack_slot, VOIDmode, NULL_RTX); + if (reload_in_progress + && MACHINE_FUNCTION (*cfun)->sdmode_stack_slot != NULL_RTX) + MACHINE_FUNCTION (*cfun)->sdmode_stack_slot = + eliminate_regs (MACHINE_FUNCTION (*cfun)->sdmode_stack_slot, VOIDmode, + NULL_RTX); if (reload_in_progress && mode == SDmode && MEM_P (operands[0]) - && rtx_equal_p (operands[0], cfun->machine->sdmode_stack_slot) + && rtx_equal_p (operands[0], MACHINE_FUNCTION (*cfun)->sdmode_stack_slot) && REG_P (operands[1])) { if (FP_REGNO_P (REGNO (operands[1]))) @@ -6807,7 +6809,7 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode) && mode == SDmode && REG_P (operands[0]) && MEM_P (operands[1]) - && rtx_equal_p (operands[1], cfun->machine->sdmode_stack_slot)) + && rtx_equal_p (operands[1], MACHINE_FUNCTION (*cfun)->sdmode_stack_slot)) { if (FP_REGNO_P (REGNO (operands[0]))) { @@ -8509,7 +8511,7 @@ setup_incoming_varargs (CUMULATIVE_ARGS *cum, enum machine_mode mode, gcc_assert (reg_save_area == virtual_stack_vars_rtx); } - cfun->machine->varargs_save_offset = offset; + MACHINE_FUNCTION (*cfun)->varargs_save_offset = offset; save_area = plus_constant (virtual_stack_vars_rtx, offset); } } @@ -8727,9 +8729,9 @@ rs6000_va_start (tree valist, rtx nextarg) /* Find the register save area. */ t = make_tree (TREE_TYPE (sav), virtual_stack_vars_rtx); - if (cfun->machine->varargs_save_offset) + if (MACHINE_FUNCTION (*cfun)->varargs_save_offset) t = build2 (POINTER_PLUS_EXPR, TREE_TYPE (sav), t, - size_int (cfun->machine->varargs_save_offset)); + size_int (MACHINE_FUNCTION (*cfun)->varargs_save_offset)); t = build2 (MODIFY_EXPR, TREE_TYPE (sav), sav, t); TREE_SIDE_EFFECTS (t) = 1; expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); @@ -13606,13 +13608,13 @@ rs6000_secondary_memory_needed_rtx (enum machine_mode mode) ret = assign_stack_local (mode, GET_MODE_SIZE (mode), 0); else { - rtx mem = cfun->machine->sdmode_stack_slot; + rtx mem = MACHINE_FUNCTION (*cfun)->sdmode_stack_slot; gcc_assert (mem != NULL_RTX); if (!eliminated) { mem = eliminate_regs (mem, VOIDmode, NULL_RTX); - cfun->machine->sdmode_stack_slot = mem; + MACHINE_FUNCTION (*cfun)->sdmode_stack_slot = mem; eliminated = true; } ret = mem; @@ -14113,7 +14115,7 @@ rs6000_alloc_sdmode_stack_slot (void) basic_block bb; gimple_stmt_iterator gsi; - gcc_assert (cfun->machine->sdmode_stack_slot == NULL_RTX); + gcc_assert (MACHINE_FUNCTION (*cfun)->sdmode_stack_slot == NULL_RTX); FOR_EACH_BB (bb) for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) @@ -14122,8 +14124,8 @@ rs6000_alloc_sdmode_stack_slot (void) if (ret) { rtx stack = assign_stack_local (DDmode, GET_MODE_SIZE (DDmode), 0); - cfun->machine->sdmode_stack_slot = adjust_address_nv (stack, - SDmode, 0); + MACHINE_FUNCTION (*cfun)->sdmode_stack_slot + = adjust_address_nv (stack, SDmode, 0); return; } } @@ -14138,8 +14140,8 @@ rs6000_alloc_sdmode_stack_slot (void) || TYPE_MODE (DECL_ARG_TYPE (t)) == SDmode) { rtx stack = assign_stack_local (DDmode, GET_MODE_SIZE (DDmode), 0); - cfun->machine->sdmode_stack_slot = adjust_address_nv (stack, - SDmode, 0); + MACHINE_FUNCTION (*cfun)->sdmode_stack_slot + = adjust_address_nv (stack, SDmode, 0); return; } } @@ -14148,8 +14150,8 @@ rs6000_alloc_sdmode_stack_slot (void) static void rs6000_instantiate_decls (void) { - if (cfun->machine->sdmode_stack_slot != NULL_RTX) - instantiate_decl_rtl (cfun->machine->sdmode_stack_slot); + if (MACHINE_FUNCTION (*cfun)->sdmode_stack_slot != NULL_RTX) + instantiate_decl_rtl (MACHINE_FUNCTION (*cfun)->sdmode_stack_slot); } /* Given an rtx X being reloaded into a reg required to be @@ -14619,14 +14621,14 @@ rs6000_get_some_local_dynamic_name (void) { rtx insn; - if (cfun->machine->some_ld_name) - return cfun->machine->some_ld_name; + if (MACHINE_FUNCTION (*cfun)->some_ld_name) + return MACHINE_FUNCTION (*cfun)->some_ld_name; for (insn = get_insns (); insn ; insn = NEXT_INSN (insn)) if (INSN_P (insn) && for_each_rtx (&PATTERN (insn), rs6000_get_some_local_dynamic_name_1, 0)) - return cfun->machine->some_ld_name; + return MACHINE_FUNCTION (*cfun)->some_ld_name; gcc_unreachable (); } @@ -14643,7 +14645,7 @@ rs6000_get_some_local_dynamic_name_1 (rtx *px, void *data ATTRIBUTE_UNUSED) const char *str = XSTR (x, 0); if (SYMBOL_REF_TLS_MODEL (x) == TLS_MODEL_LOCAL_DYNAMIC) { - cfun->machine->some_ld_name = str; + MACHINE_FUNCTION (*cfun)->some_ld_name = str; return 1; } } @@ -17555,10 +17557,11 @@ rs6000_stack_info (void) if (TARGET_SPE) { /* Cache value so we don't rescan instruction chain over and over. */ - if (cfun->machine->insn_chain_scanned_p == 0) - cfun->machine->insn_chain_scanned_p + if (MACHINE_FUNCTION (*cfun)->insn_chain_scanned_p == 0) + MACHINE_FUNCTION (*cfun)->insn_chain_scanned_p = spe_func_has_64bit_regs_p () + 1; - info_ptr->spe_64bit_regs_used = cfun->machine->insn_chain_scanned_p - 1; + info_ptr->spe_64bit_regs_used + = MACHINE_FUNCTION (*cfun)->insn_chain_scanned_p - 1; } /* Select which calling sequence. */ @@ -17605,7 +17608,7 @@ rs6000_stack_info (void) /* Does this function call anything? */ info_ptr->calls_p = (! current_function_is_leaf - || cfun->machine->ra_needs_full_frame); + || MACHINE_FUNCTION (*cfun)->ra_needs_full_frame); /* Determine if we need to save the link register. */ if ((DEFAULT_ABI == ABI_AIX @@ -18031,7 +18034,7 @@ rs6000_return_addr (int count, rtx frame) don't try to be too clever here. */ if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic)) { - cfun->machine->ra_needs_full_frame = 1; + MACHINE_FUNCTION (*cfun)->ra_needs_full_frame = 1; return gen_rtx_MEM @@ -18044,7 +18047,7 @@ rs6000_return_addr (int count, rtx frame) RETURN_ADDRESS_OFFSET))); } - cfun->machine->ra_need_lr = 1; + MACHINE_FUNCTION (*cfun)->ra_need_lr = 1; return get_hard_reg_initial_val (Pmode, LR_REGNO); } @@ -18112,8 +18115,8 @@ rs6000_ra_ever_killed (void) if (cfun->is_thunk) return 0; - if (cfun->machine->lr_save_state) - return cfun->machine->lr_save_state - 1; + if (MACHINE_FUNCTION (*cfun)->lr_save_state) + return MACHINE_FUNCTION (*cfun)->lr_save_state - 1; /* regs_ever_live has LR marked as used if any sibcalls are present, but this should not force saving and restoring in the @@ -18289,7 +18292,7 @@ rs6000_emit_eh_reg_restore (rtx source, rtx scratch) state of lr_save_p so any change from here on would be a bug. In particular, stop rs6000_ra_ever_killed from considering the SET of lr we may have added just above. */ - cfun->machine->lr_save_state = info->lr_save_p + 1; + MACHINE_FUNCTION (*cfun)->lr_save_state = info->lr_save_p + 1; } static GTY(()) alias_set_type set = -1; @@ -19041,7 +19044,7 @@ rs6000_savres_strategy (rs6000_stack_t *info, bool savep, || sibcall || crtl->calls_eh_return || !info->lr_save_p - || cfun->machine->ra_need_lr + || MACHINE_FUNCTION (*cfun)->ra_need_lr || info->total_size > 32767); savres_fprs_inline = (common || info->first_fp_reg_save == 64 |