diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2009-07-15 21:32:46 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2009-07-15 21:32:46 +0000 |
commit | 9d2bb9026f8daaacdcad58361e0c8f144df2278e (patch) | |
tree | 615c8cb293dd97ec80c72f0daee67957a04e27f1 /gcc/resource.c | |
parent | da45599cf66aa9593c55b1ddd5726a1781fb8214 (diff) | |
download | gcc-9d2bb9026f8daaacdcad58361e0c8f144df2278e.tar.gz |
re PR rtl-optimization/40710 (Linux kernel miscompiled for sh4-linux)
PR rtl-optimization/40710
* resource.c (mark_target_live_regs): Reset DF problem to LR.
From-SVN: r149696
Diffstat (limited to 'gcc/resource.c')
-rw-r--r-- | gcc/resource.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/resource.c b/gcc/resource.c index 846f8ef2b41..08a805519cd 100644 --- a/gcc/resource.c +++ b/gcc/resource.c @@ -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); } } |