rs6000: r12 copy cleanup

Remove unnecessary tests before copying function address to r12.

2020-08-28  Bill Schmidt  <wschmidt@linux.ibm.com>

gcc/
	* config/rs6000/rs6000.c (rs6000_call_aix): Remove test for r12.
	(rs6000_sibcall_aix): Likewise.
This commit is contained in:
Bill Schmidt 2020-08-28 11:47:01 -05:00
parent 1c1e41b065
commit 26c24398d3

View File

@ -24725,8 +24725,7 @@ rs6000_call_aix (rtx value, rtx func_desc, rtx tlsarg, rtx cookie)
/* A function pointer in the ELFv2 ABI is just a plain address, but /* A function pointer in the ELFv2 ABI is just a plain address, but
the ABI requires it to be loaded into r12 before the call. */ the ABI requires it to be loaded into r12 before the call. */
func_addr = gen_rtx_REG (Pmode, 12); func_addr = gen_rtx_REG (Pmode, 12);
if (!rtx_equal_p (func_addr, func)) emit_move_insn (func_addr, func);
emit_move_insn (func_addr, func);
abi_reg = func_addr; abi_reg = func_addr;
/* Indirect calls via CTR are strongly preferred over indirect /* Indirect calls via CTR are strongly preferred over indirect
calls via LR, so move the address there. Needed to mark calls via LR, so move the address there. Needed to mark
@ -24846,8 +24845,7 @@ rs6000_sibcall_aix (rtx value, rtx func_desc, rtx tlsarg, rtx cookie)
if (GET_CODE (func_desc) != SYMBOL_REF && DEFAULT_ABI == ABI_ELFv2) if (GET_CODE (func_desc) != SYMBOL_REF && DEFAULT_ABI == ABI_ELFv2)
{ {
r12 = gen_rtx_REG (Pmode, 12); r12 = gen_rtx_REG (Pmode, 12);
if (!rtx_equal_p (r12, func_desc)) emit_move_insn (r12, func_desc);
emit_move_insn (r12, func_desc);
func_addr = gen_rtx_REG (Pmode, CTR_REGNO); func_addr = gen_rtx_REG (Pmode, CTR_REGNO);
emit_move_insn (func_addr, r12); emit_move_insn (func_addr, r12);
} }