backport: re PR rtl-optimization/40710 (Linux kernel miscompiled for sh4-linux)

Backport from mainline:
	2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>

	PR rtl-optimization/40710
	* resource.c (mark_target_live_regs): Reset DF problem to LR.

From-SVN: r149965
This commit is contained in:
Kaz Kojima 2009-07-22 23:22:24 +00:00
parent b145a595e1
commit 5cfa2dd468
2 changed files with 12 additions and 3 deletions

View File

@ -1,3 +1,11 @@
2009-07-22 Kaz Kojima <kkojima@gcc.gnu.org>
Backport from mainline:
2009-07-15 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/40710
* resource.c (mark_target_live_regs): Reset DF problem to LR.
2009-07-22 Richard Guenther <rguenther@suse.de>
PR tree-optimization/40321

View File

@ -945,10 +945,11 @@ mark_target_live_regs (rtx insns, rtx target, struct resources *res)
/* If we found a basic block, get the live registers from it and update
them with anything set or killed between its start and the insn before
TARGET. Otherwise, we must assume everything is live. */
TARGET; this custom life analysis is really about registers so we need
to use the LR problem. Otherwise, we must assume everything is live. */
if (b != -1)
{
regset regs_live = df_get_live_in (BASIC_BLOCK (b));
regset regs_live = DF_LR_IN (BASIC_BLOCK (b));
rtx start_insn, stop_insn;
/* Compute hard regs live at start of block. */
@ -1052,7 +1053,7 @@ mark_target_live_regs (rtx insns, rtx target, struct resources *res)
{
HARD_REG_SET extra_live;
REG_SET_TO_HARD_REG_SET (extra_live, df_get_live_in (bb));
REG_SET_TO_HARD_REG_SET (extra_live, DF_LR_IN (bb));
IOR_HARD_REG_SET (current_live_regs, extra_live);
}
}