diff options
author | Kenneth Zadeck <zadeck@naturalbridge.com> | 2008-12-18 13:38:39 +0000 |
---|---|---|
committer | Kenneth Zadeck <zadeck@gcc.gnu.org> | 2008-12-18 13:38:39 +0000 |
commit | 02b47899e14982d742b91de30d3129b2719c59d0 (patch) | |
tree | c64daed76d865d25eb4ef4c4e020e357ce13e831 /gcc/rtl-factoring.c | |
parent | fb5bc08bb353a574a011eaf5b7ae874672e4b289 (diff) | |
download | gcc-02b47899e14982d742b91de30d3129b2719c59d0.zip gcc-02b47899e14982d742b91de30d3129b2719c59d0.tar.gz gcc-02b47899e14982d742b91de30d3129b2719c59d0.tar.bz2 |
re PR rtl-optimization/37922 (code generation error)
2008-12-18 Kenneth Zadeck <zadeck@naturalbridge.com>
PR rtl-optimization/37922
* dse.c (bb_info): Added regs_live field.
(look_for_hardregs): New function.
(replace_read): Added regs_live parameter and code to check that
shift sequence does not clobber live hardregs.
(check_mem_read_rtx): Added parameter to replace_read.
(dse_step1): Added regs_live bitmap and initialize it.
(rest_of_handle_dse): Added DF_NOTES problem and earlier call to
df_analyze.
* df-problems.c Renamed to
df_simulate_initialize_backwards.
(df_simulate_one_insn): Renamed to
df_simulate_one_insn_backwards.
(df_simulate_artificial_refs_at_top): Renamed to
df_simulate_finalize_backwards.
(df_simulate_initialized_forwards,
df_simulate_one_insn_forwards,
df_simulate_finalize_backwards): New functions.
* df.h (df_simulate_artificial_refs_at_end): Renamed to
df_simulate_initialize_backwards.
(df_simulate_one_insn): Renamed to
df_simulate_one_insn_backwards.
(df_simulate_artificial_refs_at_top): Renamed to
df_simulate_finalize_backwards.
(df_simulate_initialized_forwards,
df_simulate_one_insn_forwards,
df_simulate_finalize_backwards): New functions.
* ra-conflict.c (global_conflicts): Renamed
df_simulate_artificial_refs_at_end to
df_simulate_initialize_backwards.
* sel-sched.c (propagate_lv_set): Renamed df_simulate_one_insn to
df_simulate_one_insn_backwards.
* ifcvt.c (dead_or_predicable): Renamed
df_simulate_artificial_refs_at_end to
df_simulate_initialize_backwards. Renamed df_simulate_one_insn to
df_simulate_one_insn_backwards.
* recog.c (peephole2_optimize): Ditto.
* rtl-factoring (collect_pattern_seqs, clear_regs_live_in_seq): Ditto.
2008-12-18 Kenneth Zadeck <zadeck@naturalbridge.com>
PR rtl-optimization/37922
* g++.dg/torture/pr37922.C: New test.
From-SVN: r142809
Diffstat (limited to 'gcc/rtl-factoring.c')
-rw-r--r-- | gcc/rtl-factoring.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/rtl-factoring.c b/gcc/rtl-factoring.c index 07c66e2..4c879691 100644 --- a/gcc/rtl-factoring.c +++ b/gcc/rtl-factoring.c @@ -464,7 +464,7 @@ collect_pattern_seqs (void) /* Initialize liveness propagation. */ INIT_REG_SET (&live); bitmap_copy (&live, DF_LR_OUT (bb)); - df_simulate_artificial_refs_at_end (bb, &live); + df_simulate_initialize_backwards (bb, &live); /* Propagate liveness info and mark insns where a stack reg is live. */ insn = BB_END (bb); @@ -486,7 +486,7 @@ collect_pattern_seqs (void) } if (insn == BB_HEAD (bb)) break; - df_simulate_one_insn (bb, insn, &live); + df_simulate_one_insn_backwards (bb, insn, &live); insn = prev; } @@ -572,11 +572,11 @@ clear_regs_live_in_seq (HARD_REG_SET * regs, rtx insn, int length) bb = BLOCK_FOR_INSN (insn); INIT_REG_SET (&live); bitmap_copy (&live, DF_LR_OUT (bb)); - df_simulate_artificial_refs_at_end (bb, &live); + df_simulate_initialize_backwards (bb, &live); /* Propagate until INSN if found. */ for (x = BB_END (bb); x != insn; x = PREV_INSN (x)) - df_simulate_one_insn (bb, x, &live); + df_simulate_one_insn_backwards (bb, x, &live); /* Clear registers live after INSN. */ renumbered_reg_set_to_hard_reg_set (&hlive, &live); @@ -586,7 +586,7 @@ clear_regs_live_in_seq (HARD_REG_SET * regs, rtx insn, int length) for (i = 0; i < length;) { rtx prev = PREV_INSN (x); - df_simulate_one_insn (bb, x, &live); + df_simulate_one_insn_backwards (bb, x, &live); if (INSN_P (x)) { |