From 82220036f6aff4fce8fc563a13bc591b0b10bfd9 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Sat, 13 Nov 2010 18:32:46 +0100 Subject: [PATCH] mips.md (call_internal): Pass curr_insn to mips_split_call. gcc/ 2010-11-03 Uros Bizjak * config/mips/mips.md (call_internal): Pass curr_insn to mips_split_call. (call_internal_direct): Ditto. (call_value_internal): Ditto. (call_value_internal_direct): Ditto. (call_value_multiple_internal): Ditto. * config/mips/mips.c (mips_split_call): Do not copy CALL_INSN_FUNCTION_USAGE here. From-SVN: r166717 --- gcc/ChangeLog | 11 +++++++++++ gcc/config/mips/mips.c | 6 +----- gcc/config/mips/mips.md | 22 ++++++++++------------ 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 08dd481a6a8..ee276116dea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2010-11-13 Uros Bizjak + + * config/mips/mips.md (call_internal): Pass curr_insn to + mips_split_call. + (call_internal_direct): Ditto. + (call_value_internal): Ditto. + (call_value_internal_direct): Ditto. + (call_value_multiple_internal): Ditto. + * config/mips/mips.c (mips_split_call): Do not copy + CALL_INSN_FUNCTION_USAGE here. + 2010-11-13 Mingming Sun * doc/invoke.texi (MIPS Options): Add loongson3a processor. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index de587a50747..242cc27f47c 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -6520,11 +6520,7 @@ mips_expand_call (enum mips_call_type type, rtx result, rtx addr, void mips_split_call (rtx insn, rtx call_pattern) { - rtx new_insn; - - new_insn = emit_call_insn (call_pattern); - CALL_INSN_FUNCTION_USAGE (new_insn) - = copy_rtx (CALL_INSN_FUNCTION_USAGE (insn)); + emit_call_insn (call_pattern); if (!find_reg_note (insn, REG_NORETURN, 0)) /* Pick a temporary register that is suitable for both MIPS16 and non-MIPS16 code. $4 and $5 are used for returning complex double diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index 2f9b77933fb..2379eeb861e 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -6051,18 +6051,16 @@ ;; But once we generate the separate insns, it becomes obvious that ;; $gp is not live on entry to the call. ;; -;; ??? The operands[2] = insn check is a hack to make the original insn -;; available to the splitter. (define_insn_and_split "call_internal" [(call (mem:SI (match_operand 0 "call_insn_operand" "c,S")) (match_operand 1 "" "")) (clobber (reg:SI RETURN_ADDR_REGNUM))] "" { return TARGET_SPLIT_CALLS ? "#" : MIPS_CALL ("jal", operands, 0, 1); } - "reload_completed && TARGET_SPLIT_CALLS && (operands[2] = insn)" + "reload_completed && TARGET_SPLIT_CALLS" [(const_int 0)] { - mips_split_call (operands[2], gen_call_split (operands[0], operands[1])); + mips_split_call (curr_insn, gen_call_split (operands[0], operands[1])); DONE; } [(set_attr "jal" "indirect,direct")]) @@ -6087,10 +6085,10 @@ (clobber (reg:SI RETURN_ADDR_REGNUM))] "" { return TARGET_SPLIT_CALLS ? "#" : MIPS_CALL ("jal", operands, 0, -1); } - "reload_completed && TARGET_SPLIT_CALLS && (operands[2] = insn)" + "reload_completed && TARGET_SPLIT_CALLS" [(const_int 0)] { - mips_split_call (operands[2], + mips_split_call (curr_insn, gen_call_direct_split (operands[0], operands[1])); DONE; } @@ -6126,10 +6124,10 @@ (clobber (reg:SI RETURN_ADDR_REGNUM))] "" { return TARGET_SPLIT_CALLS ? "#" : MIPS_CALL ("jal", operands, 1, 2); } - "reload_completed && TARGET_SPLIT_CALLS && (operands[3] = insn)" + "reload_completed && TARGET_SPLIT_CALLS" [(const_int 0)] { - mips_split_call (operands[3], + mips_split_call (curr_insn, gen_call_value_split (operands[0], operands[1], operands[2])); DONE; @@ -6155,10 +6153,10 @@ (clobber (reg:SI RETURN_ADDR_REGNUM))] "" { return TARGET_SPLIT_CALLS ? "#" : MIPS_CALL ("jal", operands, 1, -1); } - "reload_completed && TARGET_SPLIT_CALLS && (operands[3] = insn)" + "reload_completed && TARGET_SPLIT_CALLS" [(const_int 0)] { - mips_split_call (operands[3], + mips_split_call (curr_insn, gen_call_value_direct_split (operands[0], operands[1], operands[2])); DONE; @@ -6187,10 +6185,10 @@ (clobber (reg:SI RETURN_ADDR_REGNUM))] "" { return TARGET_SPLIT_CALLS ? "#" : MIPS_CALL ("jal", operands, 1, 2); } - "reload_completed && TARGET_SPLIT_CALLS && (operands[4] = insn)" + "reload_completed && TARGET_SPLIT_CALLS" [(const_int 0)] { - mips_split_call (operands[4], + mips_split_call (curr_insn, gen_call_value_multiple_split (operands[0], operands[1], operands[2], operands[3])); DONE;