diff options
Diffstat (limited to 'gcc/function.cc')
-rw-r--r-- | gcc/function.cc | 77 |
1 files changed, 28 insertions, 49 deletions
diff --git a/gcc/function.cc b/gcc/function.cc index 2ad430a..48167b0 100644 --- a/gcc/function.cc +++ b/gcc/function.cc @@ -1355,8 +1355,7 @@ emit_initial_value_sets (void) start_sequence (); for (i = 0; i < ivs->num_entries; i++) emit_move_insn (ivs->entries[i].pseudo, ivs->entries[i].hard_reg); - seq = get_insns (); - end_sequence (); + seq = end_sequence (); emit_insn_at_entry (seq); } @@ -1574,8 +1573,7 @@ instantiate_virtual_regs_in_insn (rtx_insn *insn) if (x != new_rtx) emit_move_insn (new_rtx, x); - seq = get_insns (); - end_sequence (); + seq = end_sequence (); emit_insn_before (seq, insn); delete_insn (insn); @@ -1601,8 +1599,7 @@ instantiate_virtual_regs_in_insn (rtx_insn *insn) if (x != SET_DEST (set)) emit_move_insn (SET_DEST (set), x); - seq = get_insns (); - end_sequence (); + seq = end_sequence (); emit_insn_before (seq, insn); delete_insn (insn); @@ -1631,8 +1628,7 @@ instantiate_virtual_regs_in_insn (rtx_insn *insn) { start_sequence (); emit_move_insn (SET_DEST (set), new_rtx); - seq = get_insns (); - end_sequence (); + seq = end_sequence (); emit_insn_before (seq, insn); delete_insn (insn); @@ -1692,8 +1688,7 @@ instantiate_virtual_regs_in_insn (rtx_insn *insn) addr = force_reg (GET_MODE (addr), addr); x = replace_equiv_address (x, addr, true); } - seq = get_insns (); - end_sequence (); + seq = end_sequence (); if (seq) emit_insn_before (seq, insn); } @@ -1718,8 +1713,7 @@ instantiate_virtual_regs_in_insn (rtx_insn *insn) x = expand_simple_binop (GET_MODE (x), PLUS, new_rtx, gen_int_mode (offset, GET_MODE (x)), NULL_RTX, 1, OPTAB_LIB_WIDEN); - seq = get_insns (); - end_sequence (); + seq = end_sequence (); emit_insn_before (seq, insn); } break; @@ -1728,20 +1722,17 @@ instantiate_virtual_regs_in_insn (rtx_insn *insn) new_rtx = instantiate_new_reg (SUBREG_REG (x), &offset); if (new_rtx == NULL) continue; + start_sequence (); if (maybe_ne (offset, 0)) - { - start_sequence (); - new_rtx = expand_simple_binop - (GET_MODE (new_rtx), PLUS, new_rtx, - gen_int_mode (offset, GET_MODE (new_rtx)), - NULL_RTX, 1, OPTAB_LIB_WIDEN); - seq = get_insns (); - end_sequence (); - emit_insn_before (seq, insn); - } - x = simplify_gen_subreg (recog_data.operand_mode[i], new_rtx, - GET_MODE (new_rtx), SUBREG_BYTE (x)); + new_rtx = expand_simple_binop + (GET_MODE (new_rtx), PLUS, new_rtx, + gen_int_mode (offset, GET_MODE (new_rtx)), + NULL_RTX, 1, OPTAB_LIB_WIDEN); + x = force_subreg (recog_data.operand_mode[i], new_rtx, + GET_MODE (new_rtx), SUBREG_BYTE (x)); gcc_assert (x); + seq = end_sequence (); + emit_insn_before (seq, insn); break; default: @@ -1761,8 +1752,7 @@ instantiate_virtual_regs_in_insn (rtx_insn *insn) } else x = force_reg (insn_data[insn_code].operand[i].mode, x); - seq = get_insns (); - end_sequence (); + seq = end_sequence (); if (seq) emit_insn_before (seq, insn); } @@ -2945,7 +2935,7 @@ assign_parm_setup_block (struct assign_parm_data_all *all, if (stack_parm == 0) { HOST_WIDE_INT parm_align - = (STRICT_ALIGNMENT + = ((STRICT_ALIGNMENT || BITS_PER_WORD <= MAX_SUPPORTED_STACK_ALIGNMENT) ? MAX (DECL_ALIGN (parm), BITS_PER_WORD) : DECL_ALIGN (parm)); SET_DECL_ALIGN (parm, parm_align); @@ -5417,8 +5407,7 @@ expand_function_end (void) anti_adjust_stack_and_probe (max_frame_size, true); else probe_stack_range (STACK_OLD_CHECK_PROTECT, max_frame_size); - seq = get_insns (); - end_sequence (); + seq = end_sequence (); set_insn_locations (seq, prologue_location); emit_insn_before (seq, stack_check_probe_note); break; @@ -5597,8 +5586,7 @@ expand_function_end (void) { start_sequence (); clobber_return_register (); - rtx_insn *seq = get_insns (); - end_sequence (); + rtx_insn *seq = end_sequence (); emit_insn_after (seq, clobber_after); } @@ -5630,8 +5618,7 @@ expand_function_end (void) start_sequence (); emit_stack_save (SAVE_FUNCTION, &tem); - rtx_insn *seq = get_insns (); - end_sequence (); + rtx_insn *seq = end_sequence (); emit_insn_before (seq, parm_birth_insn); emit_stack_restore (SAVE_FUNCTION, tem); @@ -5663,8 +5650,7 @@ get_arg_pointer_save_area (void) start_sequence (); emit_move_insn (validize_mem (copy_rtx (ret)), crtl->args.internal_arg_pointer); - rtx_insn *seq = get_insns (); - end_sequence (); + rtx_insn *seq = end_sequence (); push_topmost_sequence (); emit_insn_after (seq, entry_of_function ()); @@ -5853,8 +5839,7 @@ make_split_prologue_seq (void) start_sequence (); emit_insn (targetm.gen_split_stack_prologue ()); - rtx_insn *seq = get_insns (); - end_sequence (); + rtx_insn *seq = end_sequence (); record_insns (seq, NULL, &prologue_insn_hash); set_insn_locations (seq, prologue_location); @@ -5890,8 +5875,7 @@ make_prologue_seq (void) if (!targetm.profile_before_prologue () && crtl->profile) emit_insn (gen_blockage ()); - seq = get_insns (); - end_sequence (); + seq = end_sequence (); set_insn_locations (seq, prologue_location); return seq; @@ -5994,16 +5978,14 @@ gen_call_used_regs_seq (rtx_insn *ret, unsigned int zero_regs_type) all call used registers. */ gcc_assert (hard_reg_set_subset_p (zeroed_hardregs, all_call_used_regs)); - rtx_insn *seq = get_insns (); - end_sequence (); + rtx_insn *seq = end_sequence (); if (seq) { /* Emit the memory blockage and register clobber asm volatile before the whole sequence. */ start_sequence (); expand_asm_reg_clobber_mem_blockage (zeroed_hardregs); - rtx_insn *seq_barrier = get_insns (); - end_sequence (); + rtx_insn *seq_barrier = end_sequence (); emit_insn_before (seq_barrier, ret); emit_insn_before (seq, ret); @@ -6272,8 +6254,7 @@ thread_prologue_and_epilogue_insns (void) { start_sequence (); targetm.emit_epilogue_for_sibcall (as_a<rtx_call_insn *> (insn)); - ep_seq = get_insns (); - end_sequence (); + ep_seq = end_sequence (); } else ep_seq = targetm.gen_sibcall_epilogue (); @@ -6282,8 +6263,7 @@ thread_prologue_and_epilogue_insns (void) start_sequence (); emit_note (NOTE_INSN_EPILOGUE_BEG); emit_insn (ep_seq); - rtx_insn *seq = get_insns (); - end_sequence (); + rtx_insn *seq = end_sequence (); /* Retain a map of the epilogue insns. Used in life analysis to avoid getting rid of sibcall epilogue insns. Do this before we @@ -6972,8 +6952,7 @@ match_asm_constraints_1 (rtx_insn *insn, rtx *p_sets, int noutputs) start_sequence (); emit_move_insn (output, copy_rtx (input)); - insns = get_insns (); - end_sequence (); + insns = end_sequence (); emit_insn_before (insns, insn); constraint = ASM_OPERANDS_OUTPUT_CONSTRAINT(SET_SRC(p_sets[match])); |