Commit 73292fcf by Bin Cheng Committed by Bin Cheng

re PR rtl-optimization/52804 (IRA/RELOAD allocate wrong register on ARM for cortex-m0)


	PR rtl-optimization/52804
	* reload1.c (reload_reg_reaches_end_p): Check whether successor
	reload with type RELOAD_FOR_INPUT_ADDRESS kills reload register
	of current one with type RELOAD_FOR_INPADDR_ADDRESS.
	Same stands for reloads with type RELOAD_FOR_OUTPUT_ADDRESS and
	RELOAD_FOR_OUTADDR_ADDRESS.

From-SVN: r187139
parent 24454141
2012-05-04 Bin Cheng <bin.cheng@arm.com>
PR rtl-optimization/52804
* reload1.c (reload_reg_reaches_end_p): Check whether successor
reload with type RELOAD_FOR_INPUT_ADDRESS kills reload register
of current one with type RELOAD_FOR_INPADDR_ADDRESS.
Same stands for reloads with type RELOAD_FOR_OUTPUT_ADDRESS and
RELOAD_FOR_OUTADDR_ADDRESS.
2012-05-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c++/24985
......
......@@ -5429,6 +5429,13 @@ reload_reg_reaches_end_p (unsigned int regno, int reloadnum)
if (TEST_HARD_REG_BIT (reload_reg_used_in_input[i], regno))
return 0;
/* Reload register of reload with type RELOAD_FOR_INPADDR_ADDRESS
could be killed if the register is also used by reload with type
RELOAD_FOR_INPUT_ADDRESS, so check it. */
if (type == RELOAD_FOR_INPADDR_ADDRESS
&& TEST_HARD_REG_BIT (reload_reg_used_in_input_addr[opnum], regno))
return 0;
for (i = opnum + 1; i < reload_n_operands; i++)
if (TEST_HARD_REG_BIT (reload_reg_used_in_input_addr[i], regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_inpaddr_addr[i], regno))
......@@ -5503,6 +5510,13 @@ reload_reg_reaches_end_p (unsigned int regno, int reloadnum)
|| TEST_HARD_REG_BIT (reload_reg_used_in_outaddr_addr[i], regno))
return 0;
/* Reload register of reload with type RELOAD_FOR_OUTADDR_ADDRESS
could be killed if the register is also used by reload with type
RELOAD_FOR_OUTPUT_ADDRESS, so check it. */
if (type == RELOAD_FOR_OUTADDR_ADDRESS
&& TEST_HARD_REG_BIT (reload_reg_used_in_outaddr_addr[opnum], regno))
return 0;
return 1;
default:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment