Daily bump.
[official-gcc.git] / gcc / ChangeLog.dataflow
blob936caa09193bde27454512029670af6163511507
1 2007-06-07  Kenneth Zadeck <zadeck@naturalbridge.com>
3         * emit-rtl.c (set_insn_deleted): Changed NOTE_LINE_NUMBER to
4         NOTE_KIND.
5         (emit_note_after): Fixed merge glitch.
6         * combine.c (try_combine):  Changed NOTE_LINE_NUMBER to
7         NOTE_KIND.
8         * reg-stack.c (convert_regs_1): Fixed merge glitch.
9         * config/rs6000/rs6000.c (no_global_regs_above): Fixed merge typo.
10         (rs6000_emit_prologue): Fixed merge glitch.
12 2007-06-06  Kenneth Zadeck <zadeck@naturalbridge.com>
14         * regrename.c (do_replace): Removed ifdefed out code.
15         * fwprop.c: Fixed copyright.
16         * testsuite/Changelog.dataflow: Merged entry into
17         testsuite/Changelog.  Deleted file.
18         * global.c: Fixed comments.
19         * recog.c (confirm_change_group): Fixed comments.
20         (peephole2_optimize): Removed ifdefed out code.
21         * gcse.c (try_replace_reg): Removed redundant changing and
22         rescanning of notes.
23         * rtl.h (SET_REGNO): Replaced brackets.
24         * stack-ptr-mod.c: Changed copyright years.
26 2007-06-06  Seongbae Park  <seongbae.park@gmail.com>
28         * config/ia64/ia64.c (ia64_frame_info): Restored the comment
29         for the structure above. Removed left-over dead code from debugging.
30         (ia64_compute_frame_size): Comment cleanup.
31         (ia64_expand_prologue): Style fix. Debugging information header.
32         (ia64_init_expanders): Added a comment.
33         * config/ia64/ia64.h (ia64_init_expanders): Declaration moved
34         to ia64-protos.h
35         * config/ia64/ia64-protos.h (ia64_init_expanders): Declaration
36         moved from ia64.h
38 2007-06-06  Kenneth Zadeck <zadeck@naturalbridge.com>
40         * doc/rtl.text: Fixed spelling.
41         * dse.c (store_info, read_info, insn_info, bb_info, group_info,
42         deferred_change): Fixed formatting.
43         (step0): Renamed to dse_step0.
44         (step1): Renamed to dse_step1.
45         (step2_init): Renamed to dse_step2_init.
46         (step2_nospill): Renamed to dse_step2_nospill.
47         (step2_spill): Renamed to dse_step2_spill.
48         (step3_scan): Renamed to dse_step3_scan.
49         (step3_exit_block_scan): Renamed to dse_step3_exit_block_scan.
50         (step3): Renamed to dse_step3.
51         (step4_nospill): Renamed to dse_step4_nospill.
52         (step4_spill): Renamed to dse_step4_spill.
53         (step4): Renamed to dse_step4.
54         (step5_nospill): Renamed to dse_step5_nospill.
55         (step5_spill): Renamed to dse_step5_spill.
56         (step6): Renamed to dse_step6.
57         (rest_of_handle_dse): Updated names of functions.
58         * emit_rtl.c (verify_rtx_sharing, copy_rtx_if_shared_1,
59         copy_insn_1): Now calls shared_const_p.
60         * cselib.c (expand_loc, cselib_expand_value_rtx): Fixed comments.
61         (cselib_expand_value_rtx): Now calls shared_const_p.
62         * rtl.c (shared_const_p): New function.
63         (copy_rtx): Now calls shared_const_p.
64         * rtl.h (shared_const_p): New function.
66 2007-06-06  Kenneth Zadeck <zadeck@naturalbridge.com>
68         * combine.c (find_single_use_1): Fixed comment and changed 0 to NULL.
69         (find_single_use): Removed comment.
70         (delete_noop_move): Removed unnecessary continue and removed
71         nnoops counter.  Function now does not return anything.
73 2007-05-31  Kenneth Zadeck <zadeck@naturalbridge.com>
75         * bitmap.c (bitmap_elt_copy): Fixed comment.
76         * cfganal.c (inverted_post_order_compute): Fixed comment and
77         formatting of test.
78         * basic_block.h: Removed include rtl.h.
79         (enum bb_flags): Renumbered.
80         (FOR_EACH_BB_IN_REGION, FOR_EACH_BB_REVERSE_IN_REGION): Removed.
81         (FOR_BB_INSNS_SAFE, FOR_BB_INSNS_REVERSE_SAFE): Fixed formatting.
82         
83 2007-05-30  Kenneth Zadeck <zadeck@naturalbridge.com>
85         * auto-inc-dec.c: Updated copyright date.
86         (enum form, set_inc_state, dump_inc_insn, move_dead_notes,
87         insert_move_insn_before, attempt_change, try_merge, find_address, 
88         find_mem): Reformatted.
89         (reverse_inc, find_address): Fixed spelling.
90         (attempt_change, try_merge): Add default case.
91         * basic-block.h: Updated copyright date.
92         * bitmap.c: Updated copyright date.
93         * bitmap.h: Updated copyright date.
94         * cfganal.c: Updated copyright date.
95         * cfg.c: Updated copyright date.
96         * cfghooks.h: Updated copyright date.
97         * cfglayout.c: Updated copyright date.
98         * cfgloop.c: Updated copyright date.
99         * cfgloop.h: Updated copyright date.
100         * cfgrtl.c: Updated copyright date.
101         * combine.c: Updated copyright date.
102         * combine-stack-adj.c: Updated copyright date.
103         * config/arc/arc.c: Updated copyright date.
104         * config/arm/arm.c: (use_return_insn, 
105         arm_compute_save_reg0_reg12_mask, arm_get_frame_offsets,
106         arm_save_coproc_regs): Fixed formatting.
107         * config/bfin/bfin.c: Updated copyright date.
108         * config/c4x/c4x.c: Updated copyright date.
109         * config/c4x/c4x.h: Updated copyright date.
110         * config/cris/cris.c: Updated copyright date.
111         * config/crx/crx.c: Updated copyright date.
112         * config/crx/crx.h: Updated copyright date.
113         * config/darwin.c: Updated copyright date.
114         * config/frv/frv.c: Updated copyright date.
115         * config/h8300/h8300.c: Updated copyright date.
116         * config/h8300/h8300.md: Updated copyright date.
117         * config/ia64/ia64.h: Updated copyright date.
118         * config/iq2000/iq2000.c: Updated copyright date.
119         * config/iq2000/iq2000.h: Updated copyright date.
120         * config/m32c/m32c.c: Updated copyright date.
121         * config/m68hc11/m68hc11.c: Updated copyright date.
122         * config/m68k/m68k.c: Updated copyright date.
123         * config/mips/mips.c: Updated copyright date.
124         * config/mips/mips.md: Updated copyright date.
125         * config/mmix/mmix.c: Updated copyright date.
126         * config/mn10300/mn10300.c: Updated copyright date.
127         * config/mt/mt.c: Updated copyright date.
128         (mt_print_operand_simple_address, mt_print_operand): Fixed formatting.
129         * config/mt/mt.h: Updated copyright date and fixed formatting.
130         * config/pa/pa.c: Updated copyright date.
131         * config/pa/pa.h: Updated copyright date.
132         * config/pdp11/pdp11.c: Updated copyright date.
133         * config/pdp11/pdp11.h: Updated copyright date.
134         * config/rs6000/predicates.md: Updated copyright date.
135         * config/s390/s390.c: Updated copyright date.
136         * config/score/score-mdaux.c: Updated copyright date.
137         * config/sh/sh.c: Updated copyright date.
138         * config/sh/sh.md: Updated copyright date.
139         * config/sparc/sparc.c: Updated copyright date.
140         * config/stormy16/stormy16.c: Updated copyright date.
141         * config/v850/v850.c: Updated copyright date.
142         * config/vax/vax.c: Updated copyright date.
143         * cselib.c: Updated copyright date.
144         (expand_loc): Fixed formatting.
145         * cselib.h: Updated copyright date.
146         * dbgcnt.c: Updated copyright date.
147         * dbgcnt.def: Updated copyright date.
148         * dbgcnt.h: Updated copyright date.
149         * dce.c: Updated copyright date.
150         (fast_dce): Fixed formatting.
151         * dce.h: Updated copyright date.
152         * ddg.c: Updated copyright date.
153         * ddg.h: Updated copyright date.
154         * df-core.c: Updated copyright date.
155         * df.h: Updated copyright date and fixed formatting.
156         * doc/cfg.texi: Updated copyright date.
157         * doc/rtl.texi: Updated copyright date.
158         * dominance.c: Updated copyright date.
159         * function.h: Updated copyright date.
160         * fwprop.c: Updated copyright date.
161         * global.c: Updated copyright date.
162         * integrate.c: Updated copyright date.
163         * local-alloc.c: Updated copyright date.
164         * loop-init.c: Updated copyright date.
165         * loop-invariant.c: Updated copyright date.
166         * loop-iv.c: Updated copyright date.
167         * optabs.h: Updated copyright date.
168         * output.h: Updated copyright date.
169         * postreload.c: Updated copyright date.
170         * postreload-gcse.c: Updated copyright date.
171         * recog.h: Updated copyright date.
172         * regmove.c: Updated copyright date.
173         * reg-notes.def: Updated copyright date.
174         * regrename.c: Updated copyright date.
175         * reg-stack.c: Updated copyright date.
176         * reload.c: Updated copyright date.
177         * reorg.c: Updated copyright date.
178         * resource.c: Updated copyright date.
179         * resource.h: Updated copyright date.
180         * rtl-factoring.c: Updated copyright date.
181         * sbitmap.c: Updated copyright date.
182         * sbitmap.h: Updated copyright date.
183         * sched-deps.c: Updated copyright date.
184         * sched-ebb.c: Updated copyright date.
185         * sched-int.h: Updated copyright date.
186         * sched-rgn.c: Updated copyright date.
187         * sched-vis.c: Updated copyright date.
188         * see.c: Updated copyright date.
189         (see_handle_relevant_uses): Fixed formatting.
190         * stack-ptr-mod.c: Updated copyright date.
191         * struct-equiv.c: Updated copyright date.
192         * tracer.c: Updated copyright date.
193         * web.c: Updated copyright date.
195 2007-05-30  Kenneth Zadeck <zadeck@naturalbridge.com>
197         * auto-inc-dec.c (mem_insn.mem_pat): Renamed mem_loc.
198         (attempt_change): Fixed comments and renamed new_addr_pat to new_addr.
199         (try_merge, attempt_change, find_address, find_mem): Renamed
200         mem_pat to mem_loc.
202 2007-05-27  Kenneth Zadeck <zadeck@naturalbridge.com>
204         * df-core.c (df_hybrid_search_forward, df_hybrid_search_backward
205         df_iterative_dataflow): Removed.
206         * df.h (df_iterative_dataflow): Removed.
207         
208 2007-05-27  Kenneth Zadeck <zadeck@naturalbridge.com>
210         * dse.c (replace_inc_dec, delete_dead_store_insn, scan_insn, 
211         dse_record_singleton_alias_set, dse_confluence_0,
212         dse_confluence_n, step4, step5_nospill, step5_spill,
213         rest_of_handle_dse, pass_rtl_dse1, pass_rtl_dse2): Removed code
214         to allow dse to run on trunk in front of flow.c
215         (problem): Removed.
216         
217 2007-05-26  Kaz Kojima  <kkojima@gcc.gnu.org>
219         * bt-load.c: Include recog.h.
220         (move_btr_def): Use validate_replace_rtx instead of replace_rtx.
222 2007-05-25  Steven Bosscher  <steven@gcc.gnu.org>
224         * emit-rtl.c (try_split): Remove unnecessary setting/resetting
225         of the USED flags of TRIAL.
227 2007-05-25  Kenneth Zadeck <zadeck@naturalbridge.com>
229         * dse.c (insn_info.stack_read, group_info.frame_related): New
230         variable.
231         (get_group_info): Initialize frame_related.
232         (scan_insn, scan_reads_nospill): Remove frame_related stores from
233         consideration for const functions.
234         (step1, step2_init, step3_exit_block_scan): Use frame_related field.
235         (step3_scan, step5_nospill): Change parameters to scan_reads_nospill.
236         
237 2007-05-25  Ian Lance Taylor  <iant@google.com>
239         * reload1.c (mark_home_live_1): New static function, broken out of
240         mark_home_live.
241         (mark_home_live): Call mark_home_live_1.
242         (scan_paradoxical_subregs): Call mark_home_live_1.
244 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
246         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
247         (umulsi3_highpart): Likewise.
249 2007-05-24  Eric Christopher  <echristo@gmail.com>
251         * config/mips/mips.c (mips_save_reg_p): Use df_regs_ever_live_p.
252         (mips_output_mi_thunk): Use SET_REGNO.
254 2007-05-23  Kaz Kojima  <kkojima@gcc.gnu.org>
256         * config/sh/sh.c (sh_expand_prologue): Fix typo.
258 2007-05-23 Paolo Bonzini <bonzini@gnu.org>
260         * emit-rtl.c [!HAVE_blockage]: Provide a gen_blockage routine here.
261         * rtl.h (gen_blockage): Add prototype.
263         * cse.c (last_bb_reg_used_in, reg_used_in_multiple_bb): Remove.
264         (mark_reg_use_bb): Remove.
265         (cse_main): Remove the initialization of reg_used_in_multiple_bb
266         and last_bb_reg_used_in, and the insn walk that calls mark_reg_use_bb.
267         (cse_ebb_live_in, cse_ebb_live_out): New.
268         (cse_extended_basic_block): Set them.
269         (make_regs_eqv): Use them.
271 2007-05-23  Kenneth Zadeck <zadeck@naturalbridge.com>
273         * df-scan.c (df_get_regular_block_artificial_uses): Set the
274         HARD_FRAME_POINTER not the FRAME_POINTER after reload.  Set both
275         the HARD_FRAME_POINTER and the FRAME_POINTER before reload.
276         * dse.c (const_or_frame_p): Removed unnecessary test.
277         * config/s390/s390.c (s390_emit_prologue): Removed REG_MAYBE_DEAD
278         notes.
279         * config/spu/spu.c (frame_emit_add_imm, spu_expand_prologue): Ditto.
280         * config/i386/i386.c (ix86_expand_prologue): Ditto.
281         * config/sh/sh.c (sh_expand_prologue): Ditto.
282         * config/sh/sh.md (define_expand): Ditto.
283         * config/iq2000/iq2000.c (iq2000_expand_prologue): Ditto.
284         * config/mn10300/mn10300.c (expand_prologue): Ditto.
285         * config/ia64/ia64.c (spill_restore_mem, ia64_expand_prologue): Ditto.
286         * config/m68k/m68k.c (m68k_expand_prologue): Ditto.
287         * config/rs6000/rs6000.c (rs6000_maybe_dead): Removed.
288         (rs6000_emit_load_toc_table, rs6000_emit_prologue): Removed calls
289         to rs6000_maybe_dead.
290         * config/bfin/bfin.c (expand_interrupt_handler_prologue,
291         bfin_load_pic_reg): Removed REG_MAYBE_DEAD notes.
292         * reg-notes.def (MAYBE_DEAD): Removed.
293         * dce.c (deletable_insn_p): Removed test of RTX_FRAME_RELATED_P.
294         
295 2007-05-21  Kenneth Zadeck <zadeck@naturalbridge.com>
297         * dbgcnt.def: Fixed comment.
298         * df-scan.c (df_get_regular_block_artificial_uses): Added frame
299         pointer after reload if frame_pointer_needed.
300         * df.h (df_simulate_defs, df_simulate_uses): Made public.
301         * df-problems.c (df_simulate_defs, df_simulate_uses): Made public.
302         * dce.c (deletable_insn_p): Only allow frame-related insns to be
303         deleted if there is a REG_MAYBE_DEAD note.
304         (dce_process_block): Now uses df_simulate_defs and
305         df_simulate_uses.
307 2007-05-20  Kenneth Zadeck <zadeck@naturalbridge.com>
309         * cfg.c (dump_bb_info): Fixed dump formatting problem.
310         * dse.c (const_or_frame_p): New function.
311         (canon_address): Fixed dump info and now callse const_or_frame_p
312         rather than rtx_varies_p.  Also do simplification inside cselib.
313         (record_store): Fixed dump info.
314         * cselib.c (expand_loc): Fixed dump info.
315         (cselib_expand_value_rtx): Fixed dump info and now call
316         simplify_rtx on results of expansion.  
318 2007-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
320         * ifcvt.c (dead_or_predictable): Replaced insn dfa with new df
321         routines.
322         * recog.c (peephole2_optimize): Replaced
323         df_lr_simulate_artificial_refs_at_end and df_lr_simulate_one_insn
324         with df_simulate_artificial_refs_at_end and
325         df_simulate_one_insn_backwards.
326         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
327         Ditto.
328         * df.h (df_lr_simulate_artificial_refs_at_end, 
329         df_lr_simulate_one_insn): Removed.
330         (df_simulate_find_defs, df_simulate_artificial_refs_at_top,
331         df_simulate_one_insn_forwards, df_simulate_artificial_refs_at_end,
332         df_simulate_one_insn_backwards): Added.
333         * df-problems.c (df_lr_bb_local_compute): Removed unnecessary
334         tests.
335         (df_lr_simulate_artificial_refs_at_end, df_lr_simulate_one_insn):
336         Removed.
337         (df_simulate_find_defs, df_simulate_defs, df_simulate_uses,
338         df_simulate_fixup_sets, df_simulate_artificial_refs_at_top,
339         df_simulate_one_insn_forwards, df_simulate_artificial_refs_at_end,
340         df_simulate_one_insn_backwards): Added.
342 2007-05-16  Seongbae Park <seongbae.park@gmail.com>
344         * ifcvt.c (dead_or_predicable): Update test_live as well as test_set.
345         (if_convert): New parameter RECOMPUTE_DOMINANCE.
346         (rest_of_handle_if_conversion, rest_of_handle_if_after_combine,
347         rest_of_handle_if_after_reload): New parameter to if_convert.
349 2007-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
351         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
352         regstat_compute_calls_crossed): Added time variable TV_REG_STATS.
353         * timevar.def (TV_REG_STATS): Added.
354         (TV_DF_RI): Deleted.
355         * df-problems.c (df_print_bb_index): Added identifer for eh blocks.
356         * dce.c (deletable_insn_p): Added code to not delete 
357         RTX_FRAME_RELATED_P insns.
358         (dce_process_block): Removed insns_deleted and added code to reset
359         live set before confluence function.  
360         (rest_of_handle_fast_dce): Added code to turn off df's version of dce if 
361         flag_dce is not set and added DF_NO_INSN_RESCAN to flags that are cleared.
363 2007-05-10  Roman Zippel <zippel@linux-m68k.org>
365         * config/m68k/m68k.c: include df.h.
366         (m68k_output_mi_thunk): use SET_REGNO.
368 2007-05-09  Kaz Kojima  <kkojima@gcc.gnu.org>
370         * df-core.c (df_get_bb_dirty): Return false if df_live is null.
372 2007-05-09  Kaz Kojima  <kkojima@gcc.gnu.org>
374         * config/sh/sh.c (r0_life_regions): New variable.
375         (find_r0_life_regions): New static function.
376         (sh_md_init_global): Call find_r0_life_regions when
377         reload_completed isn't set.
378         (R0_MAX_LIVE_LENGTH): Remove.
379         (high__pressure): Return 1 if r0_life_regions is over
380         the given threshold.
382 2007-05-08  Kenneth Zadeck <zadeck@naturalbridge.com>
384         * regrename.c (regrename_optimize): Renamed df_ri_add_problem to 
385         df_note_add_problem.
386         * auto-inc-dec.c (rest_of_handle_auto_inc_dec): Ditto.
387         * sched_ebb.c (schedule_ebbs): Renamed df_ri_add_problem to
388         df_note_add_problem.  Added call to regstat_compute_calls_crossed
389         and regstat_free_calls_crossed and deleted call to
390         allocate_reg_life_data.
391         * regstat.c (regstat_init_n_sets_and_refs,
392         regstat_free_n_sets_and_refs, regstat_bb_compute_ri,
393         regstat_compute_ri, regstat_free_ri,
394         regstat_bb_compute_calls_crossed, regstat_compute_calls_crossed, 
395         regstat_free_calls_crossed): New functions.
396         * final.c (rest_of_handle_final): Removed call to free_reg_info.
397         * cfg.c (dump_reg_info): Many changes to accomodate new
398         implementation of REG_BASIC_BLOCK, REG_N_SETS, REG_N_DEATHS, 
399         REG_N_CALLS_CROSSED.
400         * toplev.c (finalize): Removed call to free_reg_info.
401         * regs.h (REG_BASIC_BLOCK, REG_N_SETS, REG_N_REFS, REG_N_DEATHS, 
402         REG_N_CALLS_CROSSED, REG_FREQ, REG_N_THROWING_CALLS_CROSSED,
403         REG_LIVE_LENGTH, REG_BASIC_BLOCK): Changed implementation.
404         (allocate_reg_life_data, allocate_reg_info, clear_reg_info_regno):
405         Removed.
406         * mode-switching.c (optimize_mode_switching): Removed call to 
407         df_ri_add_problem.
408         * modulo-sched.c (sms_schedule): Renamed df_ri_add_problem to
409         df_note_add_problem.  Added call to regstat_compute_calls_crossed
410         and regstat_free_calls_crossed
411         (rest_of_handle_sms): Deleted call to allocate_reg_info.
412         * global.c (compute_regsets): Moved all dataflow to local_alloc.
413         (rest_of_handle_global_alloc): Call regstat_free_n_sets_and_refs
414         and regstat_free_ri.
415         * ifcvt.c (dead_or_predicable, if_convert): Removed calls to
416         allocate_reg_info.
417         * timevar.def (TV_DF_NOTE): New timevar. 
418         * regmove.c (copy_src_to_dest, regmove_optimize, fixup_match_1):
419         Changed calls to REG_N_SETS that changed the value to
420         INC_REG_N_SETS.
421         (regmove_optimize): Moved calls that compute df and register info
422         to after early out for flag_non_call_exceptions.  Added calls to 
423         regstat_init_n_sets_and_refs, regstat_compute_ri,
424         regstat_free_n_sets_and_refs and regstat_free_ri.
425         * local_alloc (local_alloc, equiv_init_movable_p): Added
426         NUM_FIXED_BLOCKS to tests for REG_BASIC_BLOCK.
427         (update_equiv_regs): Added code to update bitvectors when certain
428         local allocations are done.  Changed REG_N_SETS to
429         DF_REG_DEF_COUNT.  Added NUM_FIXED_BLOCKS to tests for
430         REG_BASIC_BLOCK.
431         (rest_of_handle_local_alloc): Moved computation of UREC from
432         global to here.
433         * function.c (regno_clobbered_at_setjmp): Added to test to see if
434         regno was valid.  Moved function size test higher in call
435         heirarchy.
436         (setjmp_args_warning): Added tests to early out of check if
437         function is small or there are no setjmps.  
438         * df.h (DF_RI, df_ri, DF_RI_LIFE, DF_RI_SETJMP, df_ri_add_problem,
439         df_ri_get_setjmp_crosses): Deleted.
440         (DF_NOTE, df_note, df_note_add_problem): Added.
441         * gcse (gcse_main): Removed computation of RI information and
442         removed calls to allocate_reg_info.
443         * init-regs.c (initialize_uninitialized_regs): Removed call to
444         allocate_reg_life_data.
445         * regclass.c (reg_info_data, reg_info_head, reg_pref_buffer,
446         allocate_reg_life_data, allocate_reg_info, clear_reg_info_regno):
447         Deleted.
448         (scan_one_insn): Changed some calls to REG_N_SETS and REG_N_REFS
449         to INC_REG_N_SETS and INC_REG_N_REFS.
450         (regclass): Allocate register information locally.
451         (free_reg_info): Changed the structures freed.  
452         (reg_scan): Removed call to allocate_reg_info and changed call to
453         REG_N_SETS to DF_REG_DEF_COUNT.
454         * combine (try_combine, remove_death, distribute_notes): Removed
455         computation of REG_N_DEATHS.  Changed some references to
456         REG_N_SETS to INC_REG_N_SETS.
457         (rest_of_handle_combine): Replaced call to df_ri_add_problem with
458         call to df_note_add_problem, and added call to
459         regstat_init_n_sets_and_refs and regstat_free_n_sets_and_refs.
460         * bb-reorder (rest_of_handle_partition_blocks): Removed call to
461         allocate_reg_life_data.
462         * df-problems.c (reg_n_info, df_ri_problem_p, df_ri_problem_data,
463         df_ri_alloc, df_ri_start_dump, df_ri_get_setjmp_crosses): Removed.
464         (print_note): Renamed df_print_note.
465         (df_kill_notes): Added parameters to save notes rather than just
466         let them die and remake them.
467         (df_set_note): New function.
468         (df_set_unused_notes_for_mw, df_set_dead_notes_for_mw,
469         df_create_unused_note, df_ri_bb_compute, df_ri_compute,
470         df_ri_free): Removed ri information computations.
471         (df_ri_bb_compute): Renamed to df_note_bb_compute.
472         (df_ri_compute): Renamed to df_note_compute.
473         (df_ri_free): Renamed to df_note_free.
474         (problem_RI): Renamed to problem_NOTE
475         (df_ri_add_problem): Renamed to df_note_add_problem.
476         * (reg-stack.c): Changed call to df_ri_add_problem to 
477         df_note_add_problem.
478         * combine-stack-adj.c (rest_of_handle_stack_adjustments): Ditto.
479         * (Makefile.in): Added regstat.o.
480         * sched-rgn.c (schedule_insns): Changed call to df_ri_add_problem to 
481         df_note_add_problem.  Added calls to regstat_compute_calls_crossed
482         and regstat_free_calls_crossed.
483         * basic_block.h (REG_BLOCK_UNKNOWN, REG_BLOCK_GLOBAL,
484         REG_BASIC_BLOCK): Moved to regs.h.
485         * config/sparc/sparc.c (sparc_check_64): Changed REG_N_SETS to
486         DF_REG_DEF_COUNT.
487         * config/sh/sh.c (flow_dependent_p_1): Ditto.
488         (sh_md_init): Removed useless attempt to measure pressure on R0.
489         * config/m68k/m68k.c (m68k_output_mi_thunk): Removed call to
490         allocate_reg_info.
491         * reload1.c (delete_output_reload): Added NUM_FIXED_BLOCKS to
492         tests for REG_BASIC_BLOCK.
493         
494 2007-05-07  Seongbae Park  <seongbae.park@gmail.com>
496         * dse.c (add_wild_read): Do not remove read_info_t
497         that has non-zero alias_set.
498         (canon_address): Remove unused parameter for_read and bb_info.
499         Remove the unused code path, and update the dump message.
500         (record_store): Accomodate canon_address signature change.
501         (check_mem_read_rtx): Don't bail out early for wild_read.
502         (check_mem_read_rtx): Accomodate canon_address signature change.
503         (scan_insn): Move call insn handling after note_uses.
505 2007-05-05  Ramana Radhakrishnan <ramana.r@gmail.com>
506             Serge Belyshev  <belyshev@depni.sinp.msu.ru>
507             Kenneth Zadeck <zadeck@naturalbridge.com>
509         * combine.c (recog_for_combine): Keep unused notes from being 
510         generated for scratch registers.
511         * config/alpha/alpha.c: Add include for df.h.
512         
514 2007-05-01  Kenneth Zadeck <zadeck@naturalbridge.com>
516         Do not delete regnotes when recreating them.
517         * df-problems.c (df_kill_notes): Store notes into new parameters
518         rather than killing them.
519         (df_set_note): New function.
520         (df_set_unused_notes_for_mw, df_set_dead_notes_for_mw,
521         df_create_unused_note, df_ri_bb_compute): Call df_set_note to
522         create new notes.
523         
524 2007-04-30  Seongbae Park <seongbae.park@gmail.com>
526         * df-scan.c (df_reorganize_refs_by_reg_by_insn):
527         Scan artificial defs and uses as well.
528         * passes.c (init_optimization_passes):
529         Move pass_stack_ptr_mod from after pass_inc_dec.
531 2007-04-29  Steven Bosscher <steven@gcc.gnu.org>
533         Small cleanups without any semantics changes:
534         * df-scan.c (df_ref_record): Fix small style typo.
535         * df-core.c (df_hybrid_search_forward): Cleanup redundant loads.
536         (df_hybrid_search_backward): Likewise.
537         (df_worklist_dataflow): Check DIR against DF_NONE instead of 0.
539         Small speedups:
540         * haifa-sched.c (move_block_after_check): Mark df solutions dirty
541         here, instead of...
542         (move_succs): ...here.
543         * df-core.c (df_analyze): Only verify POSTORDER_INVERTED if
544         checking is enabled.
546         Fix Java bootstrap on ia64
547         * emit-rtl.c (try_split): Unshare RTL sequences produced by splitters.
549 2007-04-27  Kenneth Zadeck <zadeck@naturalbridge.com>
551         * timevar.def (TV_DF_UR): Removed.
552         * df-scan.c (df_scan_alloc): Change pool size.  
553         * df-core.c (df_finish_pass, rest_of_handle_df_initialize,
554         df_get_bb_dirty, df_verify): Merged df_ur and df_live problems
555         into df_live.
556         * global.c (compute_regsets, rest_of_handle_global_alloc): Ditto.
557         * df.h (DF_UR, DF_UR_BB_INFO, DF_UR_IN, DF_UR_OUT, df_ur,
558         df_ur_get_bb_info): Removed.
559         (df_ur_bb_info): Merged df_ur and df_live problems
560         into df_live.
561         * init-regs.c (initialize_uninitialized_regs): Changed DF_UR_IN to
562         DF_LIVE_IN.
563         * df_problems.c (df_ur_problem_data): Renamed to
564         df_live_problem_data.
565         (df_ur_set_bb_info): Renamed to df_live_set_bb_info.
566         (df_ur_free_bb_info): Renamed to df_live_free_bb_info.
567         (df_ur_alloc): Renamed to df_live_alloc.
568         (df_ur_reset): Renamed to df_live_reset.
569         (df_ur_bb_local_compute): Renamed to df_live_bb_local_compute.
570         (df_ur_local_compute): Renamed to df_live_local_compute.
571         (df_ur_init): Renamed to df_live_init.
572         (df_ur_confluence_n): Renamed to df_live_confluence_n.
573         (df_ur_transfer_function): Renamed to df_live_transfer_function.
574         (df_ur_local_finalize): Removed.
575         (df_ur_free): Renamed to df_live_free.
576         (df_ur_top_dump): Renamed to df_live_top_dump.
577         (df_ur_bottom_dump): Renamed to df_live_bottom_dump.
578         (df_ur_verify_solution_start): Renamed to
579         df_live_verify_solution_start.
580         (df_ur_verify_solution_end): Renamed to
581         df_live_verify_solution_end.
582         (problem_UR): Renamed to problem_LIVE.
583         (df_ur_add_problem): Renamed to df_live_add_problem.
584         (df_ur_verify_transfer_functions): Renamed to
585         df_live_verify_transfer_functions.
586         (df_live_set_bb_info, df_live_free_bb_info, df_live_alloc,
587         df_live_free, df_live_top_dump, df_live_bottom_dump, 
588         df_live_add_problem): Deleted.
589         (df_chain_fully_remove_problem): Changed pool alloc block size.
590         * dce.c (dce_marked_bitmap_obstack): Removed.
591         (marked_insn_p, mark_insn, init_dce, end_ud_dce, fini_dce,
592         fast_dce): Changed marked to be sbitmap rather than bitmap.
593         * alloc_pool.c (create_alloc_pool, pool_alloc, pool_free): Split
594         free_list into virgin_free_list and returned_free_list.
595         * alloc_pool.h (free_list): Split into virgin_free_list and
596         returned_free_list.
597         (virgin_elts_remaining): New variable.
598         
599 2007-04-26  Kenneth Zadeck <zadeck@naturalbridge.com>
601         * df-core.c (df_remove_problem): Allow df_ur and df_live 
602         problems to be removed.
603         * global.c (compute_regsets): Remove df_ur and df_live when
604         adding df_urec.
605         (rest_of_handle_global_alloc): Add back df_ur and df_live when
606         removing df_urec.
607         * timevar.def (TV_DF_UD): Renamed to TV_DF_UR.
608         * function.c (thread_prologue_and_epilogue_insns): Removed
609         call to df_analyze.
610         * df-problems.c (problem_UR): Added remove function and renamed TV.
611         (problem_LIVE): Added remove function.
614 2007-04-26  Seongbae Park <seongbae.park@gmail.com>
616         * tree-pass.h: Declaration for new pass.
617         * passes.c (init_optimization_passes): New pass.
618         * dce.c (prescan_insns_for_dce): Pass new param "fast" through.
619         (mark_artificial_uses, mark_reg_dependencies): New functions 
620         - resurrected from the old svn revision.
621         (end_ud_dce, rest_of_handle_ud_dce, gate_ud_dce): New function.
622         (pass_ud_rtl_dce): New pass.
623         (fast_dce): New parameter for prescan_insns_for_dce.
625 2007-04-24  Seongbae Park <seongbae.park@gmail.com>
627         * final.c (leaf_renumber_regs_insn): Use SET_REGNO().
628         * df-scan.c (df_insn_refs_collect): Handle non-local gotos.
629         * sparc.c: New include of df.h.
630         * dce.c (prescan_insns_for_dce): Call mark_libcall for all insns 
631         with with REG_LIBCALL_ID.
633 2007-04-23  Steven Bosscher  <steven@gcc.gnu.org>
634             Kenneth Zadeck <zadeck@naturalbridge.com>
636         * df-scan.c (problem_SCAN): Add time variable.
637         (df_refs_add_to_chains): Delete the refs vectors before 
638         allocating new ones.
639         * df-core.c (df_analyze_problem): Push and pop problem specific 
640         time vectors.
641         * timevar.def (TV_DF_SCAN, TV_DF_RU, TV_DF_RD, TV_DF_LR, TV_DF_UD,
642         TV_DF_LIVE, TV_DF_UREC, TV_DF_CHAIN, TV_DF_RI): New problem
643         specific time vars.
644         * dse.c (positions_needed): Changed to be bitmask from sbitmap.
645         (store_info.rhs): New field.
646         (free_store_info, step6): Changed positions_needed to be bitmask
647         from sbitmap.
648         (read_info.begin, read_info.end): Changed to be int.
649         (deferred_change): New struct.
650         (deferred_change_pool): New variable.
651         (step0): Initialize deferred_change_pool.
652         (canon_address): Added parameter to cselib_expand_value_rtx and
653         improved debugging.
654         (clear_rhs_from_active_local_stores, replace_read): New function.
655         (record_store, check_mem_read_rtx): Added code to invalidate
656         store_info.rhs.  Changed positions_needed to be bitmask from
657         sbitmap.
658         (step1): Added code to process deferred_change_list.
659         (rest_of_handle_dse): Added deferred rescanning.
660         * df.h (df_problem.tv_id): New timevar for each problem.
661         * cselib.c (expand_loc, cselib_expand_value_rtx): Added code to
662         limit the amount of recursion allowed when expanding addresses.
663         * cselib.h (cselib_expand_value_rtx): Added max recursion
664         parameter.
665         * rtl.h (rhs_regno): Renamed tree to x.
666         * df-problems.c (df_problem problem_RU, df_problem problem_RD,
667         problem_LR, problem_UR, problem_LIVE, problem_UREC, problem_CHAIN,
668         problem_RI) Added timevar.
669         (df_live_local_finalize): Only update solution if dirty.
670         * Makefile.in (dse.o): Added dependencies.
671         
672 2007-04-23  Ian Lance Taylor  <iant@google.com>
674         * lower-subreg.c (resolve_reg_notes): Discard REG_DEAD and
675         REG_UNUSED notes for split registers.
676         (decompose_multiword_subregs): Remove life_blocks.
678 2007-04-22  Steven Bosscher  <steven@gcc.gnu.org>
680         * df.h (df_bitmap_obstack): Declare.
682         * df-scan.c (df_scan_problem_data): Add new bitmap obstacks for
683         regsets and insns/notes to be rescanned.
684         (df_scan_free_internal): Free the new bitmap obstacks.
685         (df_scan_alloc): Initialize the new bitmap obstacks, and use them.
686         (df_scan_free): Set df->blocks_to_analyze to NULL after freeing it.
687         (df_insn_rescan_all): Put temporary bitmaps on df_bitmap_obstack.
688         (df_process_deferred_rescans): Likewise.
689         (df_get_call_refs): Likewise.
690         (df_update_entry_block_defs): Likewise.  Put entry_block_defs on
691         the regsets bitmap obstack.
692         (df_record_exit_block_uses): Changed like df_record_exit_block_uses.
693         (df_entry_block_bitmap_verify): Put temporary bitmaps on df_bitmap_obstack.
694         (df_exit_block_bitmap_verify): Likewise.
695         (df_scan_verify): Likewise.
697         * df-core.c (df_bitmap_obstack): Declare.
698         (rest_of_handle_df_initialize): Initialize it.
699         (rest_of_handle_df_finish): Release it.
700         (df_set_blocks, df_worklist_dataflow, df_analyze,
701         df_compact_blocks): Use it.
703         * df-problems.c (df_set_seen): Use df_bitmap_obstack for seen_in_block
704         and seen_in_insn.
705         (df_ri_compute): Likewise for bitmaps allocated for the RI problem.
707         For the RU and RD problems, introduce per-problem bitmap obstacks:
708         (df_r[ud]_problem_data): Add a per-problem bitmap
709         obstack.
710         (df_r[ud]_alloc): Initialize and use them per df problem.
711         (df_r[ud]_confluence_n, df_r[ud]_transfer_function): Use them.
712         (df_r[ud]_free): Release them.
714         * dce.c (dce_marked_bitmap_obstack, dce_blocks_bitmap_obstack,
715         dce_tmp_bitmap_obstack): New bitmap obstacks.
716         (init_dce): Initialize them.  Use dce_marked_bitmap_obstack for
717         the bitmap of marked insns.
718         (end_fast_dce): Renamed to...
719         (fini_dce): ...this.  Release the new bitmap obstacks.
720         (dce_process_block): Allocate local_live on dce_tmp_bitmap_obstack.
721         (fast_dce): Allocate basic block bitmaps on dce_blocks_bitmap_obstack.
722         (rest_of_handle_fast_dce): Call fini_dce, and clear df_in_progress.
723         (run_fast_df_dce): Likewise.
725 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
727         * config/spu/spu.c (fsmbi_const_p): Replace flow2_completed with
728         epilogue_completed.
730 2007-04-16  Steven Bosscher  <steven@gcc.gnu.org>
732         * fwprop.c (forward_propagate_into): If multiple sets
733         return.
735 2007-04-16  Kenneth Zadeck <zadeck@naturalbridge.com>
737         * df-scan.c (df_ref_create, df_reg_chain_unlink,
738         df_install_refs): Use df->analyze_subset.
739         (df_reorganize_refs_by_reg_by_reg, df_reorganize_refs_by_reg_by_insn):
740         New functions.
741         (df_reorganize_refs_by_reg): Split into
742         df_reorganize_refs_by_reg_by_reg,
743         df_reorganize_refs_by_reg_by_insn.
744         (df_add_refs_to_table): Do not add hardware_regs if not asked for.
745         (df_reorganize_refs_by_insn): Move call to count_refs.
746         (df_maybe_reorganize_def_refs, df_maybe_reorganize_use_refs):
747         Remove code to modify df->total_size.
748         * df-core.c (df_set_blocks): Set df->analyze_subset.
749         (df_finish_pass): Clear df->analyze->subset.
750         (df_analyze): Use df->analyze_subset.
751         (df_dump_start): Remove total_size from dump.
752         * df.h (DF_RI_NO_UPDATE, DF_DEFS_TOTAL_SIZE, DF_USES_TOTAL_SIZE):
753         Removed.
754         (df.analyze_subset): New field.  * df-problems.c (df_ri_alloc,
755         df_ri_compute): Removed DF_RI_NO_UPDATE.
758 2007-04-12  Steven Bosscher  <steven@gcc.gnu.org>
759             Kenneth Zadeck <zadeck@naturalbridge.com>
761         * cse.c (cse_insn): Do not emit barriers.
762         * dse.c (store_info.address): Renamed to mem_addr.
763         (canon_address): Removed address_out parameter.
764         (record_store): Removed address var and compute mem and
765         mem_address differently.
766         (check_mem_read_rtx): Removed address and changed parameters to
767         canon_true_dependence.
768         * cselib.c (cselib_expand_value_rtx): Do not translate
769         FRAME_POINTER_REGNUM and HARD_FRAME_POINTER_REGNUM.
771 2007-04-11  Steven Bosscher  <steven@gcc.gnu.org>
773         * gcse.c (hash_scan_set): Make sure that INSN has only one
774         SET in its PATTERN before making SRC anticipatable.
775         * cfglayout.c (fixup_reorder_chain): Fix merge error, don't
776         call compact_blocks here.
778 2007-04-09  Kenneth Zadeck <zadeck@naturalbridge.com>
780         * df-core.c (add_problem): Keep the problem sorted in
781         problems_in_order.
782         * global.c (compute_regsets): Recompute register information.
784 2007-04-08  Kenneth Zadeck <zadeck@naturalbridge.com>
786         * optabs.h (maybe_encapsulate_block): Made public.
787         * optabs.c (maybe_encapsulate_block): Ditto.
788         (emit_no_conflict_block, emit_libcall_block): Remove
789         REG_LIBCALL_ID when deleteing REG_RETVAL and REG_LIBCALL
790         notes.
791         * reload1.c (reload): Ditto.
792         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
793         Use maybe_encapsulate_block to add libcall notes.
795 2007-04-07  Kenneth Zadeck <zadeck@naturalbridge.com>
797         * dse.c (clear_alias_set_lookup): New function.
798         (store_info.is_set): New field.
799         (replace_inc_dec, delete_dead_store_insn): Added more ifdefs so
800         dse could be tested on mainline.
801         (canon_address): Moved lookup of alias_set info to subroutine and
802         added better logging.  Added code to detect if address contains an
803         AND and if so, escape.
804         (record_store, check_mem_read_rtx): White space cleanup. Added
805         code to skip store_info's for clobbers when comparing with
806         previous insn stores.  We also mark store_info's as to whether
807         they are set or clobber based.
808         (scan_insn): Only add insn to active_stores_list if it has exactly
809         one store.
810         (step1): Add code to remove a store to the frame that goes dead at
811         the end of a function if there is a non overlaping block mode read
812         from the stack.  The global algorithm cannot do this because it
813         takes a more conservative view of block mode reads.
814         (dse_confluence_0, dse_confluence_n, dse_transfer_function,
815         step5_spill, pass_rtl_dse2): Add ifdefs so this can be tested on
816         mainline.
817         (step5_nospill): Ignore clobbers and only look at the set to
818         decide if an insn can be deleted.
819         * init_regs.c: Whitespace.
820         * cselib.c (cselib_expand_value_rtx): Fixed comment and changed to
821         use proper macro.
823 2007-04-06  Paolo Bonzini  <bonzini@gnu.org>
825         * bitmap.c (bitmap_set_range): New.
826         (bitmap_clear_range): Small optimization.
827         * bitmap.h (bitmap_set_range): New.
828         * df-problems.c (df_ref_bitmap): Remove.
829         (struct df_rd_problem_data, df_ru_problem_data): Remove related
830         data structures.
831         (df_ru_alloc, df_rd_alloc): Don't allocate them.
832         (df_ru_free, df_rd_free): Don't free them.
833         (df_ru_bb_local_compute_process_def, df_ru_local_compute,
834         df_rd_bb_local_compute_process_def, df_rd_local_compute):
835         Use bitmap_set_range and bitmap_clear_range instead of df_ref_bitmap.
837 2007-04-05  Kenneth Zadeck <zadeck@naturalbridge.com>
839         * sbitmap.c (sbitmap_empty_p): New function.
840         * sbitmap.h (sbitmap_empty_p): New function.
841         * dbgcnt.def (dse): New counter and sorted the others.
842         * df-core.c (df_worklist_dataflow): Made init_fun optional.
843         * cse.c (cse_main): Do dce at start of pass.
844         * timevar.def (TV_DSE3): Deleted.
845         * dse.c: New pass.
846         * dse.h: New file for dse pass.
847         * gcse.c (gcse_main): Set up the register info.
848         * alias.c (clear_reg_alias_info): Removed dead function.
849         * rtl.h (clear_reg_alias_info): Removed dead function.
850         * cselib.c (cselib_discard_hook): Added cselib val parameter.
851         (discard_useless_values): Added hook call here.
852         (remove_useless_values): Removed hook call from here.
853         (expand_loc, cselib_expand_value_rtx): New function.
854         (cselib_finish): Clear hook.
855         * cselib.h (cselib_discard_hook): Added cselib val parameter.
856         (expand_loc, cselib_expand_value_rtx): New function.
857         * common.opt (flag_flow_dce, new-dce): Removed flag.
858         (flag_dce, flag_dse): New flags.
859         * Makefile.in (dse.o): New pass.
860         * passes.c (init_iptimization_passes): Removed dse after combine.
861         Renamed dse3 to dse2.
862         * dce.c (delete_unmarked_insns): Renamed new_dce to dce.
863         (end_dce, mark_artificial_uses, mark_reg_dependencies,
864         invariant_store_base_eq, invariant_store_base_hash, value_store_base_eq,
865         value_store_base_hash, store_base_del, rs_init, rs_confluence,
866         rs_transfer_function, init_invariant_store_group,
867         init_value_store_group, empty_store_group, end_store_group,
868         init_rs_dflow, end_rs_dflow, init_unmarked_stores,
869         end_unmarked_stores, init_dse, end_dse, dump_stores,
870         split_address, add_store_offset, record_store, record_stores,
871         store_offset_compare, store_base_local,
872         invariant_store_base_local, value_store_base_local,
873         value_store_base_useless, remove_useless_values,
874         store_base_global, finish_max_in_luid,
875         calculate_reaching_stores, frame_stores_escape_p,
876         store_base_prune_needed, mark_escaping_stores,
877         insn_might_read_mem_rtx, insn_might_read_mem_use,
878         insn_might_read_mem_p, mark_dependent_stores,
879         prescan_insns_for_dse, rest_of_handle_dse, gate_dse): Deleted functions
880         as part of new dse pass in separate file.
881         * reload1.c (alter_reg): Added calls to register spill slots
882         with dse.
884 2007-04-05  Peter Bergner  <bergner@vnet.ibm.com>
886         * config/rs6000/rs6000.c (rs6000_legitimate_address): Disallow
887         PRE_MODIFY for TDmode.
889 2007-04-04  Kenneth Zadeck <zadeck@naturalbridge.com>
891         * cfg.c (dump_reg_info): Added check to lower max if new regs
892         were added.
893         * init-regs.c (initialize_uninitialized_regs): Changed code to
894         insert move right before uninitized insn.
896 2007-04-03  Paolo Bonzini  <bonzini@gnu.org>
898         * df-problems.c (df_chain_create_bb): Plug leak.
900         * df-problems.c (df_chain_alloc): Fix typo.
902 2007-04-03  Paolo Bonzini  <bonzini@gnu.org>
904         * dce.c (dce_process_block): Copy into DF_LR_IN.
905         * df-problems.c (df_lr_free_bb_info): Support bb_info->in
906         being the same bitmap as bb_info->top.
907         (df_lr_alloc): The adef and ause fields must be either
908         both NULL or both non-NULL.  Initialize bb_info->top
909         to bb_info->in.
910         (df_lr_bb_local_compute): Allocate adef, ause, top together.
911         (df_lr_transfer_function): Simplify according to above
912         assumptions.
913         (df_lr_free): Zero out bb_info->top instead of freeing it
914         if it is the same as bb_info->in.
916 2007-04-01  Kenneth Zadeck <zadeck@naturalbridge.com>
918         * config/ia64/ia64.c (emit_predicate_relation_info): Changed
919         DF_LIVE_IN to df_get_live_in.
921 2007-03-29  Paolo Bonzini  <bonzini@gnu.org>
923         * bitmap.c (bitmap_elt_copy, bitmap_elt_ior): New.
924         (bitmap_ior, bitmap_ior_into): Use them.
925         (bitmap_and_compl): Use them, return whether DST changed.
926         (bitmap_ior_and_compl): Rewrite.
927         * bitmap.h (bitmap_and_compl): Return a bool.
929         * Makefile.in (alias.o): Fix dependencies.
930         * alias.c (find_base_value, init_alias_analysis): Use
931         DF_REG_DEF_COUNT.  Include df.h.
932         * cfg.c (dump_reg_info): Don't fail if reg_info not initialized.
933         * cse.c (cse_main): Assume dataflow initialized.  Call reg_scan.
934         * gcse.c (gcse_main): Call df_analyze, remove call to reg_scan.
935         * local-alloc.c (rest_of_handle_local_alloc): Call allocate_reg_info
936         earlier.
937         * passes.c (init_optimization_passes): Initialize dataflow before CSE.
939         * global.c (n_reg_sets): Remove.
940         (reg_sets): Change to a VEC.
941         (mark_reg_store): Push onto reg_sets.
942         (global_conflicts): Assert reg_sets is empty, pop values out of it.
943         Don't allocate it nor free it here.
944         (global_alloc): Allocate reg_sets if necessary.
946         * see.c (rest_of_handle_see): Don't call reg_scan.
947         * tracer.c (rest_of_handle_tracer): Likewise.
948         * cfgcleanup.c (rest_of_handle_jump2): Likewise.
949         * bb-reorder.c (fix_edges_for_rarely_executed_code): Likewise.
950         * loop-init.c (rtl_loop_done): Likewise.
951         * ifcvt.c (rest_of_handle_if_conversion): Likewise.
952         * mode-switching.c (optimize_mode_switching): Remove useless
953         allocate_reg_info.
954         * lower-subreg.c (decompose_register): Don't call clear_reg_info_regno.
955         (decompose_multiword_subregs): Don't call reg_scan_update.
956         * web.c (rest_of_handle_web): Delete.
957         (pass_web): Use web_main as pass routine.
959         * regclass.c (max_parallel, max_set_parallel): Remove.
960         (reg_scan): Don't set them.
961         (reg_scan_update): Delete.
962         (reg_scan_mark_refs): Remove last parameter.
964         * rtl.h (max_parallel): Remove.
966 2007-03-29  Paolo Bonzini <bonzini@gnu.org>
968         * df-core.c (pass_df_finish): Restore.
969         (pass_df_finish_opt, pass_df_finish_no_opt): Remove.
970         * tree-pass.h (pass_df_finish): Restore.
971         (pass_df_finish_opt, pass_df_finish_no_opt): Remove.
972         * passes.c (init_optimizations_passes): Remove pass_df_finish_no_opt.
973         Rename pass_df_finish_opt to pass_df_finish.
974         * reg-stack.c: Mostly evert previous commit.
976 2007-03-28  Kenneth Zadeck <zadeck@naturalbridge.com>
978         * tree-pass.h (pass_df_initialize, pass_df_finish): Deleted.
979         (pass_df_initialize_opt, pass_df_initialize_no_opt,
980         pass_stack_regs_run, pass_df_finish_opt, pass_df_finish_no_opt):
981         Added.
982         * df-core.c (df_finish_pass): Made ur and live problems condition
983         on optimization.
984         (pass_df_initialize): Renamed to pass_df_initialize_opt.
985         (pass_df_initialize_no_opt): New pass.
986         (gate_opt, gate_no_opt): New functions.
987         (pass_df_finish): Renamed to pass_df_finish_opt.
988         (pass_df_finish_no_opt): New pass.
989         * mode-switching.c (optimize_mode_switching): Changed references
990         of DF_LIVE_IN to df_get_live_in.
991         * global.c (compute_regsets): Only add urec problem when
992         optimizing.
993         * function.c (regno_clobbered_at_setjmp): Changed references
994         of DF_LIVE_OUT to df_get_live_out.
995         * regclass.c (regclass_init): Only call df_compute_regs_ever_live
996         if optimizing.
997         * stack-ptr-mod.c (notice_stack_pointer_modification): Only call
998         df_update_exit_block_uses if optimizing.
999         * df-problems.c (df_get_live_in, df_get_live_out): Return df_live
1000         sets if they are there.
1001         * reg-stack.c (rest_of_handle_stack_regs_run):
1002         Added new pass that just runs subpasses.
1003         * passes.c (init_optimization_passes): Added passes to turn on df
1004         at only some parts of the compilation for -O0.  Moved
1005         pass_split_before_regstack and pass_stack_regs into a subpass of
1006         the stack regs pass.
1008 2007-03-28  Paolo Bonzini  <bonzini@gnu.org>
1010         * df.h (df_ru_get_bb_info, df_rd_get_bb_info, df_lr_get_bb_info,
1011         df_ur_get_bb_info, df_live_get_bb_info, df_urec_get_bb_info):
1012         New inlines.
1013         * df-scan.c (df_scan_get_bb_info, df_get_artificial_uses,
1014         df_get_artificial_defs): Delete.
1015         * df-problems.c (df_ru_get_bb_info, df_rd_get_bb_info,
1016         df_lr_get_bb_info, df_ur_get_bb_info, df_live_get_bb_info,
1017         df_urec_get_bb_info): Delete.
1019 2007-03-20  Seongbae Park <seongbae.park@gmail.com>
1021         * combine.c (setup_incoming_promotions): Fix a bad merge
1022         - use the argument FIRST instead of recomputing it.
1024 2007-03-16  Paolo Bonzini  <bonzini@gnu.org>
1026         * tracer.c (tracer): Work around pr19340.c failure by cleaning up
1027         CFG outside cfglayout mode.  Proper fix will be brought in by
1028         next mainline merge.
1030 2007-03-16  Paolo Bonzini  <bonzini@gnu.org>
1032         PR rtl-optimization/31025
1033         * df.h (df_get_live_out): New prototype.
1034         * df-problems.c (df_get_live_out): New.
1035         (df_ri_bb_compute): Use it.
1037 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
1039         * tree-pass.h (pass_subregs_of_mode_finish): New pass declaration.
1040         * regclass.c (record_subregs_of_mode): Made static, and
1041         moved before init_subregs_of_mode to compile.
1042         (cannot_change_mode_set_regs, invalid_mode_change_p): Added assertion.
1043         (finish_subregs_of_mode): New function.
1044         (pass_subregs_of_mode_finish): New pass.
1045         * rtl.h (record_subregs_of_mode): Removed.
1046         * combine.c (gen_lowpart_for_combine): Removed calls to
1047         record_subregs_of_mode.
1048         * passes.c (init_optimization_passes): Moved pass_subregs_of_mode_init
1049         just before local_alloc. New pass pass_subregs_of_mode_finish
1050         after global_alloc.
1052 2007-03-09  Richard Earnshaw  <rearnsha@arm.com>
1054         * arm.c: Include df.h.
1056 2007-03-06  Steven Bosscher  <steven@gcc.gnu.org>
1058         * fwprop.c (try_fwprop_subst): Remove redundant df_notes_rescan.
1059         * see.c (rest_of_handle_see): Run a fast dce.  Don't run cleanup_cfg.
1060         * tracer.c (tracer): Clean up the cfg when still in cfglayout mode.
1061         * postreload-gcse.c (rest_of_handle_gcse2): Don't run
1062         delete_trivially_dead_insns, this pass cleans up after itself already.
1063         * df-scan.c (df_insn_rescan): Fix typo.
1064         * cse.c (rest_of_handle_cse): Don't use CLEANUP_EXPENSIVE.
1065         (rest_of_handle_cse2): Likewise.  Don't call delete_dead_jumptables.
1066         * web.c (rest_of_handle_web): Don't run delete_trivially_dead_insns.
1067         Also don't clean up the CFG, this pass does not transform the CFG.
1068         * loop-init.c (rtl_loop_done): Don't run delete_trivially_dead_insns.
1069         Don't use CLEANUP_EXPENSIVE.
1070         * ifcvt.c (rest_of_handle_if_conversion): Don't use CLEANUP_EXPENSIVE.
1071         * gcse.c (rest_of_handle_jump_bypass): Only remove unreachable basic
1072         blocks before the pass.  No need for a reg_scan.  Rebuild jump labels
1073         after delete_trivially_dead_insns.  Don't use CLEANUP_EXPENSIVE.
1074         (rest_of_handle_gcse): Rebuild jump labels after
1075         delete_trivially_dead_insns.  Don't call delete_dead_jumptables.
1076         Don't use CLEANUP_EXPENSIVE.
1077         * cfgcleanup.c (cleanup_cfg): Move delete_dead_jumptables call out of
1078         the loop.
1079         * combine.c (rest_of_handle_combine): Account cleanup_cfg to TV_JUMP.
1080         Don't use CLEANUP_EXPENSIVE.  Don't run delete_trivially_dead_insns.
1081         * bb-reorder.c (rest_of_handle_reorder_blocks): Don't use
1082         CLEANUP_EXPENSIVE.  Resurrect CLEANUP_CROSSJUMP here.
1084 2007-03-06  Paolo Bonzini  <bonzini@gnu.org>
1086         * cse.c (validate_canon_reg): Don't do anything if *XLOC is NULL.
1087         Assert it is only called with insn != 0 and it never resets
1088         something non-NULL to NULL.  Always use validate_change.
1089         (cse_insn): Always call canon_reg with an INSN except when it
1090         is used on a REG.  When processing notes, first canonicalize,
1091         then fold, and call df_notes_rescan.
1092         (cse_process_notes): Rename to cse_process_notes_1, add CHANGED
1093         parameter.
1094         (cse_process_notes_1): Wrapper around cse_process_notes to set
1095         the CHANGED parameter.
1096         (cse_extended_basic_block): Adjust call to cse_process_notes
1097         and use result to call df_notes_rescan.
1098         (cse_main): Set deferred insn rescanning flag, don't rescan on exit.
1099         (pass_cse2): Add TODO_df_finish.
1100         * gcse.c (pass_gcse): Likewise.
1102 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
1104         * regclass.c (scan_one_insn): Call df_insn_rescan after breaking
1105         out constant parameter.
1107 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
1109         * df-scan.c (df_grow_ref_info): Also add bitmap_addend to size.
1111 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
1113         Backport from mainline:
1114         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
1115         from register elimination as PRE_MODIFY / POST_MODIFY increments.
1116         Do not attempt to handle MEM inside auto-inc expressions.
1117         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
1118         of a register modified by an auto-inc expression.  However, do handle
1119         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
1120         (elimination_effects): Prohibit elimination of a register modified
1121         by an auto-inc expression.  Disable register elimination rules whose
1122         target register is modified by an auto-inc expression with variable
1123         increment.
1125 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
1127         Revert:
1128         2006-07-01  Daniel Berlin  <dberlin@dberlin.org>
1129                     David Edelsohn  <edelsohn@gnu.org>
1130                     Kenneth Zadeck <zadeck@naturalbridge.com>
1131         reload1.c (eliminate_regs_1, elimination_effects): Added cases for
1132         PRE/POST_MODIFY.
1134 2007-02-22  Seongbae Park <seongbae.park@gmail.com>
1136         * global.c (reg_becomes_live): Mark registers not live
1137         after CLOBBER.
1139 2007-02-22  Paolo Bonzini <bonzini@gnu.org>
1141         * combine.c (set_nonzero_bits_and_sign_copies, reg_nonzero_bits_for_combine,
1142         reg_num_sign_bit_copies_for_combine, get_last_value): Look at DF_LR to
1143         check if a register is uninitialized.
1145 2007-02-21  Paolo Bonzini <bonzini@gnu.org>
1147         * combine.c (uid_cuid, max_uid_cuid): Remove.
1148         (INSN_CUID): Replace throughout with DF_INSN_LUID.
1149         (last_call_cuid): Rename to last_call_luid.
1150         (subst_low_cuid): Rename to subst_low_luid.
1151         (last_insn_cost): Rename to max_uid_known.
1152         (uid_log_links): New.
1153         (INSN_COST, LOG_LINKS): New.
1154         (combine_validate_cost): Use INSN_COST instead of accessing
1155         uid_insn_cost.
1156         (create_log_links, clear_log_links): Move before combine_instructions.
1157         (combine_instructions): Don't compute cuids.  Allocate uid_log_links.
1158         Call create_log_links and clear_log_links here.  Only initialize
1159         data structures for insns within a basic block.  Use INSN_COST
1160         instead of accessing uid_insn_cost.  Reset last_call_luid and
1161         mem_last_set once for every basic block.  Update label_tick on every
1162         basic block, reset label_tick_ebb_start on every label.
1163         (can_combine_p, try_combine, reg_nonzero_bits_for_combine,
1164         reg_num_sign_bit_copies_for_combine, record_value_for_reg,
1165         record_dead_and_set_regs_1, record_dead_and_set_regs,
1166         get_last_value_validate, get_last_value, use_crosses_set_p,
1167         move_deaths, distribute_notes, distribute_links): Rename stuff
1168         as indicated above.  In tests for LUIDs, check that we refer to
1169         the same label_tick too.  In tests for label ticks, check that
1170         they are > label_tick_ebb_start.
1171         (rest_of_handle_combine): Don't create/clear loglinks here.
1173         * gengtype.c (adjust_field_rtx_def): Adjust index of JUMP_LABEL.
1174         * caller-save.c (init_caller_save): Adjust creation of INSNs.
1175         * rtl.def (CODE_LABEL): Adjust comment.
1176         (INSN, JUMP_INSN, CALL_INSN, BARRIER): Remove penultimate field.
1177         * emit-rtl.c (unshare_all_rtl_again, verify_rtl_sharing,
1178         unshare_all_rtl_in_chain, make_insn_raw, make_jump_insn_raw,
1179         make_call_insn_raw): Remove references to LOG_LINKS.
1180         * rtl.h (LOG_LINKS): Remove.
1181         (REG_NOTES, CALL_INSN_FUNCTION_USAGE, JUMP_LABEL): Shift index
1182         down by one.
1184         * regs.h (struct reg_info_def): Remove first_uid and last_uid.
1185         (REGNO_FIRST_UID, REGNO_LAST_UID): Remove.
1186         * cse.c (cse_basic_block_start, cse_basic_block_end, uid_cuid,
1187         max_uid, INSN_CUID): Remove.
1188         (struct cse_basic_block_data): Remove low_cuid and high_cuid.
1189         (reg_used_in_multiple_bb, reg_used_in_bb): New.
1190         (make_regs_eqv): Test reg_used_in_multiple_bb instead of cuids.
1191         (cse_prescan_path): Remove low_cuid and high_cuid.
1192         (mark_reg_use_bb): New.
1193         (cse_main): Replace computation of cuids with initialization of
1194         reg_used_in_multiple_bb.  Remove references to deleted variables.
1195         * regmove.c (copy_src_to_dest): Don't update REGNO_FIRST_UID and
1196         REGNO_LAST_UID.
1197         * regclass.c (reg_scan_mark_refs): Remove penultimate argument.
1198         Don't track REGNO_FIRST_UID and REGNO_LAST_UID.
1199         (reg_scan, reg_scan_update): Remove penultimate argument to
1200         reg_scan_mark_refs.
1202 2007-02-20  Seongbae Park <seongbae.park@gmail.com>
1204         * sched-ebb.c (schedule_ebbs): Clear DF_LR_RUN_DCE flag
1205         after df_analyze.
1207 2007-02-20  Kenneth Zadeck <zadeck@naturalbridge.com>
1209         * fwprop.c (forward_propagate_into): Removed call to
1210         df_recompute_luids.
1211         * see.c (see_free_data_structures): Ditto.
1212         * loop-iv.c (iv_analysis_loop_init): Ditto.
1213         * dce.c (prescan_insns_for_dse): Ditto.
1214         * auto-inc-dec.c (merge_in_block): Moved call to
1215         df_recompute_luids so that it only happens on subsequent passes of
1216         block.
1217         * df-scan.c (df_grow_insn_info): Made public.
1218         * df.h (df_grow_insn_info): Made public.
1219         * df-core.c: Fixed comments.
1220         * df-problems.c (df_ur_bb_local_compute): Reversed order of
1221         processing insns.  Removed usage of seen_in_block and
1222         seen_in_insn.  Update luid.
1223         (df_ur_local_compute, df_ur_verify_transfer_functions): Added call
1224         to df_grow_insn_info and deleted calls to df_set_seen, df_unset_seen.
1226 2007-02-16  Paolo Bonzini  <bonzini@gnu.org>
1228         * combine.c (INSN_CUID): Always look up uid_cuid.
1229         (insn_cuid): Delete.
1230         * sched-deps.c (sched_analyze): Don't free LOG_LINKS here.
1231         * sched-int.h (struct dep_list): Don't mention LOG_LINKS in comment.
1233 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
1235         * config/sh/sh.c (sh_reorg): Don't look at LOG_LINKS.
1237 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
1239         * combine.c (find_single_use): Don't check for reload flags.
1241 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
1243         Merge from mainline.
1245         2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
1247         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
1249 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
1251         Merge from mainline.
1253         2007-02-13  Seongbae Park <seongbae.park@gmail.com>
1255         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
1256         Ensure dst->current is valid.
1258 2007-02-13  Kenneth Zadeck <zadeck@naturalbridge.com>
1260         * lower-subregs.c (resolve_reg_notes): Added code to call
1261         df_notes_rescan when REG_EQUAL notes are changed.
1263 2007-02-12  Kenneth Zadeck <zadeck@naturalbridge.com>
1265         * global.c (compute_regsets): Removed first two parameters.
1266         Converted asm_clobbered to regs_asm_clobbered.
1267         (global_alloc): Removed bad merged call to make_accurate_live_analysis.
1268         (global_alloc, rest_of_handle_global_alloc): Removed first two
1269         parameters from compute_regsets.
1271 2007-02-06  Kenneth Zadeck <zadeck@naturalbridge.com>
1273         * ifcvt.c (noce_process_if_block): Removed unnecessary insn deletes.
1274         (dead_or_predictable): Removed incorrect bit vector operation.
1275         * lower-subregs (simple_move_operand, resolve_clobber): Change from mainline.
1276         (resolve_clobber): Added df_insn_rescan of clobber.
1277         (decompose_multiword_subregs): Added df setup and removed debugging.
1278         (pass_lower_subreg2): Added df cleanup.
1279         * Makefile.in (lower-subregs.o): Added df.h dependence.
1281 2007-02-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1283         * config/sh/sh.c (sh_expand_prologue): Remove unneeded brackets.
1284         (sh_expand_epilogue): Add blockage insn when not
1285         frame_pointer_needed.
1286         (sh_output_mi_thunk): Don't use flow analysis here.
1287         * config/sh/sh.md (UNSPEC_EH_RETURN): Remove.
1288         (UNSPECV_EH_RETURN): New macro.
1289         (sibcall_valuei): New.
1290         (sibcall_valuei_pcrel, sibcall_value_pcrel): Likewise.
1291         (sibcall_value_compact, sibcall_value_media): Likewise.
1292         (sibcall_value): Use new sibcall_value* patterns.
1293         (eh_set_ra_si): Use unspec_volatile and UNSPECV_EH_RETURN.
1294         (eh_set_ra_di, eh_set_ra_di+1): Likewise.
1296 2007-02-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1298         * mode-switching.c (create_pre_exit): Skip CLOBBER of pseudo
1299         register for the result when not optimizing.
1300         (optimize_mode_switching): Move df_ri_add_problem and df_analyze
1301         calls after create_pre_exit call.
1303 2007-02-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1305         * modulo-sched.c (sms_schedule): Call df_ri_add_problem
1306         with DF_RI_LIFE.
1308 2007-02-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1310         * df-scan.c (df_get_entry_block_def_set): Use struct_value_rtx
1311         hook instead of TARGET_STRUCT_VALUE_RTX.
1313 2007-02-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1315         * passes.c (init_optimization_passes): Move df_finish after
1316         delay_slots.
1318 2007-01-02  Kenneth Zadeck <zadeck@naturalbridge.com>
1320         * optabs.c (emit_no_conflict_block): Removed redundant code to
1321         number libcalls.
1322         * tree-pass.h (pass_initialize_subregs): Renamed to
1323         pass_initialize_regs.
1324         * passes.c (init_optimization_passes): Ditto.
1325         * builtins.c (expand_builtin_setjmp_receiver): Changed
1326         gen_rtx_ASM_INPUT to gen_blockage.
1327         * function.c (expand_function_end): Ditto.
1328         * stmt.c (gen_non_local_got_receiver): Ditto.
1329         * config/i386.md (blockage): Don't take an operand.
1330         (prologue_use): New.
1331         * config/i386.c (ix86_expand_prologue): Don't build a blockage
1332         insn with an operand.  If the PIC reg is used, use a prologue_use
1333         insn to protect it from being removed.
1334         * df-scan.c (df_get_entry_block_def_set): Generate ref for
1335         INCOMING_RETURN_ADDR_RTX after reload_completed.
1336         * df-core.c (df_ref_debug): Fixed formatting.
1337         * init-regs.c: Renamed from subregs_init.c and changed to
1338         initialize all fully uninitialized registers.
1339         * bt-load.c (compute_defs_uses_and_gen): Changed check for
1340         ASM_INPUT to UNSPEC_VOLATILE.
1341         * df-problems.c (df_set_unused_notes_for_mw,
1342         df_set_dead_notes_for_mw, df_ri_bb_compute): Cleaned up reg_notes
1343         debugging info.
1344         (df_set_dead_notes_for_mw): Added do_not_gen to test of all notes
1345         dead.
1346         * Makefile.in (subregs-init.*): Renamed to init-regs.*.
1347         * config/arm/arm.c (arm_expand_prologue, thumb_expand_prologue):
1348         Removed code to generate explicit uses of LR_REGNUM from prologue.
1349         * config/arm/arm.h (EPILOGUE_USES): Made LR_REGNUM unconditionally
1350         added.
1351         * dce.c (deletable_insn_p): Made clobbers always live for use-def
1352         based dce.
1353         (prescan_insns_for_dce, prescan_insns_for_dse): Added fast
1354         parameter to deletable_insn_p.
1355         (run_fast_df_dce): Temporarily turn off DF_DEFER_INSN_RESCAN
1356         during this subphase.
1359 2007-02-01  Seongbae Park <seongbae.park@gmail.com>
1361         * df-scan.c (df_sort_and_compress_refs):
1362         Style fix.
1363         (df_sort_and_compress_mws):
1364         Style fix. Fix missing & in parameters for df_mw_compare call.
1366 2007-02-01  Seongbae Park <seongbae.park@gmail.com>
1368         * df-scan.c (df_swap_refs): New function.
1369         (df_sort_and_compress_refs, df_sort_and_compress_mws):
1370         Avoid qsort call overhead if the array has only 2 elements
1371         or if it's already sorted.
1373 2007-01-17  Eric Christopher  <echristo@apple.com>
1375         * config/mips/mips.c (mips_output_function_epilogue): Use SET_REGNO
1376         instead of REGNO.
1377         (mips_output_mi_thunk): Ditto.
1379 2007-01-17  Eric Christopher  <echristo@apple.com>
1381         * reorg.c (fill_simple_delay_slots): Fix prototype.
1383 2007-01-15  Andreas Krebbel  <krebbel1@de.ibm.com>
1385         * regmove.c: (fixup_match_1): Call df_notes_rescan after
1386         changing insn notes.
1388 2007-01-15  Andreas Krebbel  <krebbel1@de.ibm.com>
1390         * config/s390/s390.c: Include df.h.
1391         (s390_emit_prologue): Call df_insn_rescan when annotating constant
1392         pool references.
1394 2007-01-15  Andreas Krebbel  <krebbel1@de.ibm.com>
1396         * rtl.h (split_all_insns_noflow): Add prototype.
1397         * recog.c (split_all_insns_noflow): Remove static.
1399 2007-01-14  Kenneth Zadeck <zadeck@naturalbridge.com>
1400         * fwprop.c (update_df): Only rescan if insn has really changed.
1401         (try_fwprop_subst): Removed call to df_set_bb_dirty.
1402         (fwprop_init): Added new parameter to df_maybe_reorganize_use_refs.
1403         * df-scan.c (df_scan_alloc): Removed calls to df_grow_ref_info.
1404         (df_scan_blocks, df_ref_create, df_reg_chain_unlink,
1405         df_maybe_reorganize_use_refs, df_maybe_reorganize_def_refs,
1406         df_install_ref, df_install_refs, df_refs_add_to_chains): Changed
1407         to support new modes adding refs to the df.ref_info.refs.
1408         (df_reg_chain_unlink, df_install_ref, df_ref_create_structure,
1409         df_hard_reg_used_p): Changed DF_REGS_EVER_LIVE to
1410         DF_HARD_REG_LIVE.
1411         (df_ref_remove, df_ref_create): Added call to dirty the block when
1412         a ref is changed manually.
1413         (df_insn_rescan, df_notes_rescan): Added bb param to
1414         df_refs_add_to_chains.
1415         (df_reorganize_refs): Renamed to df_reorganize_refs_by_reg.
1416         (df_count_refs, df_add_refs_to_table,
1417         df_reorganize_refs_by_insn_bb, df_reorganize_refs_by_insn,
1418         df_hard_reg_used_count): New functions.
1419         (df_drop_organized_tables): Removed.
1420         * df_core.c (df_set_blocks, df_finish_pass): Changed
1421         to support new modes adding refs to the df.ref_info.refs.
1422         * df.h (df_ref_flags.DF_REGS_EVER_LIVE): Renamed to
1423         DF_HARD_REG_LIVE.
1424         (df_ref_order): New Enum.
1425         (df_ref_info.{refs_organized_alone, refs_organized_with_eq_uses,
1426         add_refs_inline}): Replaced with df_ref_info.ref_order.
1427         (DF_REG_EVER_LIVE_P): Removed macro.
1428         * df-problems.c (df_ru_local_compute): Added parm to
1429         df_maybe_reorganize_use_refs.
1430         (df_rd_local_compute): Added parm to
1431         df_maybe_reorganize_def_refs.
1433 2007-01-12  Kenneth Zadeck <zadeck@naturalbridge.com>
1434         * df-scan.c (df_collection_rec): New structure.
1435         (df_chains): Deleted structure.
1436         (DEBUG_DF_RESCAN): Removed conditional compilation of rescanning.
1437         (df_scan_start_block): Added ifdefed out code that prints the
1438         scanning of insns.
1440         (df_ref_create, df_get_artificial_defs, df_get_artificial_uses,
1441         df_reg_chain_unlink, df_ref_remove, df_ref_chain_delete_du_chain,
1442         df_ref_chain_delete, df_mw_hardreg_chain_delete, df_insn_rescan,
1443         df_ref_chain_change_bb, df_insn_change_bb,
1444         df_ref_change_reg_with_loc_1, df_mw_hardreg_chain_delete_eq_uses,
1445         df_notes_rescan, df_refs_add_to_chains, df_ref_create_structure,
1446         df_ref_record, df_def_record_1, df_defs_record, df_uses_record,
1447         df_get_conditional_uses, df_insn_refs_collect, df_recompute_luids,
1448         df_bb_refs_collect, df_entry_block_defs_collect,
1449         df_update_entry_block_defs, df_exit_block_uses_collect,
1450         df_record_exit_block_uses, df_update_exit_block_uses,
1451         df_compute_regs_ever_live, df_reg_chain_mark,
1452         df_reg_chain_verify_unmarked, df_insn_refs_verify, df_bb_verify,
1453         df_scan_verify): Changed to use vector rep for refs.
1454         (df_get_call_refs) Ditto plus fixed bug where clobber ref was
1455         generated for same ref as result of call.
1456         (df_reg_chain_create, df_ref_unlink, df_ref_chain_find_ref,
1457         df_ref_chain_find_ref_by_regno, df_ref_chain_append,
1458         df_ref_find_chains, df_ref_add_to_chains, df_insn_refs_record,
1459         df_ref_chain_verify_and_unmark, df_ref_chain_free, df_ref_verify,
1460         df_mw_hardreg_find_hardreg): Deleted function.
1461         (df_ref_compress_rec, df_free_collection_rec, df_ref_compare,
1462         df_sort_and_compress_refs, df_mw_compare, df_sort_and_compress_mws
1463         df_canonize_collection_rec, df_install_ref, df_install_refs,
1464         df_refs_verify, df_mws_verify): New function.
1465         (df_ref_is_equal): Renamed to df_ref_equal_p and changed to use
1466         vector rep for refs.
1467         (df_mw_is_equal): Renamed to df_mw_equal_p and changed to use
1468         vector rep for refs.
1469         * df.h (df_ref_flags.(DF_REF_MW_HARDREG_GROUP, DF_REF_REF_MARKER):
1470         Removed.
1471         (df_ref_flags.(DF_REF_REG_MARKER, DF_REGS_EVER_LIVE)): Renumbered.
1472         (df_mw_hardreg.(loc, start_regno, end_regno, mw_order)): New
1473         fields.
1474         (df_insn_info.(defs, uses, eq_uses, mw_hardregs): Made into arrays
1475         of pointers.
1476         (df_scan_bb_info.(artificial_defs, artificial_uses): Ditto.
1477         (df_ref.ref_order): New field.
1478         (df_ref.next): Removed.
1479         (df.ref_order): New field.
1480         (DF_REF_REF_MARK, DF_REF_REF_UNMARK, DF_REF_IS_REF_MARKED,
1481         DF_REF_NEXT_REF): Removed macro.
1482         (DF_REF_ORDER): New macro.
1483         * df-core.c (df_bb_regno_last_use_find, df_bb_regno_last_use_find,
1484         df_bb_regno_first_def_find, df_bb_regno_last_def_find,
1485         df_insn_regno_def_p, df_find_def, df_find_use, df_refs_chain_dump,
1486         df_mws_dump, df_insn_uid_debug, df_insn_debug): Ditto.
1487         * fwprop.c (update_df): Do not call df_insn_rescan unless insn has
1488         changed.
1489         (local_ref_killed_between_p, all_uses_available_at,
1490         find_occurrence, update_df): Changed to use
1491         vector rep for refs.
1492         * see.c (see_handle_relevant_refs, see_update_relevancy,
1493         see_propagate_extensions_to_uses): Ditto.
1494         * auto-inc-dec.c (find_inc, merge_in_block): Ditto.
1495         * web.c (union_defs, web_main): Ditto.
1496         * global.c (compute_regs_asm_clobbered): Ditto.
1497         * ifcvt.c (dead_or_predicable): Ditto.
1498         * loop-invariant.c (find_defs, check_dependency,
1499         find_invariant_insn): Ditto.
1500         * combine.c (create_log_links): Ditto.
1501         * df-problems.c (df_ru_alloc, df_ru_bb_local_compute_process_def,
1502         df_ru_bb_local_compute_process_use, df_rd_alloc,
1503         df_rd_bb_local_compute_process_def, df_lr_bb_local_compute,
1504         df_lr_simulate_artificial_refs_at_end, df_lr_simulate_one_insn,
1505         df_ur_bb_local_compute, df_urec_bb_local_compute,
1506         df_urec_bb_local_compute, df_chain_remove_problem,
1507         df_chain_remove_problem, df_chain_reset,
1508         df_chain_create_bb_process_use, df_chain_create_bb,
1509         df_chain_top_dump, df_chain_top_dump, df_chain_bottom_dump,
1510         df_set_unused_notes_for_mw, df_set_dead_notes_for_mw,
1511         df_ri_bb_compute): Ditto.
1512         * dce.c (delete_corresponding_reg_eq_notes, mark_artificial_uses,
1513         mark_reg_dependencies, dce_process_block): Ditto.
1517 2007-01-10  Seongbae Park <seongbae.park@gmail.com>
1518         * df-core.c (df_worklist_propagate_backward,
1519         df_worklist_dataflow)): More comments.
1520         (df_iterative_dataflow): Whitespace fixup.
1521         * cfganal.c (inverted_post_order_compute):
1522         More comments and rename a local variable DEST to PRED.
1523         (df_find_deadend): More comments. Use gcc_unreachable().
1525 2007-01-09  Seongbae Park <seongbae.park@gmail.com>
1526         * df-core.c (rest_of_handle_df_initialize): Allocate and free new
1527         fields struct dataflow::{postorder_inverted,n_blocks_inverted}.
1528         (df_hybrid_search_forward, df_hybrid_search_backward): Pass visited,
1529         pending, considered as parameters instead of fields of struct df.
1530         (df_worklist_propagate_forward, df_worklist_propagate_backward,
1531         df_worklist_dataflow): New functions.
1532         (df_iterative_dataflow): Remove visited, pending, considered
1533         fields from struct dataflow.
1534         (df_analyze): Allocate and free new fields
1535         df::{postorder_inverted,n_blocks_inverted}.
1536         (df_get_n_blocks, df_get_postorder): Make them return
1537         different values depending on the direction of the dataflow problem.
1538         (df_simple_dataflow): Renamed from df_simple_iterative_dataflow.
1539         Call df_worklist_dataflow instead of df_iterative_dataflow.
1540         * cfganal.c (dfs_find_deadend, inverted_post_order_compute):
1541         New functions.
1542         * df.h (struct dataflow): Remove fields visited, pending, considered.
1543         Add new fields postorder_inverted, n_blocks_inverted.
1544         (df_get_nblocks, df_get_postorder): Prototype change.
1545         (df_simple_dataflow): Renamed from df_simple_iterative_dataflow.
1546         (df_worklist_dataflow): New function prototype.
1547         * df-problems.c: Use df_worklist_dataflow instead of
1548         df_iterative_dataflow for solver.
1549         * basic-block.h (inverted_post_order_compute): New function prototype.
1550         * dce.c (dce_process_block): Pass extra parameter to df_get_n_blocks
1551         and df_get_postorder.
1552         (calculate_reaching_stores): Call df_simple_dataflow,
1553         renamed from df_simple_iterative_dataflow.
1556 2007-01-05  Kenneth Zadeck <zadeck@naturalbridge.com>
1557         * see.c (see_update_defs_relevancy): Type fixed.
1558         * df-scan.c (df_reg_chain_unlink, df_ref_verify): Made tolerant of
1559         refs table not being there.
1560         (df_drop_organized_tables): New function.
1561         * df-core.c (df_finish_pass): Drop refs tables after each pass.
1562         * web.c (web_main): Reorganized access to not use ref tables and
1563         go in order of insns.
1564         * df.h (df_drop_organized_tables): New function.
1565         * df-problems.c (df_chain_start_dump): Deleted function.
1566         (df_chain_top_dump, df_chain_bottom_dump): New functions.
1568 2007-01-03  Kenneth Zadeck <zadeck@naturalbridge.com>
1569         * see.c (see_initialize_data_structures): Does not use
1570         DF_USES_TABLE_SIZE or DF_DEFS_TABLE_SIZE.
1571         (see_handle_relevant_defs, see_handle_relevant_uses): Removed
1572         outer loop.  Now a subrouting of see_handle_relevant_refs.
1573         (see_handle_relevant_refs, see_update_relevancy): New functions
1574         that now loops over insns.
1575         (see_update_uses_relevancy, see_update_defs_relevancy): Removed
1576         outer loop.  Now a subroutine of see_update_relevancy.
1577         (see_analyze_one_def): Removed unnecessary tests.
1578         (see_propagate_extensions_to_uses): Now iterates over insns and
1579         calls see_handle_relevant_refs and see_update_relevancy.
1580         * df-scan.c (df_reg_chain_unlink, df_insn_delete): Added code to
1581         skip the chain field of refs if the chain problem is not active.
1582         (df_scan_verify): Moved verification of the
1583         out_of_date_transfer_functions fields into the problem verifiers.
1584         * df-core.c (df_set_blocks): More logging.
1585         (df_finish_pass): Moved around when recanning is done.
1586         (rest_of_handle_df_initialize): Moved creation of
1587         handles out_of_date_transfer_functions to the problems.
1588         (df_set_bb_dirty, df_clear_bb_dirty, df_compact_blocks): Now
1589         handles out_of_date_transfer_functions in any problem.
1590         * df.h: Added comments.
1591         * df-problems.c (df_lr_add_problem, df_ur_add_problem,
1592         df_chain_add_problem): Allocates out_of_date_transfer_functions.
1593         (df_lr_verify_transfer_functions,
1594         df_ur_verify_transfer_functions): Now verifies
1595         out_of_date_transfer_functions.
1596         (df_chain_remove_problem): Tears down problem by looping over
1597         insns.
1598         (df_chain_fully_remove_problem, df_chain_free): Frees
1599         out_of_date_transfer_functions.
1600         (df_chain_create_bb): Sets out_of_date_transfer_functions.
1603 2007-01-02  Kenneth Zadeck <zadeck@naturalbridge.com>
1604         * df-scan.c (df_reg_chain_create, df_reg_chain_unlink,
1605         df_ref_create_structure, df_hard_reg_used_p): Added code to
1606         process df->hard_regs_live_count.
1607         (df_ref_is_record_live, df_reg_chain_find_ref): Deleted.
1608         (df_refs_add_to_chains): Removed ifdefed code.
1609         (df_compute_regs_ever_live): Fixed "&" vs "&&" problem.
1610         * df-core (rest_of_handle_df_initialize,
1611         rest_of_handle_df_finish): Added code to
1612         process df->hard_regs_live_count.
1613         * global.c (global_alloc): Repositioned use of urec problem.
1614         (build_insn_chain): Changed use of DF_RA_LIVE_TOP to df_get_live_top.
1615         (rest_of_handle_global_alloc): Removed call to df_analyze for no
1616         optimize case.
1617         * local-alloc.c (update_equiv_regs): Added calls to
1618         df_notes_rescan where eq notes are hacked.
1619         (block_alloc): Changed DF_RA_LIVE_TOP to DF_LR_TOP.
1620         (rest_of_handle_local_alloc): Removed addition of urec problem.
1621         * function.c (regno_clobbered_at_setjmp): Changed df_get_live_out
1622         to DF_LIVE_OUT.
1623         * (df_ref_flags.DF_REGS_EVER_LIVE): New flag.
1624         (df.hard_regs_live_count): New bitmap.
1625         (DF_LR_TOP, DF_REG_EVER_LIVE_P): New macro.
1626         (df_get_live_out): Removed.
1627         (df_get_live_top): Added.
1628         * df-problems.c (df_get_live_in): Does not look at DF_LIVE.
1629         (df_get_live_out): Deleted.
1630         (df_get_live_top): Added.
1631         * config/sh/sh.c (calc_live_regs): Changed regs_ever_live to
1632         df_regs_ever_live_p.
1633         * config/mn10300/mn10300.c (fp_regs_to_save): Ditto.
1634         * reload1.c (reload): Corrected the set of bitmaps to modify after
1635         reloading.
1638 2007-01-01  Eric Christopher  <echristo@apple.com>
1640         * config/darwin.c: Include df.h.
1641         (machopic_legitimize_pic_address): Use
1642         df_set_regs_ever_live.
1644 2006-12-28  Kenneth Zadeck <zadeck@naturalbridge.com>
1645         * regs.h: (regs_ever_live, regs_asm_clobbered): Removed.
1646         * final.c (regs_ever_live, regs_asm_clobbered): Removed.
1647         (only_leaf_regs_used, leaf_renumber_regs_insn): Encapsulated
1648         references to regs_ever_live.
1649         * global.c (insn_contains_asm_1, insn_contains_asm,
1650         compute_regs_asm_clobbered): New functions.
1651         (global_alloc): Added call to compute_regs_asm_clobbered and
1652         encapsulated references to regs_ever_live.
1653         (dump_global_regs): Encapsulated references to regs_ever_live.
1654         (rest_of_handle_global_alloc): Changed call to df_scan_alloc.
1655         * regrename.c (regrename_optimize, regrename_optimize): Encapsulated
1656         references to regs_ever_live.
1657         * recog.c (peep2_find_free_register): Ditto.
1658         * rtl-factoring (recompute_gain_for_pattern_seq,
1659         abstract_best_seq): Ditto.
1660         * bt-load.c (move_btr_def, migrate_btr_defs): Ditto.
1661         * reg_stack.c (reg_to_stack): Ditto.
1662         * config/alpha/alpha.c (alpha_ra_ever_killed, alpha_sa_mask,
1663         alpha_sa_size): Ditto.
1664         * config/frv/frv.c (frv_stack_info, frv_function_prologue): Ditto.
1665         * config/s390/390.c (legitimize_pic_address,
1666         legitimize_tls_address, find_unused_clobbered_reg,
1667         s390_regs_ever_clobbered, s390_register_info,
1668         s390_init_frame_layout, s390_update_frame_layout,
1669         s390_emit_prologue): Ditto.
1670         * config/m32c/m32.c (need_to_save): Ditto.
1671         * config/spu/spu.c (spu_split_immediate): Ditto.
1672         * config/sparc/sparc.c (sparc_compute_frame_size,
1673         sparc_output_scratch_registers, save_or_restore_regs,
1674         order_regs_for_local_alloc): Ditto.
1675         * config/m32r/m32r.c (MUST_SAVE_FRAME_POINTER,
1676         MUST_SAVE_RETURN_ADDR, m32r_hard_regno_rename_ok): Ditto.
1677         * config/i386/i386.h (ix86_current_function_calls_tls_descriptor):
1678         Ditto.
1679         * config/i386/i386.c (ix86_select_alt_pic_regnum, ix86_save_reg,
1680         ix86_expand_prologue, legitimize_pic_address,
1681         legitimize_tls_address): Ditto.
1682         * config/sh/sh.c (calc_live_regs, sh_media_register_for_return,
1683         sh_expand_prologue, sh_hard_regno_rename_ok): Ditto.
1684         * config/pdp11/pdp11.c (pdp11_output_function_prologue,
1685         pdp11_output_function_epilogue): Ditto.
1686         * config/pdp11/pdp11.h (may_call_alloca): Ditto.
1687         * config/avr/avr.c (avr_regs_to_save, sequent_regs_live,
1688         avr_peep2_scratch_safe): Ditto.
1689         * config/crx/crx.h (HARD_REGNO_RENAME_OK): Ditto.
1690         * config/crx/crx.c (crx_compute_save_regs): Ditto.
1691         * config/c4x/c4x.c (c4x_isr_reg_used_p, c4x_expand_prologue,
1692         c4x_null_epilogue_p): Ditto.
1693         * config/c4x/c4x.h (reg_class): Ditto.
1694         * config/stormy16/stormy16.c (REG_NEEDS_SAVE): Ditto.
1695         * config/fr30/fr30.c (MUST_SAVE_FRAME_POINTER,
1696         MUST_SAVE_RETURN_POINTER): Ditto.
1697         * config/m68hc11/m68hc11.c (m68hc11_initial_elimination_offset,
1698         m68hc11_total_frame_size, expand_prologue): Ditto.
1699         * config/cris/cris.c (cris_reg_saved_in_regsave_area,
1700         cris_return_addr_rtx): Ditto.
1701         * config/iq2000/iq2000.h (MUST_SAVE_REGISTER): Ditto.
1702         * config/iq2000/iq2000.c (iq2000_can_use_return_insn): Ditto.
1703         * config/mt/mt.c (mt_compute_frame_size): Ditto.
1704         * config/mt/mt.h (save_direction): Ditto.
1705         * config/mn10300/mn10300.c (REG_SAVE_BYTES, can_use_return_insn,
1706         mn10300_get_live_callee_saved_regs, expand_prologue,
1707         initial_offset): Ditto.
1708         * config/ia64/ia64.c (find_gr_spill, ia64_compute_frame_size):
1709         Ditto.
1710         * config/m68k/m68k.c (m68k_save_reg, m68k_hard_regno_rename_ok):
1711         Ditto.
1712         * config/rs6000/rs6000.c (rs6000_got_register, first_reg_to_save,
1713         first_fp_reg_to_save, first_altivec_reg_to_save,
1714         compute_vrsave_mask, rs6000_stack_info, create_TOC_reference,
1715         rs6000_emit_prologue): Ditto.
1716         * config/rs6000/rs6000.h (HARD_REGNO_RENAME_OK): Ditto.
1717         * config/arc/arc.c (MUST_SAVE_REGISTER, MUST_SAVE_RETURN_ADDR):
1718         Ditto.
1719         * config/mcore/mcore.c (calc_live_regs): Ditto.
1720         * config/score/score-mdaux.c (score_save_reg_p): Ditto.
1721         * config/arm/arm.c (use_return_insn, thumb_find_work_register,
1722         arm_compute_save_reg0_reg12_mask, arm_compute_save_reg_mask,
1723         arm_get_vfp_saved_size, arm_output_epilogue, thumb_force_lr_save,
1724         arm_get_frame_offsets, arm_expand_prologue, thumb_far_jump_used_p,
1725         thumb_unexpanded_epilogue, thumb_expand_epilogue): Ditto.
1726         * config/arm/arm.h (HARD_REGNO_RENAME_OK): Ditto.
1727         * config/pa/pa.c (compute_frame_size, pa_output_function_prologue,
1728         hppa_expand_prologue, hppa_expand_epilogue,
1729         hppa_can_use_return_insn_p, output_lbranch): Ditto.
1730         * config/pa/pa.h (HARD_REGNO_RENAME_OK): Ditto.
1731         * config/mips/mips.c (mips_global_pointer, mips_save_reg_p,
1732         mips_can_use_return_insn, build_mips16_call_stub): Ditto.
1733         * config/vax/vax.c (vax_output_function_prologue): Ditto.
1734         * config/v850/v850.c (substitute_ep_register,
1735         compute_register_save_size): Ditto.
1736         * config/h8300/h8300.c (byte_reg, h8300_hard_regno_rename_ok):
1737         Ditto.
1738         * config/mmix/mmix.c (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS,
1739         mmix_initial_elimination_offset, mmix_reorg,
1740         mmix_use_simple_return, mmix_expand_prologue,
1741         mmix_expand_epilogue): Ditto.
1742         * config/bfin/bfin.c (n_dregs_to_save, n_pregs_to_save,
1743         n_regs_saved_by_prologue, expand_interrupt_handler_prologue,
1744         expand_interrupt_handler_epilogue, bfin_hard_regno_rename_ok):
1745         Ditto.
1746         * reload1.c (reload, mark_home_live, spill_hard_reg,
1747         finish_spills): Ditto.
1748         * df-scan.c (regs_ever_live): Added as local var.
1749         (df_scan_free_internal): Delete bitmap.
1750         (df_scan_free_bb_info): Inlined code from removed df_bb_delete.
1751         (df_scan_alloc): Removed blocks_to_rescan param and reference to
1752         out_of_date_transfer_functions and added insns_to_notes_rescan.
1753         (df_scan_free): Removed reference to
1754         out_of_date_transfer_functions.
1755         (df_scan_start_dump, df_scan_start_block): Added ";;" in front of
1756         debugging lines.
1757         (problem_SCAN): Added extra null fields.
1758         (df_scan_blocks): Added code to set entry and exit blocks as
1759         dirty.
1760         (df_insn_delete): Added basic block parameter and support for
1761         insns_to_notes_rescan.
1762         (df_bb_delete): Removed.
1763         (df_insn_rescan, df_insn_rescan_all, df_process_deferred_rescans,
1764         df_notes_rescan): Added support for insns_to_notes_rescan.
1765         (df_insn_rescan, df_insn_rescan_all, df_process_deferred_rescans):
1766         Added extra parameter to df_insn_delete.
1767         (df_process_deferred_rescans): Added support to fixup entry and
1768         exit blocks if regs_ever_live changes.
1769         (df_insn_change_bb): Added debugging.
1770         (df_ref_change_reg_with_loc_1): Added code to dirty the block.
1771         (df_insn_contains_asm_1, df_insn_contains_asm): Function moved to
1772         global.c.
1773         (df_insn_refs_record): Removed code to set insn_contains_asm.
1774         (df_bb_refs_record): Now sets itself dirty.
1775         (df_get_entry_block_def_set, df_get_exit_block_use_set):
1776         Encapsulated references to regs_ever_live.
1777         (df_update_entry_block_defs, df_update_exit_block_uses): Added
1778         finer grained control on dirtying the block.
1779         (df_regs_ever_live_p, df_set_regs_ever_live): New functions.
1780         (df_compute_regs_ever_live): New reset parameter.
1781         (df_verify_blocks): Renamed to df_scan_verify and added more
1782         checking code.
1783         * df-core.c (df_add_problem): Initialized solutions_dirty.
1784         (df_finish_pass): Added calls to verify transfer functions.
1785         (rest_of_handle_df_initialize): Added more initialization for
1786         persistent structures.
1787         * (df_hybrid_search_forward, df_hybrid_search_backward,
1788         df_iterative_dataflow, df_analyze_problem): Removed single_pass parameter.
1789         (df_analyze_problem): Added checking for results of dataflow.
1790         (df_analyze): Added more debugging and removed changing
1791         out_of_date_transfer functions.
1792         (df_get_bb_dirty, df_set_bb_dirty, df_compact_blocks): Supports
1793         each problem having it own incremental
1794         status bits.
1795         (df_clear_bb_dirty, df_verify, df_compute_cfg_image,
1796         df_check_cfg_clean, df_set_clean_cfg): New function.
1797         (df_compact_blocks, df_bb_replace): More debugging.
1798         *df.h (df_alloc_function, df_local_compute_function): Removed
1799         blocks_to_scan parameter.
1800         (df_dataflow_function): Removed single_pass parameter.
1801         (df_verify_solution_start, df_verify_solution_end): New function
1802         types.
1803         (dataflow.out_of_date_transfer_functions,
1804         dataflow.solutions_dirty): Moved from df structure so each problem
1805         could have its own copy.
1806         (df_insn_info.contains_asm, DF_INSN_CONTAINS_ASM): Functionality
1807         moved into global.c.
1808         (df.solutions.dirty, out_of_date_transfer_functions): Moved to
1809         struct dataflow.
1810         (df.redo_entry_and_exit, df.insns_to_notes_rescan): New fields.
1811         (DF_DEBUG_CFG): Flag to control code to check if cfg modifications
1812         are being reported to df.
1813         * df-problems.c (df_print_bb_index, df_lr_top_dump,
1814         df_lr_bottom_dump, df_ur_top_dump, df_ur_bottom_dump): Cleanup
1815         more dump info.
1816         (df_ru_alloc, df_ru_local_compute, df_rd_alloc,
1817         df_rd_local_compute, df_lr_alloc, df_lr_local_compute,
1818         df_ur_alloc, df_ur_local_compute, df_live_alloc, df_urec_alloc,
1819         df_urec_local_compute, df_chain_alloc, df_ri_alloc,
1820         df_ri_compute): Removed blocks_to_rescan parameter.
1821         (problem_RU, problem_RD, problem_LR, problem_UR, problem_LIVE,
1822         problem_UREC, problem_RI): Added two new fields.
1823         (df_lr_problem_data, df_ur_problem_data): New data structure to
1824         support checking of dataflow solutions.
1825         (df_lr_alloc, df_lr_local_compute, df_ur_alloc,
1826         df_ur_local_compute, df_ur_free): Now processes only out of date blocks.
1827         (df_lr_reset, df_lr_verify_solution_start,
1828         df_lr_verify_solution_end, df_lr_verify_transfer_functions,
1829         df_ur_reset, df_ur_local_finalize, df_ur_verify_solution_start,
1830         df_ur_verify_solution_end, df_ur_verify_transfer_functions): New function.
1831         (df_lr_bb_local_compute, df_lr_local_compute): Moved asm scanning to global.c.
1832         (df_lr_local_finalize, df_lr_free, df_live_local_finalize): Added
1833         code to support incremental checking of dataflow solution.
1834         * passes.c (pass_free_cfg): Moved to before machine_reorg.
1835         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
1836         cfg_layout_merge_blocks): Changed df_delete_basic_blocks to
1837         df_bb_delete.
1838         (update_bb_for_insn): Changed df_insn_rescan to df_insn_change_bb.
1839         (force_nonfallthru_and_redirect): Added call to
1840         df_mark_solutions_dirty.
1841         * dce.c (dce_process_block): Added more checking code and made the
1842         code closer to the functionality in df_lr.
1843         (fast_dce): Now skips entry and exit blocks.  Deleted last parm to
1844         df_analyze_problem and removed changed bitmap.
1845         * fwprop.c (update_df, try_fwprop_subst): Added calls to df_set_bb_dirty.
1846         * cfg.c (connect_src, connect_dest, disconnect_src,
1847         disconnect_dest): Added calls to df_mark_solutions_dirty.
1848         * haifa-sched.c (move_succs): Ditto.
1849         * ifcvt.c (find_cond_trap): Moved calls to df_set_bb_dirty to
1850         before deletion of basic block.
1851         * emit-rtl.c (set_insn_deleted, remove_insn): Added basic block
1852         parm.
1853         * regclass.c (regclass_init): Added reset parm to df_compute_res_ever_live.
1856 2006-12-28  Kenneth Zadeck <zadeck@naturalbridge.com>
1857         * local_alloc.c (rest_of_handle_local_alloc): changed
1858         extra_warnings to warn_clobbered.
1860 2006-12-25  Kenneth Zadeck <zadeck@naturalbridge.com>
1861         * dce.c (delete_corresponding_reg_eq_notes): Added comment.
1862         (delete_unmarked_insns): Added code to delete noop moves
1863         inside of libcalls.  Changed to used delete_insn_and_edges.
1865 2006-12-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1867         * config/spu/spu.c (immediate_load_p): Change usage of
1868         flow2_completed over to epilogue_completed.
1870 2006-12-22  Kenneth Zadeck <zadeck@naturalbridge.com>
1872         * df-problems.c (df_ru_start_dump, df_ru_top_dump,
1873         df_ru_bottom_dump, df_rd_start_dump, df_rd_top_dump,
1874         df_rd_bottom_dump, df_lr_top_dump, df_lr_bottom_dump,
1875         df_ur_top_dump, df_ur_bottom_dump, df_live_top_dump,
1876         df_urec_top_dump, df_urec_bottom_dump, df_chain_start_dump,
1877         df_ri_start_dump): Added ";; " to the beginning of dataflow
1878         information put in dump files.
1879         * dce.c (marked_libcalls, delete_unmarked_insns): Removed.
1880         (prescan_insns_for_dce, mark_libcall, dce_process_block,
1881         prescan_insns_for_dse): Replaced libcall marking mechanism.
1882         (init_dce, end_dce, end_fast_dce, run_fast_df_dce): Removed
1883         marked_libcalls.
1885 2006-12-16  Kenneth Zadeck <zadeck@naturalbridge.com>
1887         * regrename.c (mrege_overlapping_regs): Removed df parameter
1888         and changed calls to df_ routines to support new incremental
1889         scanning.
1890         * sched_ebb (schedule_ebbs): Removed return value and changed
1891         calls to df_ routines to support new incremental scanning.
1892         * fwprop.c (local_ref_killed_between_p, use_killed_between,
1893         all_uses_available_at, update_df, try_fwprop_subst, fwprop,
1894         fwprop_addr): Removed df parameter and changed calls to df_
1895         routines to support new incremental scanning.
1896         (gate_fwprop, gate_fwprop_addr): Reenabled pass.
1897         * doc/cfg.texi: Updated liveness info documentation.
1898         * doc/rtl.texi: Updated liveness info documentation.
1899         * see.c (see_initialize_data_structures, see_emit_use_extension,
1900         see_commit_changes, see_analyze_merged_def_local_prop,
1901         see_analyze_use_local_prop, see_set_prop_merged_def,
1902         see_set_prop_unmerged_use, see_store_reference_and_extension,
1903         see_handle_relevant_defs, see_handle_relevant_uses,
1904         see_update_uses_relevancy, see_propagate_extensions_to_uses,
1905         pass_see): Removed df parameter and changed calls to df_ routines
1906         to support new incremental scanning.
1907         * postreload.c (reload_cse_simplify_operands): Changed REGNO to
1908         SET_REGNO.
1909         (reload_combine): Removed df parameter and changed calls to df_
1910         routines to support new incremental scanning.
1911         * tree.h (generate_setjmp_warnings): Removed df parameter.
1912         * reload.c (push_reload, find_dummy_reload): Removed df parameter
1913         and changed calls to df_ routines to support new incremental
1914         scanning.
1915         * tree-pass.h (pass_df_initialize, pass_df_finish): New passes.
1916         * rtlanal.c (remove_note): Call df_notes_rescan if the
1917         REG_EQUAL/EQUIV notes change.
1918         * ddg.c (add_deps_for_def, add_deps_for_use,
1919         add_inter_loop_mem_dep): Removed df parameter and changed calls to
1920         df_ routines to support new incremental scanning.
1921         * ddg.h (struct df) Removed.
1922         * final.c (cleanup_subreg_operands): Added call df_insn_rescan if
1923         insn changes.
1924         (walk_alter_subreg): Added changed parameter to track changes.
1925         (output_address): Added changed parameter to walk_alter_subreg.
1926         * cfg.c (compact_blocks, dump_bb_info): Removed df parameter to df_
1927         calls.
1928         * auto_inc_dec.c (attempt_changed): Moved call to
1929         df_recompute_luids so that it is only called when moves are added.
1930         (find_inc, merge_in_block, rest_of_handle_auto_inc_dec): Removed
1931         df parameter and changed calls to df_ routines to support new
1932         incremental scanning.
1933         (merge_in_block): Added call to df_recompute_luids.
1934         * reorg.c (delete_from_delay_slot, relax_delay_slots): Added basic
1935         block parm to add_insn_after.
1936         (fill_simple_delay_slots, fill_slots_from_thread,
1937         fill_eager_delay_slots, make_return_insns, dbr_schedule): Removed
1938         df parameter and changed calls to df_ routines to support new
1939         incremental scanning.
1940         * df-scan.c (struct df_reg_chains): Removed.
1941         (df_scan_free_internal, df_scan_free_internal,
1942         df_scan_free_bb_info, df_scan_alloc, df_scan_free,
1943         df_scan_start_dump, df_scan_add_problem, df_grow_reg_info,
1944         df_check_and_grow_ref_info, df_grow_insn_info, df_scan_blocks,
1945         df_ref_create, df_scan_alloc, df_scan_start_block,
1946         df_scan_add_problem, df_grow_reg_info, df_check_and_grow_ref_info,
1947         df_grow_insn_info, df_scan_blocks, df_ref_create,
1948         df_get_artificial_uses, df_reg_chain_create, df_reg_chain_unlink,
1949         df_ref_remove, df_insn_create_insn_record,
1950         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_insn_delete,
1951         df_bb_delete, df_insn_rescan, df_reorganize_refs,
1952         df_insn_change_bb, df_maybe_reorganize_use_refs,
1953         df_maybe_reorganize_def_refs, df_reg_chain_find_ref,
1954         df_ref_find_chains, df_ref_add_to_chains, df_refs_add_to_chains,
1955         df_ref_create_structure, df_ref_record, df_def_record_1,
1956         df_defs_record, df_uses_record, df_get_conditional_uses,
1957         df_get_call_refs, df_get_call_refs, df_insn_refs_collect,
1958         df_insn_refs_record, df_recompute_luids, df_bb_refs_collect,
1959         df_bb_refs_record, df_bb_refs_record, df_mark_reg,
1960         df_get_entry_block_def_set, df_entry_block_defs_collect,
1961         df_record_entry_block_defs, df_update_entry_block_defs,
1962         df_exit_block_uses_collect, df_record_exit_block_uses,
1963         df_update_exit_block_uses, df_compute_regs_ever_live,
1964         df_reg_chain_unmark, df_ref_chain_free, df_ref_verify,
1965         df_ref_verify, df_insn_refs_verify, df_bb_verify,
1966         df_exit_block_bitmap_verify, df_entry_block_bitmap_verify,
1967         df_verify_blocks): Removed df and dflow parameters and changed
1968         calls to df_ routines to support new incremental scanning.
1969         (df_ref_chain_unmark): Renamed to df_ref_chain_verify_and_unmark.
1970         (df_scan_get_bb_info, df_scan_set_bb_info): Made tolerant of
1971         missing basic block info.
1972         (df_insn_rescan_all, df_process_deferred_rescans,
1973         df_ref_chain_find_ref_by_regno, df_ref_change_reg_with_loc_1,
1974         df_ref_change_reg_with_loc,
1975         df_mw_hardreg_chain_delete_eq_uses, df_notes_rescan,
1976         df_update_entry_exit_and_calls, df_hard_reg_used_p,
1977         df_mw_hardreg_find_hardreg): New function.
1978         (df_ref_is_pointer_equal, df_bb_refs_verify): Deleted function.
1979         * haifa_sched.c (move_insn): Removed df parameter and changed calls to
1980         df_ routines to support new incremental scanning.
1981         * df-core.c (df_init): Deleted function.
1982         (df): New static instance of dataflow.
1983         (df_add_problem, df_remove_problem, df_set_flags, df_clear_flags,
1984         df_set_blocks, df_delete_basic_block, df_hybrid_search_forward,
1985         df_hybrid_search_backward, df_iterative_dataflow,
1986         df_analyze_problem, df_analyze, df_get_n_blocks, df_get_postorder,
1987         df_mark_solutions_dirty, df_get_bb_dirty, df_set_bb_dirty,
1988         df_compact_blocks, df_bb_replace, df_bb_regno_last_use_find,
1989         df_bb_regno_first_def_find, df_bb_regno_last_def_find,
1990         df_insn_regno_def_p, df_find_def, df_reg_defined, df_find_use,
1991         df_reg_used, df_dump, df_dump_start, df_dump_top, df_dump_bottom,
1992         df_regs_chain_dump, df_insn_uid_debug, df_insn_debug,
1993         df_insn_debug_regno, df_regno_debug, debug_df_insn, debug_df_reg,
1994         debug_df_defno, debug_df_useno): Removed df parameter and
1995         changed calls to df_ routines to support new incremental scanning.
1996         (df_finish1): Deleted function.
1997         (df_remove_problem, df_finish_pass, rest_of_handle_df_initialize,
1998         rest_of_handle_df_finish): New function.
1999         (pass_df_finish, pass_df_initialize): New passes.
2000         * mode-switching.c (optimize_mode_switching):  Removed df parameter and
2001         changed calls to df_ routines to support new incremental scanning.
2002         * modulo-sched.c (sms_schedule): Removed df parameter and
2003         changed calls to df_ routines to support new incremental scanning.
2004         (add_insn_before): Added extra parameter to add_insn_before.
2005         * caller-save.c (init_caller_save): Changed REGNO to SET_REGNO.
2006         * cse.c (cse_main): Disabled incremental df update during this
2007         pass.
2008         * web.c (union_defs, replace_ref, web_main, pass_web): Removed df
2009         parameter and changed calls to df_ routines to support new
2010         incremental scanning.
2011         * loop-init.c (rtl_unroll_and_peel_loops,
2012         pass_rtl_move_loop_invariants): Removed df parameter and changed
2013         calls to df_ routines to support new incremental scanning.
2014         * global.c (global_alloc, global_conflicts, retry_global_alloc,
2015         mark_elimination, build_insn_chain, rest_of_handle_global_alloc):
2016         Removed df parameter and changed calls to df_ routines to support
2017         new incremental scanning.
2018         * ifcvt.c (, find_if_header, find_if_case_1, find_if_case_2,
2019         dead_or_predicable, if_convert, pass_rtl_ifcvt,
2020         pass_if_after_combine, pass_if_after_reload): Removed df parameter
2021         and changed calls to df_ routines to support new incremental
2022         scanning.
2023         * expr.c (init_expr_once): Changed REGNO to SET_REGNO.
2024         * recog.c (peephole2_optimize, pass_split_all_insn): Removed df
2025         parameter and changed calls to df_ routines to support new
2026         incremental scanning.
2027         * regmove.c (mark_flags_life_zones, optimize_reg_copy_2,
2028         regmove_optimize, rest_of_handle_stack_adjustments): Removed df
2029         parameter and changed calls to df_ routines to support new
2030         incremental scanning.
2031         * local-alloc.c (block_alloc, rest_of_handle_local_alloc): Removed df
2032         parameter and changed calls to df_ routines to support new
2033         incremental scanning.
2034         * function.c (regno_clobbered_at_setjmp, setjmp_vars_warning,
2035         setjmp_args_warning, generate_setjmp_warnings,
2036         keep_stack_depressed, thread_prologue_and_epilogue_insns,
2037         epilogue_done, rest_of_handle_thread_prologue_and_epilogue): Removed df
2038         parameter and changed calls to df_ routines to support new
2039         incremental scanning.
2040         * function.h (df): Deleted variable.
2041         * df.h (DF_RU, DF_RD, DF_LR, DF_UR, DF_LIVE): Renumbered to put
2042         permanent problems before optional problems.
2043         (DF_FIRST_OPTIONAL_PROBLEM): New symbol.
2044         (df_ref_flags.DF_REF_REF_MARKER, df_ref_flags.DF_REF_REG_MARKER): New flag.
2045         (df_ref_flags.DF_REF_ARTIFICIAL, df_ref_flags.DF_REF_MARKER):
2046         Deleted flag.
2047         (df_alloc_function, df_reset_function, df_free_bb_function,
2048         df_local_compute_function, df_init_function, df_dataflow_function,
2049         df_confluence_function_0, df_confluence_function_n,
2050         df_transfer_function, df_finalizer_function, df_free_function,
2051         df_remove_problem_function, df_dump_problem_function,
2052         df_dump_bb_problem_function, DF_SCAN_BB_INFO, DF_RU_BB_INFO,
2053         DF_RD_BB_INFO, DF_UR_BB_INFO, DF_UREC_BB_INFO, DF_LIVE_BB_INFO,
2054         DF_LIVE_IN, DF_LIVE_OUT, DF_RA_LIVE_IN, DF_RA_LIVE_OUT,
2055         DF_RA_LIVE_TOP, DF_LR_IN, DF_LR_OUT, DF_UR_IN, DF_UR_OUT,
2056         DF_DEFS_GET, DF_DEFS_SET, DF_DEFS_COUNT, DF_DEFS_BEGIN,
2057         DF_USES_GET, DF_USES_SET, DF_USES_COUNT, DF_USES_BEGIN,
2058         DF_REG_SIZE, DF_REG_DEF_GET, DF_REG_DEF_CHAIN, DF_REG_DEF_COUNT,
2059         DF_REG_USE_GET, DF_REG_USE_CHAIN, DF_REG_USE_COUNT,
2060         DF_REG_EQ_USE_GET, DF_REG_EQ_USE_CHAIN, DF_REG_EQ_USE_COUNT,
2061         DF_REGNO_FIRST_DEF, DF_REGNO_LAST_USE, DF_REGNO_FIRST_DEF,
2062         DF_REGNO_LAST_USE, DF_INSN_SIZE, DF_INSN_GET, DF_INSN_SET,
2063         DF_INSN_CONTAINS_ASM, DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES,
2064         DF_INSN_EQ_USES, DF_INSN_UID_GET, DF_INSN_UID_SAFE_GET,
2065         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
2066         DF_INSN_UID_EQ_USES, DF_INSN_UID_MWS): Removed df or dflow
2067         parameter and changed calls to df_ routines to support new
2068         incremental scanning.
2069         (DF_DEFS_SIZE, DF_USES_SIZE): Renamed to DF_DEFS_TABLE_SIZE and
2070         DF_USES_TABLE_SIZE.
2071         (DF_DEFS_TOTAL_SIZE, DF_USES_TOTAL_SIZE, df_scan, df_ru, df_rd,
2072         df_lr, df_ur, df_live, df_urec, df_chain, df_ri,
2073         DF_DEFS_TOTAL_SIZE, DF_USES_TOTAL_SIZE): New macros.
2074         (dataflow.df): Removed field.
2075         (df_ref_info.bitmap_size): Split into df_ref_info.table_size and
2076         df_ref_info.total_size.
2077         (dataflow.local_flags, df_insn_info.insn,
2078         df_changeable_flags.DF_DEFER_INSN_RESCAN, df_ref_info.count,
2079         df.insns_to_rescan, df.insns_to_delete): New field.
2080         (df_permanent_flags): Split into df_chain_flags and df_ri_flags.
2081         * gcse (try_replace_reg, adjust_libcall_notes,
2082         update_ld_motion_stores):  Removed df
2083         parameter and changed calls to df_ routines to support new
2084         incremental scanning.
2085         (insert_insn_end_basic_block, insert_insn_start_basic_block):
2086         Added bb parameter to emit_insn_before_noloc.
2087         * rtl-factoring.c (match_seqs, collect_pattern_seqs,
2088         collect_pattern_seqs, clear_regs_live_in_seq,
2089         recompute_gain_for_pattern_seq,, recompute_gain,
2090         split_blocks_after_seqs, split_pattern_seq, erase_matching_seqs,
2091         abstract_best_seq, rtl_seqabstr): Removed df parameter and changed
2092         calls to df_ routines to support new incremental scanning.
2093         * expmed.c (init_expmed): Changed REGNO to SET_REGNO.
2094         * bt-load.c (, compute_defs_uses_and_gen, build_btr_def_use_webs,
2095         migrate_btr_defs, branch_target_load_optimize,
2096         pass_branch_target_load_optimize1,
2097         pass_branch_target_load_optimize1): Removed df parameter and changed
2098         calls to df_ routines to support new incremental scanning.
2099         * emit-rtl.c (add_insn_after, add_insn_before,
2100         emit_insn_before_noloc, emit_insn_after_1,
2101         emit_insn_after_noloc): Added basic block parameter and threaded
2102         it to subcalls.
2103         (emit_jump_insn_before_noloc,
2104         emit_call_insn_before_noloc, emit_barrier_before,
2105         emit_label_before, emit_note_before, emit_call_insn_after_noloc,
2106         emit_jump_insn_after_noloc, emit_label_after, emit_note_after,
2107         emit_insn_after_setloc, emit_insn_before_setloc): Add NULL basic
2108         block parameter to certain subcalls.
2109         (set_unique_reg_note): Now calls df_notes_rescan if REG_EQUAL or
2110         REG_EQUIV notes change.
2111         * loop-invariant.c (check_invariant_table_size,
2112         hash_invariant_expr_1, invariant_expr_equal_p, find_defs,
2113         check_dependencies, record_uses, find_invariants_to_move,
2114         move_invariant_reg, fail, free_inv_motion_data,
2115         move_loop_invariants):  Removed df parameter and changed
2116         calls to df_ routines to support new incremental scanning.
2117         * subregs_init (initialize_uninitialized_subregs): Removed df
2118         parameter and changed calls to df_ routines to support new
2119         incremental scanning.
2120         * loop-iv.c (iv_current_loop_df): Deleted function.
2121         (check_iv_ref_table_size, clear_iv_info, iv_analysis_loop_init,
2122         latch_dominating_def, iv_get_reaching_def, iv_get_reaching_def,
2123         iv_analyze, iv_analyze_result, biv_p, iv_analysis_done): Removed df
2124         parameter and changed calls to df_ routines to support new
2125         incremental scanning.
2126         * regclass.c (regclass_init): Insert call to recalculate the
2127         effects of changing regs_ever_live.
2128         (init_reg_autoinc):  Changed REGNO to SET_REGNO.
2129         * rtl.h (REGNO): Changed so that it cannot appear on lhs.
2130         (SET_REGNO): New macro.
2131         (rhs_regno): New function.
2132         (basic_block): New forward declaration.
2133         * integrate.c (allocate_initial_values): Changed REGNO to
2134         SET_REGNO and removed df parameter and changed calls to df_
2135         routines to support new incremental scanning.
2136         * combine.c (set_nonzero_bits_and_sign_copies, subst,
2137         reg_nonzero_bits_for_combine, reg_num_sign_bit_copies_for_combine,
2138         get_last_value_validate, get_last_value, reg_dead_at_p,
2139         create_log_links, create_log_links, rest_of_handle_combine,
2140         pass_combine): Removed df parameter and changed calls to df_
2141         routines to support new incremental scanning.
2142         * stack-ptr-mod.c (notice_stack_pointer_modification): Removed df
2143         parameter and changed calls to df_ routines to support new
2144         incremental scanning.
2145         * resource.c (mark_target_live_regs): Removed df
2146         parameter and changed calls to df_ routines to support new
2147         incremental scanning.
2148         * resource.h (mark_target_live_regs): Removed df
2149         parameter and changed calls to df_ routines to support new
2150         incremental scanning.
2151         * cfgloop.h (iv_current_loop_df): Removed.
2152         * df-problems.c (df_get_live_in, df_get_live_out,
2153         df_ru_get_bb_info, df_ru_set_bb_info, df_ru_free_bb_info,
2154         df_ru_alloc, df_ru_bb_local_compute_process_def,
2155         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
2156         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
2157         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
2158         df_ru_top_dump, df_ru_bottom_dump, df_ru_add_problem,
2159         df_rd_get_bb_info, df_rd_set_bb_info, df_rd_free_bb_info,
2160         df_rd_alloc, df_rd_bb_local_compute_process_def,
2161         df_rd_bb_local_compute, df_rd_local_compute, df_rd_init_solution,
2162         df_rd_confluence_n, df_rd_transfer_function, df_rd_free,
2163         df_rd_start_dump, df_rd_top_dump, df_rd_bottom_dump,
2164         df_rd_add_problem, df_lr_get_bb_info, df_lr_set_bb_info,
2165         df_lr_free_bb_info, df_lr_alloc, df_lr_bb_local_compute,
2166         df_lr_local_compute, df_lr_init, df_lr_confluence_0,
2167         df_lr_confluence_n, df_lr_transfer_function, df_lr_local_finalize,
2168         df_lr_free, df_lr_simulate_artificial_refs_at_end,
2169         df_lr_simulate_one_insn, df_lr_top_dump, df_lr_bottom_dump,
2170         df_lr_add_problem, df_ur_get_bb_info, df_ur_set_bb_info,
2171         df_ur_free_bb_info, df_ur_alloc, df_ur_bb_local_compute,
2172         df_ur_local_compute, df_ur_init, df_ur_confluence_n,
2173         df_ur_transfer_function, df_ur_free, df_ur_top_dump,
2174         df_ur_bottom_dump, df_ur_add_problem, df_live_get_bb_info,
2175         df_live_set_bb_info, df_live_free_bb_info, df_live_alloc,
2176         df_live_local_finalize, df_live_free, df_live_top_dump,
2177         df_live_add_problem, df_urec_get_bb_info, df_urec_set_bb_info,
2178         df_urec_free_bb_info, df_urec_alloc, df_urec_bb_local_compute,
2179         df_urec_local_compute, df_urec_init, df_urec_local_finalize,
2180         df_urec_confluence_n, df_urec_transfer_function, df_urec_free,
2181         df_urec_top_dump, df_urec_bottom_dump, df_urec_add_problem,
2182         df_chain_create, df_chain_unlink, df_chain_copy,
2183         df_chain_remove_problem, df_chain_alloc, df_chain_reset,
2184         df_chain_create_bb_process_use, df_chain_create_bb,
2185         df_chain_finalize, df_chain_free, df_chain_start_dump,
2186         df_chain_add_problem, df_ri_alloc, df_kill_notes,
2187         df_set_dead_notes_for_mw, df_set_unused_notes_for_mw,
2188         df_create_unused_note, df_ri_bb_compute, df_ri_compute,
2189         df_ri_free, df_ri_start_dump, df_ri_add_problem,
2190         df_ri_get_setjmp_crosses): Removed df and dflow parameters and
2191         changed calls to df_ routines to support new incremental scanning.
2192         (df_chain_unlink_1, df_chain_fully_remove_problem): New function.
2193         * reg-stack.c (reg_to_stack): Removed df parameter and changed
2194         calls to df_ routines to support new incremental scanning.
2195         * Makefile.in (rtlanal.o, expr.o, expmed.o, cse.o, gcse.o,
2196         regclass.o, caller-save.o, stack-ptr-mod.o, final.o): Added df.h.
2197         (reorg.o): Deleted df.h.
2198         * sched-rgn.c (check_live_1, update_live_1, schedule_insns):
2199         Removed df parameter and changed calls to df_ routines to support
2200         new incremental scanning.
2201         * basic-block.h (forward for basic_block): Moved to rtl.h.
2202         * passes.c (pass_df_initialize, pass_df_finish): New passes.
2203         (execute_todo): Changed TODO_df_finish.
2204         * struct-equiv.c (insns_match_p, struct_equiv_init): Removed df
2205         parameter and changed calls to df_ routines to support new
2206         incremental scanning.
2207         * config/frv/frv.c (frv_function_prologue, frv_int_to_acc):
2208         Changed REGNO to SET_REGNO.
2209         (frv_reorder_packet): Added null basic block parm to
2210         add_insn_before.
2211         * config/i386/i386.c (ix86_eax_live_at_start_p): Removed df
2212         parameter and changed calls to df_ routines to support new
2213         incremental scanning.
2214         (ix86_expand_prologue, ix86_output_function_epilogue):
2215         Changed REGNO to SET_REGNO.
2216         * config/ia64/ia64.c (emit_predicate_relation_info, ia64_reorg):
2217         Removed df parameter and changed calls to df_ routines to support
2218         new incremental scanning.
2219         * config/mips/mips.c (mips_expand_prologue): Changed REGNO to
2220         SET_REGNO.
2221         * cfgrtl.c (commit_one_edge_insertion, rtl_dump_bb,
2222         print_rtl_with_bb, cfg_layout_merge_blocks,
2223         insert_insn_end_bb_new): Added bb parameter to insn insert calls.
2224         * dce.c (prescan_insns_for_dce): Removed fast parameter.
2225         (init_dce, end_dce, mark_artificial_uses, mark_reg_dependencies,
2226         end_fast_dce, dce_process_block, fast_dce, run_fast_df_dce,
2227         rs_init, rs_confluence, rs_transfer_function, dump_stores,
2228         record_store, mark_dependent_stores, prescan_insns_for_dse,
2229         rest_of_handle_dse): Removed df parameter and changed calls to df_
2230         routines to support new incremental scanning.
2231         (rest_of_handle_dce, gate_dce, run_dce, pass_rtl_dce): Deleted.
2232         (delete_corresponding_reg_equal_notes): Renamed to
2233         delete_corresponding_reg_eq_notes and made to process both kinds
2234         of notes.
2235         (delete_unmarked_insns): Changed call to
2236         delete_corresponding_reg_eq_notes.
2237         * dce.h (run_fast_df_dce): Removed df parameter.
2238         * reload1.c (compute_use_by_pseudos, reload): Removed df parameter
2239         and changed calls to df_ routines to support new incremental
2240         scanning.
2241         (alter_reg): Changed REGNO to SET_REGNO.
2244 2006-12-07  David Edelsohn  <edelsohn@gnu.org>
2246         * config/rs6000/predicates.md (lwa_operand): Allow PRE_MODIFY
2247         indexed address.
2248         * config/rs6000/rs6000-protos.h (legitimate_indexed_address_p):
2249         Declare.
2250         * config/rs6000/rs6000.c (legitimate_indexed_address_p): Remove
2251         static.
2253 2006-12-07  David Edelsohn  <edelsohn@gnu.org>
2255         * config/rs6000/predicates.md (lwa_operand): Exclude PRE_MODIFY
2256         addresses.
2258 2006-12-01  Seongbae Park <seongbae.park@gmail.com>
2260         * dbgcnt.def: New counters
2261         * postreload-gcse.c (delete_redundant_insns_1): New
2262         debug counter point.
2263         * postreload.c (reload_cse_move2add, gate_handle_postreload):
2264         New debug counter point.
2265         * auto-inc-dec.c (move_notes): Removed.
2266         (move_dead_notes): New function.
2267         (attempt_change): Call move_dead_notes(). Add missing dependency check.
2268         * haifa-sched.c (schedule_block): New debug counter point.
2269         * cse.c (delete_trivially_dead_insns): New debug counter point.
2270         * gcse.c (pre_delete): New debug counter point.
2271         * Makefile.in: Adding dependency on DBGCNT_H.
2272         * sched-rgn.c (schedule_region): New debug counter point.
2273         * dce.c (delete_corresponding_reg_equal_notes): New function
2274         (delete_unmarked_insns): Call delete_corresponding_reg_equal_notes.
2277 2006-11-28  Seongbae Park <seongbae.park@gmail.com>
2279         * dbgcnt.def: Updated comments. Added new counters.
2280         * auto-inc-dec.c (try_merge): Debug counter.
2281         * global.c (global_conflicts): Use DF_RA_LIVE_TOP() instead of
2282         df_urec_get_live_at_top().
2283         * dbgcnt.c (count, limit): Use dbgcnt.def.
2284         (dbg_cnt_is_enabled): New function.
2285         (dbg_cnt): Use dbg_cnt_is_enabled().
2286         * local-alloc.c (block_alloc): Use DF_RA_LIVE_TOP instead of LIVE_IN.
2287         Add a debug counter.
2288         * df.h (DF_RA_LIVE_TOP): New Macro. Remove df_urec_get_live_at_top.
2289         (struct df_rd_bb_info): Added new fields ADEF, AUSE and TOP.
2290         (struct df_urec_bb_info): Added new field TOP.
2291         * loop-iv.c (iv_analyze_def): Added REG_P check.
2292         * df-problems.c (df_lr_free_bb_info): Free new fields AUSE, ADEF and
2293         TOP.
2294         (df_lr_alloc): Allocate new fields TOP, ADEF, AUSE.
2295         (df_lr_bb_local_compute): Compute ADEF and AUSE.
2296         (df_lr_transfer_function): Compute TOP, and then IN based on TOP, ADEF
2297         and AUSE.
2298         (df_lr_free): Free new fields AUSE, ADEF and TOP.
2299         (df_ur_bb_local_compute): Partial/conditional defs don't hide
2300         earlier defs.
2301         (df_urec_alloc): Allocate new field TOP.
2302         (df_urec_local_finalize): Calculate TOP as well as IN.
2303         (df_urec_free): Free new field TOP.
2304         (df_urec_get_live_at_top): Removed.
2305         * Makefile.in (auto-inc-dec.o, local-alloc.o, sched-rgn.o,
2306         sched-ebb.o, recog.o): Added dependency on DBGCNT_H.
2307         * sched-rgn.c (schedule_insns, gate_handle_sched, gate_handle_sched2):
2308         Added debug counter.
2309         * config/ia64/ia64.c (enum ia64_frame_regs): New enum.
2310         (struct ia64_frame_info): Changed register fields to use an array
2311         index by enum.
2312         (emitted_frame_related_regs): New static variable.
2313         (reg_emitted, get_reg, is_emitted): New function.
2314         (ia64_reload_gp): Use new enum.
2315         (find_gr_spill): Added a new param. Use emitted_frame_related_regs.
2316         (ia64_computea_frame_size, ia64_hard_regno_rename_ok,
2317         ia64_epilogue_uses):
2318         Use emitted_frame_related_regs.
2319         (ia64_expand_prologue): Extra deubg output. Use new enum.
2320         (ia64_expand_epilogue, ia64_direct_return, ia64_split_return_addr_rtx,
2321         ia64_output_function_prologue, ia64_output_function_epilogue,
2322         process_set):
2323         Use new enum.
2324         (ia64_init_expanders): New function.
2325         (ia64_reorg): New debug counter.
2326         * config/ia64/ia64.h (INIT_EXPANDERS): New call to
2327         ia64_init_expanders.
2331 2006-11-18  Kenneth Zadeck <zadeck@naturalbridge.com>
2333         * tree-pass.h (print_current_pass, debug_pass): New functions.
2334         * passes.c (print_current_pass, debug_pass): New functions.
2335         (exec_todo): Changed call to df_verify_blocks.
2336         (current_pass): New variable.
2337         * auto-inc-dec.c (attempt_change): Removed redundant call to
2338         df_insn_rescan and added debugging.
2339         (find_inc): Added debugging and fixed post-inc/dec bug.
2340         (merge_in_block): Fixed post-inc/dec bug.
2341         * dbgcnt.c: Fixed comments.
2342         * dbgcnt.c: Fixed comments.
2343         * loop-init.c (rtl_unroll_and_peel_loops): Added debugging.
2344         * loop-invariant.c (find_defs): Added debugging.
2345         * loop-iv.c (iv_analysis_loop_init): Added debugging.
2346         * df-scan.c (df_ref): Added parameter to control the deletion of
2347         chains.
2348         (df_reg_chain_unlink): Take care not to delete non existent refs.
2349         (df_ref_remove): Changed call to df_reg_chain_unlink.
2350         (df_ref_chain_delete_du_chain, df_ref_chain_delete,
2351         df_mw_hardreg_chain_delete): New function
2352         (df_insn_delete): Now calls df_ref_chain_delete_du_chain,
2353         df_ref_chain_delete, df_mw_hardreg_chain_delete.
2354         (df_bb_delete): Now calls df_ref_chain_delete_du_chain,
2355         df_ref_chain_delete.
2356         (df_insn_rescan): Now supports DF_NO_INSN_RESCAN and added
2357         debugging.
2358         (df_ref_verify): Added code to ignore refs from notes in the table
2359         of refs.
2360         (df_bb_verify, df_exit_block_bitmap_verify,
2361         df_entry_block_bitmap_verify, df_verify_blocks): Made it possible
2362         to abort closer to source of problem.
2363         (df_verify_blocks): Removed dflow parameter.  * df-core.c
2364         (df_insn_uid_debug, df_ref_debug): Fixed debugging.  *
2365         df-problems.c (df_ru_bb_info, df_rd_bb_info, df_lr_bb_info,
2366         df_ur_bb_info, df_live_bb_info, df_urec_bb_info): Made tolerant of
2367         newly added basic blocks.
2368         (df_chain_alloc): Tolerant of missing refs in structure.
2369         (df_chain_insn_reset, df_chain_bb_reset, df_chain_remove_problem):
2370         Deleted function.
2371         (df_chain_alloc): New function.
2372         (df_chain_reset): Now just calls df_chain_remove_problem.
2373         * df.h: (DF_NO_REGS_EVER_LIVE): New flag.
2375 2006-11-17  Kenneth Zadeck <zadeck@naturalbridge.com>
2377         * fwprop.c Removed bad version.
2378         * tree-ssa-pre.c (init_pre): Added parameter to post_order_compute.
2380 2006-11-15  Seongbae Park <seongbae.park@gmail.com>
2382         * df-scan.c (df_insn_refs_collect): Code cleanup
2383         for COND_EXEC handling.
2384         (df_need_static_chain_reg): New function.
2385         (df_get_entry_block_def_set): Check and add the static chain register.
2386         * ifcvt.c (if_convert): Don't ignore the return value
2387         of find_if_header.
2390 2006-11-14  Seongbae Park <seongbae.park@gmail.com>
2392         * function.c (thread_prologue_and_epilogue_insns):
2393         Update regs_ever_live during df scanning.
2395 2006-11-14  Seongbae Park <seongbae.park@gmail.com>
2397         * dbgcnt.c, dbgcnt.h: Added missing copyright notice. Now uses
2398         dbgcnt.def for the list of counters.
2399         * Makefile.in: Add missing dbgcnt.h header file dependencies.
2400         * dbgcnt.def: New file.
2402 2006-11-14  Seongbae Park <seongbae.park@gmail.com>
2404         * tree-tailcall.c (execute_tail_recursion): Added dbg_cnt().
2405         * df-scan.c (df_mw_hardreg_find_hardreg, df_get_conditional_uses,
2406         df_get_call_refs):
2407         New function.
2408         (df_refs_add_to_chains): Don't add duplicate mw_hardreg.
2409         (df_ins_refs_collect): Refactored to use df_get_conditional_uses
2410         and df_get_call_refs.
2411         (df_insn_refs_verify): Find the matching mw_hardreg.
2412         * dbgcnt.c (dbg_cnt_process_opt): Fix a bug handling multiple
2413         counters. Add a new debug counter tail_call.
2414         * dbgcnt.h (enum debug_counter): Added a new counter tail_call.
2415         * calls.c (expand_call): Check dbg_cnt(tail_call).
2416         * df_problems.c (df_create_unused_note, df_ri_bb_compute):
2417         Handle NULL LOC case.
2418         * dce.c (init_dce): Add a debug dump.
2421 2006-11-14  Paolo Bonzini  <bonzini@gnu.org>
2423         Merge from mainline:
2425         2006-11-14  Paolo Bonzini  <bonzini@gnu.org>
2427         PR rtl-optimization/29798
2429         * fwprop.c (use_killed_between): Check that DEF_INSN dominates
2430         TARGET_INSN before any other check.
2431         (fwprop_init): Always calculate dominators.
2432         (fwprop_done): Always free them.
2434 2006-11-13  Seongbae Park <seongbae.park@gmail.com>
2435             Kenneth Zadeck <zadeck@naturalbridge.com>
2437         * tree-pass.h (TODO_df_verify_scan): New flag.
2438         * auto-inc-def.c (find_inc): Added code to check for case where
2439         output of inc is not overwritten by mem to be combined.
2440         * df-scan.c (df_scan_set_bb_info): Now increases the size of the
2441         array if necessary.
2442         (df_scan_blocks): Added flag to avoid recomputing regs_ever_live.
2443         (df_insn_rescan): Fixed missing case for rescanning.
2444         (df_insn_refs_collect): Special case for sibling calls.  Changed
2445         to not set up loc field with address of regno_reg_rtx element.
2446         (df_entry_block_defs_collect, df_exit_block_uses_collect,
2447         df_bb_refs_collect): Changed to not set up loc field with address
2448         of regno_reg_rtx element.
2449         (df_bb_refs_record): Removed dflow parameter and added scan_insn
2450         parameter. Changed call to df_bb_refs_record.
2451         (df_compute_regs_ever_live): New function.
2452         (df_reg_chain_unmark): Made to accept NULL blocks parameter.
2453         (df_ref_chain_unmark): New function.
2454         (df_ref_verify):  Added abort_if_fail parameter.
2455         (df_insn_refs_verify): Added abort_if_fail and return_refs
2456         parameter and changed function to return bool.  Added code to
2457         unmark chains.
2458         (df_bb_refs_verify): Added abort_if_fail parameter and now returns
2459         nothing.
2460         (df_bb_verify): Changed to expect subroutines to abort.
2461         (df_verify_blocks): Now accepts NULL blocks parameter.
2462         * ifcvt.c (if_convert): Added more to dump_files.
2463         * (pass_rtl_ifcvt, pass_if_after_combine, pass_if_after_reload):
2464         added TODO_df_verify_scan.
2465         * opts.c (command_handle_option): New flag OPT_fdbg_cnt_
2466         * recog.c (confirm_change_group): Fixed updating of df scanning.
2467         * function.c (thread_prologue_and_epilogue_insns):
2468         Pass DF_NO_REGS_EVER_LIVE in df_init, and
2469         call df_compute_regs_ever_live after prologue is generated.
2470         * df.h (enum df_ref_flags): Added DF_REF_ARTIFICIAL.
2471         (enum df_changeable_flags): Added DF_NO_REGS_EVER_LIVE.
2472         (DF_REF_IS_ARTIFICIAL): Added checking for the flag DF_REF_ARTIFICIAL.
2473         * cfgcleanup.c: Fixed typo in comment.
2474         * common.opt: New flag -fdbg-cnt=
2475         * combine.c (try_combine): Added calls to keep df_scanning up to
2476         date.
2477         (pass_combine): Added TODO_df_verify_scan.
2478         * Makefile.in: New gcc object file dbgcnt.o
2479         * passes.c (execute_todo): Added support for TODO_df_verify_scan.
2480         * config/ia64/ia64.c (ia64_split_return_addr_rtx): Finalize
2481         the frame layout early.
2482         (ia64_expand_prologue): Pass DF_NO_REGS_EVER_LIVE to df_init().
2483         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
2484         cfg_layout_merge_blocks): Added debugging.
2485         * dbgcnt.c, dbgcnt.h: New files
2486         * dce.c (delete_unmarked_insns): Use dbg_cnt.
2487         (delete_insn_p): Do not delete unspecs.
2489 2006-11-10  Seongbae Park <seongbae.park@gmail.com>
2491         * fwprop.c (forward_propagate_into): Use DF_REF_IS_ARTIFICIAL()
2492         instead of DF_REF_ARTIFICIAL flag.
2493         * df-scan.c (df_ref_record, df_def_record_1): Remove record_live
2494         (df_get_exit_block_use_set, df_get_entry_block_def_set):
2495         Renamed from df_get_{exit_block_uses,entry_block_defs}.
2496         (df_compute_regs_ever_live, df_ref_chain_change_bb,
2497         df_ref_is_record_live, df_reg_chain_unmark, df_ref_chain_free):
2498         New functions.
2499         (df_reg_chains): New structure
2500         (df_ref_add_to_chains):
2501         (df_scan_blocks): Add call to df_compute_regs_ever_live().
2502         (df_ref_create): Remove record_live, and replace DF_REF_ARTIFICIAL
2503         flag use with DF_REF_IS_ARTIFICIAL () macro.
2504         (df_insn_rescan): Avoid marking blocks dirty if nothing changed.
2505         (df_insn_change_bb): Refactored to use df_ref_change_bb.
2506         (df_ref_is_equal): Now ignores DF_REF_MARKER flag.
2507         (df_ref_chain_find_ref, df_reg_chain_find_reg): Fix the order of
2508         parameters to the evaluation function.
2509         (df_ref_find_chains): Avoid early evaluation of certain fields.
2510         (df_ref_add_to_chains): Remove update to regs_ever_live.
2511         (df_refs_add_to_chains): Use DF_REF_NEXT_REF macro.
2512         (df_ref_record): Remove DF_REF_RECORD_LIVE.
2513         (df_insn_refs_record): Now takes the reference list to be added as
2514         an argument.
2515         (df_bb_refs_record): Handles entry and exit block cases.
2516         (df_bb_refs_collect): Removed DF_REF_ARTIFICIAL.
2517         (df_refs_record): Scan entry and exit blocks first.
2518         (df_ref_verify): Takes reg_chain cache as an argument,
2519         verifies hardreg chain.
2520         (df_exit_block_bitmap_verify): Renamed from df_exit_block_verify
2521         (df_entry-block_bitmap_verify): Renamed from df_entry_block_verify
2522         (df_verify_blocks): Implement regchain cache. Assert immediately
2523         when verification fails in any subfunctions.
2524         * df.h (enum df_ref_flags): Remove DF_REF_ARTIFICIAL and renumber the
2525         enum.
2526         (DF_REF_IS_ARTIFICIAL, DF_REF_MARK, DF_REF_UNMARK, DF_REF_IS_MARKED,
2527         DF_INSN_UID_SAFE_GET): New macros:
2530 2006-11-08  Kenneth Zadeck <zadeck@naturalbridge.com>
2532         * auto-inc-dec.c (attempt_change): Added code to properly maintain
2533         reg_next_inc_use when inc insns are deleted.
2534         (merge_in_block): Added debugging and changed to skip deleted
2535         instructions.
2536         (scan_dflow): Removed variable.
2537         * df-scan.c (df_scan_alloc): Always processes entire function.
2538         (df_scan_free): Removed df->blocks_to_scan.
2539         (df_scan_blocks): Removed blocks_parameter.  Now scan entire
2540         function.
2541         (df_insn_rescan, df_insn_change_bb): Renamed df_mark_bb_dirty to
2542         df_set_bb_dirty.
2543         * df.h (blocks_to_scan): Removed variable.
2544         * df-core.c (df_analyze): Add call to df_scan_alloc.  Removed
2545         df->blocks_to_scan.
2546         (df_get_bb_dirty): New function.
2547         (df_mark_bb_dirty): Renamed to df_set_bb_dirty.
2548         (df_compact_blocks): Removed df->blocks_to_scan.
2549         (df_bb_replace): Added check to make sure there was no block at
2550         old_index and fixed updating bugs.
2551         * ifcvt.c (cond_exec_process_if_block,
2552         noce_process_if_block, cond_move_process_if_block,
2553         process_if_block, merge_if_block, find_if_header,
2554         find_cond_trap, find_if_case_1, find_if_case_2, if_convert):
2555         Removed modified variable.
2556         (find_if_header, find_cond_trap, find_if_case_1, find_if_case_2,
2557         if_convert): Replaced BB_DIRTY with df_set_bb_dirty and
2558         df_get_bb_dirty.
2559         * recog.c (confirm_change_group): Ditto.
2560         * emit_rtl (remove_insn,, reorder_insns, emit_insn_after_1): Ditto.
2561         * cfgcleanup.c (try_forward_edges, try_crossjump_to_edge,
2562         merge_blocks_move_predecessor_nojumps, try_crossjump_bb): Ditto.
2563         * modulo-sched.c (sms_schedule): Ditto.
2564         * cfgrtl.c (rtl_split_block, rtl_redirect_edge_and_branch,
2565         rtl_redirect_edge_and_branch_force, purge_dead_edges,
2566         cfg_layout_redirect_edge_and_branch): Ditto.
2567         * basic_block.h (BB_DIRTY): Removed.
2570 2006-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
2572         * cfg.c (compact_blocks): Make df aware when blocks are moved around.
2573         * auto-inc-dec.c (attempt_change): Removed explicit df updating.
2574         * ifcvt.c (cond_exec_process_if_block,
2575         noce_mem_write_may_trap_or_fault_p, noce_process_if_block,
2576         cond_move_process_if_block, process_if_block, find_if_header):
2577         Removed unused df parameter.
2578         (merge_if_block, find_cond_trap, find_if_case_1, find_if_case_2):
2579         Removed explicit df updating.
2580         (if_convert): Rearranged calls to df.
2581         (struct tree_opt_pass pass_rtl_ifcvt, pass_if_after_combine,
2582         pass_if_after_reload): Added TODO_verify_flow.
2583         * recog.c (delete_insn_chain_and_flow): Deleted function.
2584         (peephole2_optimize): Removed unused dataflow problem and variable
2585         and delete explicit df updating calls.
2586         (pass_split_before_sched2): Added TODO_verify_flow.
2587         * emit_rtl (add_insn_after, add_insn_before, remove_insn,
2588         reorder_insns, emit_insn_after_1): Added explicit updating of df.
2589         (set_insn_deleted): New function.
2590         * loop_invariant.c (invariant_table_size, invariant_table): New
2591         variables.
2592         (check_invariant_table_size): New function.
2593         (invariant_for_use, find_defs, check_dependency,
2594         find_invariant_insn, free_inv_motion_data, move_loop_invariants):
2595         Replaced DF_REF_DATA with invariant_table.
2596         * loop-iv.c (clean_slate, iv_ref_table_size, iv_ref_table): New
2597         variables.
2598         (check_iv_ref_table_size): New function.
2599         (clear_iv_info, iv_analysis_loop_init, record_iv, iv_analyze_def,
2600         iv_analysis_done): Replaced DF_REF_DATA with iv_ref_table.
2601         * cfglayout.c (fixup_reorder_chain): Now uses compact_blocks.
2602         * rtl.h (SET_INSN_DELETED): now calls set_insn_deleted.
2603         * Makefile.in: (emit-rtl.o): Now dependent on df.h.
2604         * sched-rgn.c (pass_sched, pass_sched2): Added TODO_verify_flow.
2605         * cfgrtl.c (rtl_delete_block, update_bb_for_insn,
2606         rtl_merge_blocks, try_redirect_by_replacing_jump,
2607         cfg_layout_merge_blocks): Added explicit updating of df.
2608         * dce.c (delete_unmarked_insns): Removed df_delete parameter and
2609         explicit updating of df info.
2610         (rest_of_handle_dce, rest_of_handle_dse): Added call to
2611         df_remove_problem.
2612         (fast_dce, fast_dce, rest_of_handle_fast_dce, run_fast_df_dce):
2613         Removed df_delete parameter.
2614         * df-scan.c (df_scan_free_bb_info): Changed call.
2615         (df_scan_alloc, df_scan_free): Added setting of out_of_date_transfer_functions.
2616         (df_problem problem_SCAN): Added problem removal function.
2617         (df_scan_blocks): Added calls to df_refs_delete and df_bb_delete.
2618         (df_insn_create_insn_record): Added call to df_grow_insn_info.
2619         (df_insn_refs_delete): Renamed to df_insn_delete and removed dflow
2620         parameter.
2621         (df_bb_refs_delete): Renamed to df_bb_delete and removed dflow
2622         parameter.
2623         (df_refs_delete): Deleted.
2624         (df_insn_rescan, df_insn_change_bb): New function.
2625         (df_ref_create_structure): Removed DF_REF_DATA.
2626         * df-core.c (df_add_problem): Changed to use new form of problem
2627         dependency.
2628         (df_remove_problem): New function.
2629         (df_set_blocks): Does a better job of updating the proper blocks.
2630         (df_delete_basic_block): Removed df parameter and checks to see if
2631         block already had infomation.
2632         (df_get_bb_info): Returns NULL if no info was there.
2633         (df_set_bb_info): Checks to make sure problem block information.
2634         (df_mark_solutions_dirty, df_mark_bb_dirty, df_compact_blocks,
2635         df_bb_replace): New functions.
2636         * df.h (df_remove_problem_function): New typedef.
2637         (df_dependent_problem_function): Deleted typedef.
2638         (df_problem): Added remove_problem_fun and dependent_problem and
2639         deleted dependent_problem_fun.
2640         (df_ref.data): Removed.
2641         (df.out_of_date_transfer_functions, df.solutions_dirty): New
2642         variables.
2643         (DF_REF_DATA): Deleted macro.
2644         * df-problems.c (problem_RU, problem_RD, problem_LR, problem_UR,
2645         problem_LIVE, problem_UREC, problem_CHAIN, problem_RI): Added
2646         problem removal function and changed dependent_function.
2648 2006-11-04  Kenneth Zadeck <zadeck@naturalbridge.com>
2650         * df-scan.c (df_scan_start_dump): Changed print routine to print
2651         hard register names.
2652         * df-core.c (df_print_regset): New function.
2653         * global.c (global_alloc): Do not recompute register infomation
2654         when recomputing dataflow.
2655         * df.h (DF_RI_NO_UPDATE): New flag.
2656         * df-problems.c (df_lr_top_dump, df_lr_bottom_dump,
2657         df_ur_top_dump, df_ur_bottom_dump, df_live_top_dump,
2658         df_live_bottom_dump, df_urec_top_dump, df_urec_bottom_dump):
2659         Changed to use df_print_regset.
2660         (df_ri_alloc, df_ri_compute): Changed to not update if
2661         DF_RI_NO_UPDATE flag.
2662         * cfgrtl.c (print_rtl_with_bb): Changed to print preds and
2663         successor blocks in dump file.
2665 2006-11-03  Seongbae Park <seongbae.park@gmail.com>
2667         * global.c (global_conflicts): Use df_urec_get_live_at_top ()
2668         instead of DF_RA_LIVE_IN ().
2669         * function.h: Add a declaration for current_function_assembler_name().
2670         * function.c (current_function_assembler_name):  New function.
2671         (thread_prologue_and_epilogue_insns): Insert rtx_USE when profiling.
2672         * df.h (DF_REF_FLAGS_CLEAR): New macro.
2673         (df_urec_get_live_at_top): New function declaration.
2674         * df-problems.c (df_urec_get_live_at_top): New function.
2676 2006-10-28  Seongbae Park <seongbae.park@gmail.com>
2678         * df.h (df_rescan_blocks): Renamed to df_scan_blocks.
2679         * df-core.c (df_analyze): Use df_scan_blocks() instead.
2680         * ifcvt.c (if_convert): Use df_scan_blocks() instead.
2681         * df-scan.c
2682         (df_ref_record, df_def_record_1, df_defs_record, df_uses_record):
2683         They are made side-effect free.
2684         (df_ref_find_chains, df_ref_add_to_chains, df_refs_add_to_chains,
2685         df_ref_is_equal, df_ref_chain_find_ref, df_reg_chain_find_ref,
2686         df_scan_start_block, df_check_and_grow_ref_info,
2687         df_insn_refs_collect, df_bb_refs_collect,
2688         df_get_entry_block_defs, df_get_exit_block_uses,
2689         df_ref_verify, df_refs_verified, df_ref_chain_verify,
2690         df_reg_chain_clear_verified, df_bb_refs_verify,
2691         df_exit_block_verify, df_entry_block_verify, df_verify_blocks):
2692         New functions.
2693         (df_ref_create_structure): Initializes the fields
2694         of df_ref and does not connect it to various chains.
2695         (df_insn_refs_record, df_bb_refs_record, df_record_entry_block_defs,
2696          df_record_exit_block_uses, df_refs_record):
2697         Separate side-effects (adding chains and updating regs_ever_live)
2698         from traversing and finding the refs in the insn/basic block.
2699         (df_ref_create): Separate calls for creating the ref and add it
2700         to the chains.
2702 2006-10-24  Paolo Bonzini  <bonzinI@gnu.rg>
2704         * ddg.c (add_deps_for_def, add_deps_for_use): Use accessor macros.
2705         * df.h (DF_REF_STRIPPED, DF_SUBREGS): Remove.
2706         * df-core.c: Don't document scanning flags.
2707         * df-scan.c (df_ref_record): Always behave as if DF_SUBREGS was set.
2708         * df-problems.c (df_lr_bb_local_compute): Strip SUBREGs with
2709         DF_REF_REAL_REG.
2710         (df_chain_start_dump): Don't dump DF_REF_STRIPPED.
2711         (df_create_unused_note, df_ri_bb_compute): Don't "inline"
2712         DF_REF_REAL_LOC.
2713         * fwprop.c (fwprop_init): Do not pass DF_SUBREGS.
2714         * loop-invariant.c (record_use): Don't strip SUBREGs.
2715         (record_uses): Do it here with DF_REF_REAL_LOC.
2716         * loop-iv.c (iv_analyze_def): Only allow REGs.  Replace previous
2717         way to check for SUBREGs with an assertion.
2719 2006-10-19  Kenneth Zadeck <zadeck@naturalbridge.com>
2721         * sched-ebb.c (schedule_ebbs): Changed flags to df_init.
2722         * fwprop.c (use_killed_between): Changed to use proper macros.
2723         (All_uses_available_at, try_fwprop_subst): Added support for
2724         separated reg_equiv/equal df_refs.
2725         (fwprop_init): Changed flags to df_init.
2726         (fwprop, fwprop_addr): Changed call to df_reorganize_refs to
2727         df_maybe_reorganize_use_refs.
2728         * see.c (see_initialize_data_structures): Changed flags to
2729         df_init.
2730         * ddg.c (build_inter_loop_deps): Now skips refs with
2731         reg_equal/equiv notes.
2732         * modulo-sched.c (sms_schedule): Changed flags to df_init.
2733         * web.c (union_defs): Added support for separated reg_equiv/equal
2734         df_refs.
2735         (web_main): Changed flags to df_init and changed call to
2736         df_reorganize_refs to df_maybe_reorganize_(use|def)_refs.
2737         * loop_invariant.c (check_dependency): New function split out from
2738         check_dependencies.
2739         (record_uses): Added support for separated reg_equiv/equal
2740         df_refs.
2741         (move_loop_invariants): Changed flags to df_init.
2742         * loop-iv.c (iv_analysis_loop_init): Changed flags to df_init.
2743         (latch_dominating_def): Changed to use proper macros.
2744         * combine.c (create_log_links): Ditto.
2745         * sched-rgn.c (schedule_insns): Changed flags to df_init.
2746         * dce.c (dce_process_block): Changed to use proper macros.
2747         * df.h (df_insn_info.eq_uses): New field.
2748         (DF_EQUIV_NOTES): Deleted permanent_flag.
2749         (DF_EQ_NOTES): New changeable_flag.
2750         (df_ref_info.regs_size, df_ref_info.regs_inited): Moved to df
2751         structure.
2752         (df.def_regs, df.use_regs, df.eq_use_regs): New fields.
2753         (df_ref_info.begin): Moved from df_reg_info.
2754         (DF_DEFS_COUNT, DF_DEFS_BEGIN, DF_DEFS_COUNT, DF_DEFS_BEGIN,
2755         DF_REG_EQ_USE_GET, DF_REG_EQ_USE_CHAIN, DF_REG_EQ_USE_COUNT): New
2756         macros.
2757         (DF_REG_SIZE, DF_REG_DEF_GET, DF_REG_DEF_CHAIN, DF_REG_DEF_COUNT,
2758         DF_REG_USE_GET, DF_REG_USE_CHAIN, DF_REG_USE_COUNT): Redefined.
2759         (df_reorganize_refs): Split into df_maybe_reorganize_use_refs and
2760         df_maybe_reorganize_def_refs.
2761         (df_ref_info.refs_organized): Split into refs_organized_alone and
2762         refs_organized_with_eq_uses.
2763         * df-problems.c (df_ru_bb_local_compute_process_def,
2764         df_ru_local_compute, df_ru_confluence_n, df_ru_transfer_function,
2765         df_ru_start_dump, df_rd_bb_local_compute_process_def,
2766         df_rd_local_compute, df_rd_confluence_n, df_rd_transfer_function,
2767         df_rd_start_dump, df_chain_alloc, df_chain_insn_reset,
2768         df_chain_create_bb_process_use, df_chain_create_bb,
2769         df_chain_start_dump): Changed to use proper macros.
2770         (df_ru_bb_local_compute, df_chain_insn_reset, df_chain_create_bb):
2771         Added support for separated reg_equiv/equal df_refs.
2772         (df_ru_local_compute, df_rd_local_compute, df_chain_alloc): Split
2773         into df_maybe_reorganize_use_refs and
2774         df_maybe_reorganize_def_refs.
2775         * df-scan.c (df_grow_reg_info, df_rescan_blocks, df_ref_create):
2776         Changed to process all data structures dependent on number of
2777         registers at once.
2778         (df_scan_free_internal, df_scan_alloc): Changed to process new
2779         data structures properly.
2780         (df_rescan_blocks): Split into refs_organized_alone and
2781         refs_organized_with_eq_uses.
2782         (df_reg_chain_unlink): Remove decrement of bitmap_size fields.
2783         (df_reg_chain_unlink, df_insn_refs_delete,
2784         df_ref_create_structure): Changed to use proper macros.
2785         (df_reg_chain_unlink, df_ref_remove, df_insn_refs_delete,
2786         df_reorganize_refs, df_ref_create_structure, df_insn_refs_record):
2787         Added support for separated reg_equiv/equal df_refs.
2788         (df_maybe_reorganize_use_refs, df_maybe_reorganize_def_refs): New
2789         functions.
2790         * df-core.c (df_bb_regno_last_use_find,
2791         df_bb_regno_first_def_find, df_bb_regno_last_def_find,
2792         df_insn_regno_def_p, df_find_def, df_find_use, df_dump_start,
2793         df_regno_debug): Changed to use proper macros.
2794         (df_find_use, df_insn_uid_debug, df_insn_uid_debug,
2795         df_insn_debug_regno, df_insn_debug_regno): Added support for
2796         separated reg_equiv/equal df_refs.
2799 2006-10-18  Paolo Bonzini  <bonzini@gnu.org>
2801         * stack-ptr-mod.c (pass_stack_ptr_mod): Don't set pass name.
2802         * final.c (pass_no_new_pseudos): Don't set pass name.
2804         * fwprop.c (all_uses_available_at): Use DF_REF_REG.
2805         (forward_propagate_into): Discard artificial defs/uses.
2806         (pass_rtl_fwprop_addr): Add TODO_df_finish.
2808 2006-10-03  Richard Sandiford  <richard@codesourcery.com>
2810         * cselib.h (cselib_discard_hook): Declare.
2811         * cselib.c (cselib_discard_hook): New variable.
2812         (remove_useless_values): Call it before freeing useless values.
2813         * dce.c (base_address): New union.
2814         (store_base_info): Change the type of the base field from "rtx"
2815         to "union base_address".
2816         (local_invariant_stores, local_value_stores): New variables.
2817         (store_base_eq): Split into...
2818         (invariant_store_base_eq, value_store_base_eq): ...these new functions.
2819         (store_base_hash): Split into...
2820         (invariant_store_base_hash, value_store_base_hash): ...these
2821         new functions.
2822         (store_base_del): Fix formatting.
2823         (init_store_group): Split into...
2824         (init_invariant_store_group, init_value_store_group): ...these
2825         new functions.
2826         (init_dse): Use init_invariant_store_group instead of init_store_group.
2827         (get_canonical_address): Delete.
2828         (add_store_offset): Change the type of BASE from "rtx" to "union
2829         base_address *".
2830         (record_store): Remove the GROUP parameter.  Don't call
2831         get_canonical_address.  Store the base in a "union base_address" and
2832         add stores to either local_invariant_stores or local_value_stores.
2833         (record_stores): Remove the GROUP parameter and adjust the calls
2834         to record_store.
2835         (store_base_local): Add a parameter that indicates whether stores
2836         are invariant or cselib_vals.
2837         (invariant_store_base_local): New function.
2838         (value_store_base_local): Likewise.
2839         (value_store_base_useless): Likewise.
2840         (remove_useless_values): Likewise.
2841         (store_base_prune_needed): Adjust for store_base_info changes.
2842         (prescan_insns_for_dse): Remove the local group variable and use
2843         local_invariant_stores and local_value_stores instead.  Adjust the
2844         call to record_stores.  Use remove_useless_values as the
2845         cselib_discard_hook while processing a basic block.
2847 2006-10-03  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2849         * sched-ebb.c (ebb_head, ebb_tail, ebb_head_or_leaf_p): Removed.
2850         (begin_schedule_ready, schedule_ebb, ebb_head_or_leaf_p): Remove
2851         unnecessary argument, update all callers.
2852         (ebb_sched_info): Update initializer.
2853         (df): New static variable to keep dataflow info.
2854         (compute_jump_reg_dependencies): Use it instead of glat.
2855         * haifa-sched.c (glat_start, glat_end, glat_size, init_glat,
2856         init_glat1, free_glat): Removed.
2857         (generate_recovery_code, begin_speculative_block,
2858         add_to_speculative_block, init_before_recovery,
2859         create_recovery_block, create_check_block_twin,
2860         schedule_block, sched_init, add_block): Remove
2861         unnecessary argument, update all callers.
2862         * modulo-sched.c (sms_sched_info): Update initializer.
2863         (sms_schedule): Update call to sched_init ().
2864         * sched-int.h (struct sched_info): Remove unnecessary argument and
2865         update all callers of field 'begin_schedule_ready'.  Remove field
2866         'region_head_or_leaf_p'.
2867         (glat_start, glat_end): Remove prototypes.
2868         (enum SCHED_FLAGS): Remove USE_GLAT, DETACH_LIFE_INFO.  Use NEW_BBS
2869         instead.
2870         (schedule_block, sched_init, add_block, schedule_region): Update
2871         prototypes.
2872         * sched-rgn.c (df, not_in_df): New static variables.
2873         (check_live_1, update_live_1, add_block1): Use them instead of glat.
2874         (begin_schedule_read, schedule_region): Remove unnecessary argument,
2875         update all callers.
2876         (region_head_or_leaf_p): Remove.
2877         (region_sched_info): Update initializer.
2878         * config/ia64/ia64.c (set_sched_flags): Use NEW_BBS instead of
2879         DETACH_LIFE_INFO.
2881 2006-10-01  Kenneth Zadeck <zadeck@naturalbridge.com>
2883         * df-scan.c (df_ref_record, df_insn_refs_record,
2884         df_bb_refs_record, df_refs_record, df_record_entry_block_defs):
2885         Removed DF_HARD_REGS flag.
2886         * df-core.c (comments): Ditto.
2887         * df.h (permanent_flags.DF_HARD_REFS): Removed.
2888         (changeable_flags.DF_NO_HARD_REGS): Added.
2889         * df-problems.c (df_rd_bb_local_compute_process_def,
2890         df_rd_bb_local_compute, df_chain_create_bb_process_use,
2891         df_chain_create_bb): Added support for DF_NO_HARD_REGS flag.
2892         * dce.c (init_dce): Removed DF_HARD_REFS flag.
2893         * reg_stack.c (reg_to_stack): Ditto.
2894         * sched_rgn.c (sched_insns): Ditto.
2895         * regrename.c (regrename_optimize): Ditto.
2896         * sched_ebb.c (schedule_ebbs): Ditto.
2897         * fwprop.c (fwprop_init): Ditto.
2898         * see.c (see_initialize_data_structures): Ditto.
2899         * auto_inc_dec.c (rest_of_handle_auto_inc_dec): Ditto.
2900         * mode-switching.c (optimize_mode_switching): Ditto.
2901         * modulo-sched.c (sms_schedule): Ditto.
2902         * ifcvt.c (if_convert): Ditto.
2903         * recog.c (peephole2_optimize): Ditto.
2904         * regmove.c (regmove_optimize, rest_of_handle_stack_adjustments):
2905         Ditto.
2906         * local_alloc.c (rest_of_handle_local_alloc): Ditto.
2907         * function.c (thread_prologue_and_epilogue_insns): Ditto.
2908         * rtl_factoring.c (rtl_sequabstr): Ditto.
2909         * bt_load.c (branch_target_load_optimize): Ditto.
2910         * loop_invariant.c (move_loop_invariants): Ditto.
2911         * subregs-init.c (initialize_uninitialized_subregs): Ditto.
2912         * loop-iv.c (iv_analysis_loop_init): Ditto.
2913         * combine.c (rest_of_handle_combine): Ditto.
2914         * web.c (web_main): Added DF_NO_HARD_REGS flag and changed loops
2915         to skip over hard regs.
2916         * reorg.c (dbr_schedule): Removed extra flags from
2917         df_*_add_problems calls.
2919 2006-09-30  Kenneth Zadeck <zadeck@naturalbridge.com>
2921         * df-scan.c (problem_SCAN): Removed flags.
2922         (df_scan_add_problem): Ditto.
2923         (df_ref_record, df_insn_refs_record, df_bb_refs_record,
2924         df_refs_record, df_record_entry_block_defs,
2925         df_record_exit_block_uses ): Moved flags to df structure.
2926         * df-core.c (df_init): Added permanent_flags and changeable_flags.
2927         (df_add_problem): Removed flags parameter.
2928         (df_set_flags, df_clear_flags): Changed processing of flags.  *
2929         df.h (df_dependent_problem_function, struct df_problem): Removed
2930         flags.
2931         (DF_HARD_REGS, DF_EQUIV_NOTES, DF_SUBREGS, DF_DU_CHAIN,
2932         DF_UD_CHAIN, DF_RI_LIFE, DF_RI_SETJMP): Changed to be fields in
2933         df_permanent_flags.
2934         (DF_LR_RUN_DCE): Changed to be fields in df_changeable_flags.
2935         (df_init, df_add_problem, df_set_flags, df_clear_flags,
2936         df_ru_add_problem, df_rd_add_problem, df_lr_add_problem,
2937         df_ur_add_problem, df_live_add_problem, df_urec_add_problem,
2938         df_chain_add_problem, df_ri_add_problem, df_scan_add_problem):
2939         Changed flag parameters.
2940         * df-problems.c (problem_RU, problem_RD, problem_LR, problem_UR,
2941         problem_LIVE, problem_UREC, problem_CHAIN, problem_RI): Removed
2942         changeable flags field.
2943         (df_ru_add_problem, df_rd_add_problem, df_lr_add_problem,
2944         df_ur_add_problem, df_live_add_problem, df_urec_add_problem,
2945         df_chain_add_problem, df_ri_add_problem): Removed flags parameter.
2946         (df_lr_local_finalize, df_chain_alloc, df_chain_insn_reset,
2947         df_chain_bb_reset, df_chain_create_bb_process_use,
2948         df_chain_start_dump, df_ri_alloc, df_ri_bb_compute, df_ri_compute,
2949         df_ri_free): Changed location of flags.
2950         * dce.c (init_dce): Moved flags from df_*_add_problem to df_init.
2951         (fast_dce): Changed parameters to df_set_flags and df_clear_flags.
2952         * reg_stack.c (reg_to_stack): Moved flags from df_*_add_problem to df_init.
2953         * sched_rgn.c (sched_insns): Ditto.
2954         * regrename.c (regrename_optimize): Ditto.
2955         * sched_ebb.c (schedule_ebbs): Ditto.
2956         * fwprop.c (fwprop_init): Ditto.
2957         * see.c (see_initialize_data_structures): Ditto.
2958         * auto_inc_dec.c (rest_of_handle_auto_inc_dec): Ditto.
2959         * mode-switching.c (optimize_mode_switching): Ditto.
2960         * modulo-sched.c (sms_schedule): Ditto.
2961         * web.c (web_main): Ditto.
2962         * ifcvt.c (if_convert): Ditto.
2963         * recog.c (peephole2_optimize): Ditto.
2964         * regmove.c (regmove_optimize, rest_of_handle_stack_adjustments):
2965         Ditto.
2966         * local_alloc.c (rest_of_handle_local_alloc): Ditto.
2967         * function.c (thread_prologue_and_epilogue_insns): Ditto.
2968         * rtl_factoring.c (rtl_sequabstr): Ditto.
2969         * bt_load.c (branch_target_load_optimize): Ditto.
2970         * loop_invariant.c (move_loop_invariants): Ditto.
2971         * subregs-init.c (initialize_uninitialized_subregs): Ditto.
2972         * loop-iv.c (iv_analysis_loop_init): Ditto.
2973         * combine.c (rest_of_handle_combine): Ditto.
2975 2006-08-04  Kenneth Zadeck <zadeck@naturalbridge.com>
2977         * tree-pass.h (pass_rtl_dse): Split into pass_rtl_dse1,
2978         pass_rtl_dse2, pass_rtl_dse3.
2979         * passes.c (init_optimization_passes): Ditto.
2980         * timevar.def (TV_DSE): Split into TV_DSE1, TV_DSE2, and TV_DSE3.
2981         (TV_THREAD_PROLOGUE_AND_EPILOGUE): Made text shorter to improve
2982         readability.
2983         * df.core.c (df_init, df_finish1, df_analyze_problem, df_analyze):
2984         Made postorder and instance variable of df.
2985         (df_finish1): Made tolerant of being passed NULL instance.
2986         (df_get_n_blocks, df_get_postorder): New functions.
2987         * cfganal (post_order_compute): Added delete_unreachable
2988         parameter and code to delete unreachable blocks.
2989         * local_alloc (rest_of_handle_local_alloc): Removed unnecessary
2990         call to delete_unreachable_blocks.
2991         * df.h (postorder, n_blocks): New instance variables.
2992         (df_get_n_blocks, df_get_postorder): New functions.
2993         * sched-rgn.c (extend_rgns): Added extra parameter to
2994         post_order_compute.
2995         * basic-block.h (post_order_compute): Ditto.
2996         * dce.c (fast_dce, init_rs_dflow): Now uses postorder and n_blocks from df.
2997         (pass_rtl_dse): Split into pass_rtl_dse1,
2998         pass_rtl_dse2, pass_rtl_dse3.
2999         * sched-ebb.c (schedule-ebbs): Added return value.
3000         * haifa-sched.c (add_block): Made df parameter unused and fixed
3001         incorrect assert.
3003 2006-08-01  Kenneth Zadeck <zadeck@naturalbridge.com>
3005         * sched-ebb.c (sched_ebbs): Now returns the df instance created.
3006         * rtl.h (sched_ebbs): Ditto.
3007         * recog.c (split_all_insns): Made public again so it can be called
3008         from ia64.c
3009         * rtl.h (split_all_insns): Ditto.
3010         * df-problems.c (df_ri_compute): Removed call to non existent
3011         function.
3012         * config/ia64/ia64.c (emit_predicate_relation_info): Added df
3013         parameter and removed rotten ref to global instance.
3014         (ia64_reorg): Added local instance of df and removed calls to non
3015         existent flow.c.
3017 2006-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
3019         * regrename.c (regrename_optimize): Renamed df_clrur to df_live
3020         and removed df_finish call.
3021         (pass_regrename): Added TODO_df_finish flag.
3022         * sched-ebb.c (schedule_ebbs): Renamed df_clrur to df_live
3023         and removed df_finish call.
3024         * fwprop.c (fwprop_done): Removed df_finish call.
3025         (pass_rtl_fwprop): Added TODO_df_finish flag.
3026         * see.c (see_commit_changes): Removed unnecessary set to df.
3027         * postreload.c (rest_of_handle_postreload): Removed df_finish call.
3028         (pass_postreload_cse): Added TODO_df_finish flag.
3029         * tree-pass.h (TODO_df_finish): Added.
3030         * cfg.c (dump_bb_info): Added flow info to dumps
3031         (dump_reg_info): New function.
3032         (dump_flow_info): Moved reg info printing to dump_reg_info.
3033         * auto-inc-dec.c (rest_of_handle_auto_inc_dec): Renamed df_clrur to df_live
3034         and removed df_finish call.
3035         (pass_inc_dec): Added TODO_df_finish flag.
3036         * reorg.c (dbr_schedule): Renamed df_clrur to df_live
3037         and removed df_finish call.
3038         (pass_delay_slots): Added TODO_df_finish flag.
3039         * df-scan.c (df_scan_alloc): Added set to dflow->computed.
3040         (df_scan_dump): Renamed to df_scan_start_dump.
3041         (problem_SCAN): Updated for new dumpers.
3042         * haifa-sched.c (sched_finish): Removed df parameter and deleted
3043         call to df_finish.
3044         * df-core.c (ddf): Renamed to df_current_instance and made public.
3045         (df_init): Ditto and added check to make sure only one instance of
3046         df is alive at any point.
3047         (df_add_problem): Initialized dflow->computed.
3048         (df_analyze_problem): Set dflow->computed.
3049         (df_dump): Now calls new dumpers.
3050         (df_dump_start, df_dump_top, df_dump_bottom): New functions.
3051         (debug_df_insn, debug_df_reg, debug_df_regno, debug_df_defno,
3052         debug_df_useno): Renamed ddf to df_current_instance.
3053         * mode_switching (optimize_mode_switching): Renamed df_clrur to df_live
3054         and removed df_finish call.
3055         (pass_mode_switching): Added TODO_df_finish flag.
3056         * modulo-sched.c (sms_schedule): Removed calls to df_dump and df
3057         parameter from sched_finish.
3058         (pass_sms): Added TODO_df_finish flag.
3059         * web.c (web_main): Removed call to df_dump and df_finish.
3060         (pass_web): Added TODO_df_finish flag.
3061         * loop-init.c (pass_rtl_move_loop_init): Added TODO_df_finish
3062         flag.
3063         * global.c (global_alloc): Removed call to df_dump and debugging
3064         code.
3065         * ifcvt.c (if_convert):  Renamed df_clrur to df_live
3066         and removed df_finish call.
3067         (pass_rtl_ifcvt, pass_if_after_combine, pass_if_after_reload):
3068         Added TODO_df_finish flag.
3069         * recog.c (peephole2_optimize): Renamed df_clrur to df_live and
3070         removed df_finish call.
3071         (pass_peephole2): Added TODO_df_finish flag.
3072         * regmove.c (regmove_optimize, rest_of_handle_stack_adjustments):
3073         Renamed df_clrur to df_live and removed df_finish call.
3074         (pass_regmove, pass_stack_adjustments): Added TODO_df_finish flag.
3075         * function.c (epilogue_done): Removed df_finish call.
3076         (pass_thread_prologue): Added TODO_df_finish flag.
3077         * df.h (DF_CLRUR): Renamed to DF_LIVE.
3078         (df_dump_bb_problem_function): New function type.
3079         (df_problem.dump_fun): Deleted.
3080         (df_problem.dump_fun_start, df_problem.dump_fun_top,
3081         df_problem.dump_fun_bottom, problem_data.computed,
3082         df_current_instance): New fields.
3083         (DF_CLRUR_BB_INFO): Renamed to DF_LIVE_BB_INFO.
3084         (df_clrur_bb_info): Renamed to df_live_bb_info.
3085         (df_dump_start, df_dump_top, df_dump_bottom): New functions.
3086         * rtl-factoring (rtl_seqabstr): Renamed df_clrur to df_live
3087         and removed df_finish call.
3088         (pass_rtl_seqabstr):  Added TODO_df_finish flag.
3089         * bt-load (branch_target_load_optimize): Renamed df_clrur to df_live
3090         and removed df_finish call.
3091         (pass_branch_target_load_optimize1,
3092         pass_branch_target_load_optimize2): Added TODO_df_finish flag.
3093         * loop-invariant.c (move_loop_invariants): Removed call to
3094         df_finish.
3095         * subregs-init.c (initialize_uninitialized_subregs): Renamed
3096         df_clrur to df_live and changed call to dg_get_live_in to
3097         DF_LIVE_IN.
3098         * rtl.h (dump_reg_info): New function.
3099         * sched-int.h (sched_finish): Removed df parameter.
3100         * combine.c (rest_of_handle_combine): Renamed df_clrur to df_live
3101         and removed df_finish call.
3102         (pass_combine): Added TODO_df_finish flag.
3103         * df-problems.c (df_get_live_in, df_get_live_out): Renamed
3104         DF_CLRUR to DF_LIVE.
3105         (df_ru_dump, df_rd_dump, df_lr_dump, df_ur_dump, df_clrur_dump,
3106         df_urec_dump, df_ri_dump): Deleted function.
3107         (df_ru_start_dump, df_ru_top_dump, df_ru_bottom_dump,
3108         df_rd_start_dump, df_rd_top_dump, df_rd_bottom_dump,
3109         df_lr_start_dump, df_lr_top_dump, df_lr_bottom_dump,
3110         df_ur_start_dump, df_ur_top_dump, df_ur_bottom_dump,
3111         df_live_top_dump, df_live_bottom_dump, df_ri_start_dump,
3112         df_urec_top_dump, df_urec_bottom_dump): New function.
3113         (problem_RU, problem_RD, problem_LR, problem_UR, problem_UREC,
3114         problem_CHAIN, problem_RI): Replaced dump functions.
3115         (df_clrur_get_bb_info): Renamed to df_live_get_bb_info.
3116         (df_clrur_set_bb_info): Renamed to df_live_set_bb_info.
3117         (df_clrur_free_bb_info): Renamed to df_live_free_bb_info.
3118         (df_clrur_alloc): Renamed to df_live_alloc.
3119         (df_clrur_local_finalize): Renamed to df_live_local_finalize.
3120         (df_clrur_free): Renamed to df_clrur_free.
3121         (problem_CLRUR): Renamed to problem_LIVE and dump functions
3122         changed.
3123         (df_clrur_add_problem): Renamed to df_live_add_problem.
3124         (df_chains_dump): Renamed to df_chain_start_dump.
3125         (df_chain_add_problem, df_ri_alloc, df_ri_compute): Removed
3126         problem_data->computed.
3127         * Makefile.in (passes.o): Added DF_H.
3128         * sched-rgn.c (schedule_insns): Renamed df_clrur to df_live
3129         and removed df_finish call.
3130         (pass_sched, pass_sched2): Added TODO_df_finish flag.
3131         * passes.c (execute_todo): Added call to df_finish for
3132         TODO_df_finish flag.
3133         * cfgrtl.c (dump_regset_in, dump_regset_out): Deleted.
3134         (rtl_dump_bb, print_rtl_with_bb): Fixed to find and print df info.
3135         * dce.c (init_dce): Removed call to df_dump.
3136         (end_dce, end_fast_dce): Removed call df_finish and null out local
3137         df instance variable.
3138         (pass_rtl_dce, pass_fast_rtl_dce, pass_rtl_dse): Added
3139         TODO_df_finish flag.
3142 2006-07-23  Kenneth Zadeck <zadeck@naturalbridge.com>
3144         * tree-pass.h (pass_regclass_init, pass_no_new_pseudos,
3145         pass_split_before_sched2): Added.
3146         (pass_life, pass_remove_death_notes): Deleted.
3147         * rtlanal.c: Documentation.
3148         * stack-ptr-mod.c: Ditto.
3149         * output.h: Ditto.
3150         * function.c: Ditto.
3151         * caller-save.c: Ditto.
3152         * sched-deps.c: Ditto.
3153         * jump.c: Ditto.
3154         * alias.c: Ditto.
3155         * calls.c: Ditto.
3156         * cfgloop.c: Ditto.
3157         (establish_preds, flow_loops_find): Removed ref to cfun->max_loop_depth.
3158         * final.c: (rest_of_no_new_pseudos, pass_no_new_pseudos): Added.
3159         * cfg.c (dump_regset, debug_regset): Moved from flow.c.
3160         * regs.h (regs_may_share): Deleted.
3161         (allocate_reg_life_data): Added.
3162         * flow.c: Deleted.
3163         * global.c (reg_may_share): Deleted.
3164         (global_alloc): Removed support for regs_may_share.
3165         * ifcvt.c (rest_or_handel_if_conversion): Removed ref to
3166         clear_reg_deaths.
3167         * timevar.def (TV_FLOW): Removed.
3168         * recog.c (find_single_use, find_single_use_1): Moved to combine
3169         and made static.
3170         (split_all_insns, split_all_insns_noflow): Made static.
3171         (pass_split_before_regclass): Fixed tv_id.
3172         (gate_handle_split_before_sched2,
3173         rest_of_handle_split_before_sched2, pass_split_before_sched2): New.
3174         (pass_split_for_shorten_branches): Renamed and fixed tv_id.
3175         * recog.h (find_single_use): Removed.
3176         * regmove.c (find_use_as_address): Moved from flow and made
3177         static.
3178         * function.h (max_loop_depth): Removed.
3179         * cfgcleanup.c (delete_dead_jumptables): Moved from flow.c.
3180         * subregs-init.c (initialize_uninitialized_subregs): Added call to
3181         allocate_reg_life_data if new regs were added.
3182         * regclass.c (max_regno, reg_set_to_hard_reg_set,
3183         allocate_reg_life_data): Moved from flow.c.
3184         (regclass_init): Now static and returns unsigned int.
3185         (pass_regclass_init, find_subregs_of_mode): New.
3186         (init_subregs_of_mode): Now fills the hash table.
3187         * rtl.h (find_use_as_address, split_all_insns,
3188         split_all_insns_noflow, regclass_init): Deleted.
3189         * combine.c (find_single_use_1, find_single_use): Moved from recog
3190         and made static.
3191         (delete_noop_moves): Moved from flow.c and made static.
3192         (rest_of_handle_combine): Now runs dce as part of df_init.
3193         * df-problems.c (reg_n_info): Moved from flow.c.
3194         (df_ri_problem_data.computed): Added field.
3195         (print_note, df_set_unused_notes_for_mw, df_set_dead_notes_for_mw,
3196         df_create_unused_note, df_ri_bb_compute, df_ri_compute): Changed
3197         note printing to go to dump_file.
3198         (df_ri_alloc, df_ri_compute, df_ri_free, df_ri_dump): Added
3199         support for computed flag.
3200         * Makefile.in: (flow.c flow.o): Removed.
3201         * sched-rgn.c (check_dead_notes1, deaths_in_region): Removed.
3202         (init_regions, add_block1): Removed last of note counting code.
3203         (rest_of_handle_sched2): Moved call to split_all_insns to separate
3204         pass.
3205         * basic_block.h (first_insn_after_basic_block_note,
3206         update_life_extent, PROP_* flags, life_analysis, update_life_info
3207         update_life_info_in_dirty_blocks, count_or_remove_death_notes,
3208         propagate_block, clear_reg_deaths, propagate_block_info,
3209         propagate_one_insn, init_propagate_block_info,
3210         free_propagate_block_info): Removed.
3211         (CLEANUP_*): Renumbered.
3212         sched_vis.c: (print_exp): Added proper printing for PRE and
3213         POST_MODIFY.
3214         * passes.c (init_optimization_passes): Added pass_regclass_init,
3215         pass_no_new_pseudos, and pass_split_before_sched2.  Deleted
3216         pass_life.
3217         * struct-equiv.c (struct_equiv_init): Removed dead conditional.
3218         * config/rs6000/rs6000.c (print_operand): More fixes for
3219         PRE_MODIFY.
3220         * config/rs6000/rs6000.md ("*movdf_hardfloat32",
3221         "*movdf_softfloat32"): Ditto.
3222         * cfgrtl (first_insn_after_basic_block_note): Moved from flow.c
3223         and made static.
3226 2006-07-16  Zdenek Dvorak <dvorakz@suse.cz>
3227             Kenneth Zadeck <zadeck@naturalbridge.com>
3229         * regrename.c: Fixed comments.
3230         * see.c (rest_of_handle_see): Removed call to
3231         update_life_info_in_dirty_blocks.
3232         * tree-pass.h: (pass_clear_df, pass_reset_df): Removed.
3233         * passes.c (init_optimization_passes): Ditto.
3234         * cfghooks.c (split_block): Remove call to split_block_end.
3235         (merge_blocks): Removed call to merge_blocks_end.
3236         (duplicate_block): Removed call to duplicate_block_end.
3237         * cfghooks.h (split_block_end, merge_blocks_end,
3238         duplicate_block_end): Removed.
3239         * cfgrtl.c (rtl_split_block_end, rtl_merge_blocks_end): Removed.
3240         (rtl_create_basic_block, force_nonfallthru_and_redirect,
3241         rtl_split_edge, cfg_layout_merge_blocks, cfg_layout_split_edge):
3242         Removed old calls to incremental dataflow.
3243         (dump_regset_in, dump_regset_out): Removed call to dump_regset.
3244         (rtl_dump_bb, print_rtl_with_bb): Rearranged dataflow printing.
3245         * cfg.c (compact_blocks): Removed code to keep dataflow up to
3246         date.
3247         * flow.c (clear_log_links): Deleted
3248         (life_analysis, init_propagate_block_info): Removed PROP_LOG_LINKS.
3249         (update_life_info): Removed call to clear_log_links.
3250         (mark_set_1): Removed code to build log links.
3251         (clear_log_links): Deleted.
3252         * df-scan.c (df_uses_record): Added code to set
3253         DF_REF_PRE_POST_MODIFY.
3254         (df_insn_refs_record): Added code to set DF_REF_CALL_STACK_FRAME.
3255         * df-core.c (df_analyze_simple_change_some_blocks,
3256         df_analyze_simple_change_one_block, df_compact_blocks,
3257         df_bb_replace, reset_df, pass_reset_df, clear_df, pass_clear_df):
3258         Deleted.
3259         * recog.c (peephole2_optimize): Deleted some rotted code.
3260         * df.h (DF_REF_PRE_POST_MODIFY, DF_REF_CALL_STACK_USAGE): New
3261         Flags.
3262         (df_analyze_simple_change_some_blocks,
3263         df_analyze_simple_change_one_block, df_compact_blocks,
3264         df_bb_replace): Deleted.
3265         * bt-load (branch_target_load_optimize): Removed call to
3266         update_life_info.
3267         * cfgcleanup.c (thread_jump, try_forward_edges): Deleted mode
3268         parameter to thread_jump.
3269         (try_optimize_cfg, cleanup_cfg): Removed CLEANUP_UPDATE_LIFE.
3270         * cfglayout.c (cfg_layout_duplicate_bb_end): Deleted.
3271         * combine.c (combine_instructions): Removed call to
3272         update_life_info.
3273         (set_nonzero_bits_and_sign_copies, reg_nonzero_bits_for_combine,
3274         reg_num_sign_bit_copies_for_combine, get_last_value_validate,
3275         get_last_value, reg_dead_at_p): Changed to use local df instance.
3276         (create_log_links, clear_log_links): New function.
3277         (rest_of_handle_combine): Added new version of df, create and
3278         destroy log links locally.
3279         * bb-reorder.c (rest_of_handle_partition_blocks): Removed call to
3280         update_life_info.
3281         * basic-block.h (PROP_LOG_LINKS): Removed and renumbered other
3282         PROP_*.
3283         (CLEANUP_UPDATE_LIFE, CLEANUP_LOG_LINKS): Removed and renumbered
3284         other CLEANUP_*.
3285         * tree-cfg.c (tree_cfg_hooks): Removed fields.
3286         * struct-equiv.c (struct_equiv_init): Removed call to
3287         update_life_in_dirty_blocks.
3288         * dce.c (init_dce, end_dce, end_fast_dce): Removed code to service
3289         rtl_df.
3291 2006-07-12  Kenneth Zadeck <zadeck@naturalbridge.com>
3293         * auto-inc-dec.c (parse_add_or_inc): Moved test to merge_in_block.
3294         (find_inc): Now returns success flag if transformation was made.
3295         (find_mem): Ditto.
3296         (merge_in_block): Restructed to loop if any merges were made.
3297         Added max_reg parameter.  Added test from parse_add_or_inc.
3299 2006-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3301         * regrename.c (regrename_optimize): Changed df problem
3302         initialization.
3303         * sched-ebb.c (schedule_ebbs): Ditto.
3304         * reorg.c (dbr_schedule): Ditto.
3305         * mode-switching.c (optimize_mode_switching): Ditto.
3306         * ifcvt.c (if_convert): Ditto.
3307         * reorg.c (peephole2_optimize): Ditto.
3308         * regmove.c (regmove_optimize, rest_of_handle_stack_adjustments):
3309         Ditto.
3310         * sched-rgn.c (schedule_insns): Ditto.
3311         * rtl-factoring.c (rtl_seqabstr): Ditto.
3312         * bt-load.c (branch_target_load_optimize): Ditto.
3313         * subregs-init.c (initialize_uninitialized_subregs): Ditto.
3314         * df-core.c (reset_df): Ditto.
3315         * flow.c (update_life_info, propagate_one_insn): Renamed UPWARD_LIVE
3316         to LR.
3317         (rest_of_handle_life): Changed df problem
3318         initialization.
3319         * function.c (keep_stack_depressed): Renamed UPWARD_LIVE to LR.
3320         * combine.c (set_nonzero_bits_and_sign_copies): Changed DF_LIVE_IN
3321         to DF_UR_IN or DF_LR_IN.
3322         (reg_nonzero_bits_for_combine,
3323         reg_num_sign_bit_copies_for_combine, get_last_value): Changed
3324         DF_LIVE_IN to DF_UR_IN.
3325         * reg-stack.c (reg_to_stack): Changed df problem
3326         initialization. Changed DF_LIVE_IN to DF_LR_IN. str
3327         * struct-equiv.c (struct_equiv_init): Renamed UPWARD_LIVE
3328         to LR.
3329         * dce.c (dce_process_block): Changed DF_UPWARD_LIVE_* to DF_LR_*.
3330         * df.h: (DF_CLRUR) Added symbol and renamed others in block.
3331         (DF_CLRUR_BB_INFO): New macro.
3332         (DF_LIVE_IN, DF_LIVE_OUT): Changed to use output of clrur problem.
3333         (DF_UPWARD_LIVE_IN): Renamed to DF_LR_IN.
3334         (DF_UPWARD_LIVE_OUT): Renamed to DF_LR_OUT.
3335         (df_clrur_bb_info): New structure.
3336         (df_clrur_add_problem, df_clrur_get_bb_info): New functions.
3337         * df-problems: (df_get_live_in, df_get_live_out,
3338         df_lr_simulate_artificial_refs_at_end): Reworked to
3339         to be consistent with new dataflow problems and naming.
3340         (df_ur_local_finalize): Deleted function.
3341         (df_problem problem_UR): Removed ref to df_ur_local_finalize.
3342         (df_clrur_get_bb_info, df_clrur_set_bb_info,
3343         df_clrur_free_bb_info, df_clrur_alloc, df_clrur_free,
3344         df_clrur_dump, df_clrur_add_problem): New functions.
3345         (df_problem problem_CLRUR): New datastructure.
3346         * auto-inc-dec.c (reg_next_inc_use): New Array.
3347         (attempt_change): Added inc_reg parm and boolean result.  Move
3348         some tests to try_merge.  Added processing for reg_next_inc_use.
3349         (try_merge): Added boolean result and some test moved from
3350         attempt_change and parse_add_or_inc.
3351         (parse_add_or_inc): Move test to try_merge.  Improved debugging,
3352         and added code to support reg_next_inc_use.  Added more
3353         correctness tests.
3354         (rest_of_handle_auto_inc_dec): Changed df problem initialization
3355         and added code to support reg_next_inc_use.
3357 2006-07-05  Richard Sandiford  <richard@codesourcery.com>
3359         * passes.c (init_optimization_passes): Move the final RTL DSE pass
3360         after thread_prologue_and_epilogue.
3362 2006-07-01  Daniel Berlin  <dberlin@dberlin.org>
3363             David Edelsohn  <edelsohn@gnu.org>
3364             Kenneth Zadeck <zadeck@naturalbridge.com>
3366         tree-pass.h (pass_inc_dec): New pass variable.
3367         auto-inc-dec.c: New file that contains pass to find auto-inc/dec
3368         instruction combinations.
3369         flow.c: Removed unused includes for execinfo.h and stdio.h.
3370         (init_propagate_block_info): Fixed missing comma typo.
3371         (attempt_auto_inc, try_pre_increment): Added code to abort if any
3372         auto-inc/dec insns are found by this pass.
3373         df-scan.c (df_defs_record): Added flags parameter.
3374         (df_insn_refs_record): Added code to check for conditional def.
3375         (df_recompute_luids): New function.
3376         df-core.c: Fixed comment.
3377         global.c (global_alloc): Moved misplaced debugging code.
3378         (global_conflicts): Added patch to fix the way auto-incs are
3379         accounted for in conflicts graph.
3380         timevar.def (TV_AUTO_INC_DEC): New variable.
3381         recog.c: Fixed comment.
3382         function.c: Fixed comment.
3383         df.h (DF_REF_CONDITIONAL): New flag.
3384         (df_recompute_luids): New function.
3385         gcse.c (extract_mentioned_regs_helper): Added PRE/POST_MODIFY
3386         cases.
3387         common.opt (fauto-inc-dec): New flag.
3388         rtl.h (AUTO_INC_DEC): Made this symbol dependent on
3389         HAVE_(PRE/POST)_MODIFY_(REG/DISP).  Made other symbols dependent
3390         on AUTO_INC_DEC rather than components that defined AUTO_INC_DEC.
3391         df-problems.c (df_ru_bb_local_compute_process_def,
3392         df_lr_bb_local_compute, df_lr_simulate_artificial_refs_at_end,
3393         df_lr_simulate_one_insn, df_chain_create_bb,
3394         df_create_unused_note): Added DF_REF_CONDITIONAL to keep
3395         conditional defs from being added to kill sets.
3396         dce.c (dce_process_block): Ditto.
3397         Makefile.in (auto-inc-dec.c): New file.
3398         basic-block.h: Preparation to get rid of PROP_AUTO_INC flag.
3399         passes.c (init_optimization_passes): Added pass_inc_dec.
3400         config/rs6000/rs6000.c (rs6000_legitimate_address): Added code for
3401         PRE_MODIFY.
3402         (rs6000_mode_dependent_address, print_operand): Added case for pre_modify.
3403         config/rs6000/rs6000.h (HAVE_PRE_MODIFY_DISP,
3404         HAVE_PRE_MODIFY_REG): Added flags.
3405         reload1 (eliminate_regs_1, elimination_effects): Added cases for
3406         PRE/POST_MODIFY.
3410 2006-05-27  Steven Bosscher  <steven@gcc.gnu.org>
3412         * reorg.c (dbr_schedule): Fix df_ur_add_problem calls.
3414 2006-05-24  Kenneth Zadeck <zadeck@naturalbridge.com>
3416         * df-scan.c (df_scan_free_internal, df_grow_reg_info,
3417         df_reg_chain_unlink, df_ref_remove,
3418         df_insn_create_insn_record, df_insn_refs_delete,
3419         df_ref_create_structure, df_ref_record, df_mark_reg,
3420         df_record_entry_block_defs, df_record_exit_block_uses):
3421         Formatting fixes.
3422         (df_get_artificial_defs): Spelling fixes.
3423         (df_ref_record, df_def_record_1, df_uses_record):
3424         Fix the way that subregs are processed.
3425         (df_defs_record, df_def_record_1, df_insn_refs_record):
3426         Split DF_REF_CLOBBER into two cases.
3427         * df-core.c (df_analyze): Added comments
3428         (df_simple_iterative_dataflow): New function.
3429         (df_dump): Formatting fixes.
3430         * df.h (DF_REF_CLOBBER): Deleted.
3431         (DF_REF_MUST_CLOBBER, DF_REF_MAY_CLOBBER): New enums.
3432         (df_ru_bb_info, df_rd_bb_info, df_lr_bb_info, df_ur_bb_info,
3433         df_urec_bb_info): Added comments.
3434         (df_simple_iterative_dataflow): New function.
3435         * df-problems.c (df_print_bb_index, df_set_dead_notes_for_mw):
3436         Added comments.
3437         (df_ru_alloc, df_ru_local_compute, df_ru_confluence_n,
3438         df_ru_free, df_ru_dump, df_rd_alloc,
3439         df_rd_bb_local_compute_process_def, df_rd_bb_local_compute,
3440         df_rd_local_compute, df_rd_confluence_n, df_rd_free,
3441         df_rd_dump, df_lr_bb_local_compute, df_lr_bb_local_compute,
3442         df_lr_local_compute, df_ur_alloc, df_ur_dump, df_urec_alloc,
3443         df_urec_bb_local_compute, df_urec_local_compute,
3444         df_urec_local_finalize, df_urec_dump, df_chain_create_bb,
3445         df_create_unused_note,  df_ri_bb_compute): Formatting fixes.
3446         (df_ru_bb_local_compute_process_def): Do not clear gen set.
3447         (df_ru_bb_local_compute): Reorder processing insn.
3448         (df_ru_transfer_function): Fixed incorrect use of bitmaps.
3449         (df_ru_dump, df_rd_dump, df_chains_dump): Added debugging code.
3450         (df_lr_bb_local_compute, df_lr_simulate_one_insn,
3451         df_ur_bb_local_compute, df_chain_create_bb,
3452         df_create_unused_note, df_ri_bb_compute): Split
3453         DF_REF_CLOBBER into two cases.
3454         * ddg.c (add_deps_for_def): Changed to use ru info.
3455         * modulo-sched.c (sms_schedule): Added debugging.
3456         * dce.c (rs_dflow, df_problem reaching_stores_problem): Deleted.
3457         (init_rs_dflow, calculate_reaching_stores): Move dataflow to new
3458         df function.
3460 2006-05-23  Kenneth Zadeck <zadeck@naturalbridge.com>
3462         * fwprop.c (local_ref_killed_between_p): Rearranged definition.
3464 2006-05-23  Steven Bosscher  <stevenb.gcc@gmail.com>
3466         * rtlanal.c (find_occurrence): Move to fwprop.c.
3467         * rtl.h (find_occurrence): Remove prototype.
3468         * fwprop.c (can_simplify_addr): Fix check for frame based addresses.
3469         (should_replace_address): Update comment before this function.
3470         (local_ref_killed_between_p): Don't choque on NOTEs.
3471         (use_killed_between): Handle the exceptional case that a DEF does
3472         not dominate one of its uses.
3473         (varying_mem_p): Simplify return type.
3474         (all_uses_available_at): Clean up unnecessary single_set calls.
3475         (find_occurrence_callback, find_occurrence): New.
3476         (subst): Rename to try_fwprop_subst.
3477         (forward_propagate_subreg): Update caller.
3478         (forward_propagate_and_simplify): Likewise.
3479         (fwprop_init): Find loops before computing data flow info.
3480         (fwprop_done): Call cleanup_cfg without CLEANUP_PRE_LOOP.  Free
3481         loop tree before cleanup_cfg.
3483 2006-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
3485         * regclass.c (init_subregs_of_mode): Created dummy version
3486         when CANNOT_CHANGE_MODE_CLASS is undefined.
3488 2006-05-13  Steven Bosscher  <stevenb.gcc@gmail.com>
3490         * df-core.c (df_bb_regno_last_use_find): Do not look for dataflow
3491         information attached to non-INSNs such as NOTEs.
3492         (df_bb_regno_first_def_find, df_bb_regno_last_def_find): Likewise.
3494 2006-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
3496         * haifa-sched.c (glat_size): New variable.
3497         (sched-init, extend_bb): Properly initialized glat_start and
3498         glat_end.
3499         (free_glat): Fixed double free of bitmaps.
3500         * df-scan.c (df_scan_get_bb_info, df_scan_set_bb_info): Added
3501         assertions.
3502         * df-problems.c (df_ru_get_bb_info, df_ru_set_bb_info,
3503         df_rd_get_bb_info, df_rd_set_bb_info, df_lr_get_bb_info,
3504         df_lr_set_bb_info, df_ur_get_bb_info, df_ur_set_bb_info,
3505         df_urec_get_bb_info, df_urec_set_bb_info): Ditto.
3507 2006-04-25  Kenneth Zadeck <zadeck@naturalbridge.com>
3509         * flow.c (rest_of_handle_life): Removed unnecessary code.
3510         * df-scan.c (df_scan_free_internal, df_scan_free): Fixed
3511         storage leak.
3512         * df-core.c (df_delete_basic_block): Removed dangling pointer.
3513         * mode-switching.c (optimize_move_switching): Moved creation of df
3514         instance to avoid storage leak.
3515         * ifcvt.c (if_convert): Fixed storage leak.
3516         * dce.c (mark_insn,
3517         rest_of_handle_dce): Removed old way of processing libcalls.
3518         (libcall_matches_p, mark_libcall_insns): Removed.
3519         (mark_libcall): New function.
3520         (mark_reg_dependencies, dce_process_block): New code to check for
3521         libcalls.
3522         (fast_dce): Fixed storage leak.
3524 2006-04-24  Kenneth Zadeck <zadeck@naturalbridge.com>
3526         * sched-ebb.c (schedule_ebbs): Updated register lifetime info.
3527         * modulo-sched.c (sms_schedule): Ditto.
3528         * sched-reg.c (schedule_insns): Ditto.
3529         * regmove.c (regmove-optimize): Ditto.
3530         * tree.h (setjmp_vars_warning, setjmp_args_warning): Removed.
3531         (generate_setjmp_warning): Added.
3532         * tree-pass.h (pass_subregs_of_mode_init): Added.
3533         * flow.c (life_analysis): Moved parts to other passes.
3534         (regno_clobbered_at_setjmp):Moved setjmp warning to local-alloc.
3535         (rest_of_handle_life): Ditto.
3536         * df-scan.c (df_ref_record): Reformatted comment.
3537         * ifcvt.c (rest_of_handle_if_conversion): Removed last bit of
3538         rtl_df scafolding.
3539         * local-alloc.c (local_alloc, no_equiv, block_alloc): Changed to
3540         use same instance of df as global_alloc,
3541         (rest_of_handle_local_alloc): Now also produces setjmp warnings.
3542         * function.c (regno_clobbered_at_setjmp): Moved from flow.
3543         (setjmp_vars_warning, setjmp_args_warning): Added parms to use
3544         passed in df instance.
3545         (generate_setjmp_warnings): New function.
3546         * df.h (DF_RI_SETJMP): New constant.
3547         (df_ri_get_setjmp_crosses): New function.
3548         * df-problems.c (df_ri_problem_data, setjmp_crosses): New
3549         variables.
3550         (df_ri_alloc, df_ri_bb_compute, df_ri_bb_compute, df_ri_compute):
3551         Changed variables live across setjmp computation.
3552         (df_ri_get_setjmp_crosses): New function.
3553         * regclass.c (init_subregs_of_mode): Changed return.
3554         (gate_subregs_of_mode_init, pass_subregs_of_mode_init): New.
3555         * rtl.h (init_subregs_of_mode): Removed.
3556         * integrate.c (allocate_initial_values): Removed incorrect parm
3557         attribute and changed instance of df used.
3558         * output.h (regno_clobbered_at_setjmp): Removed.
3559         * stack-ptr-mod.c: Fixed comment.
3560         * Makefile.in (regclass.o): Added tree-pass.h.
3561         * basic-block.h (safe_insert_insn_on_edge): Deleted.
3562         * passes.c (init_optimization_passes): Added
3563         pass_subregs_of_mode_init.
3564         * cfgrtl.c (mark_killed_regs, safe_insert_insn_on_edge): Deleted.
3565         * rtl-profile.c: Removed.
3567 2006-04-21  Kenneth Zadeck <zadeck@naturalbridge.com>
3569         * tree-pass.h (pass_stack_ptr_mod, pass_initialize_subregs,
3570         pass_reset_df): New.
3571         * flow.c (notice_stack_pointer_modification_1,
3572         notice_stack_pointer_modification, find_regno_partial_param,
3573         find_regno_partial, initialize_uninitialized_subregs): Moved to
3574         separate passes in separate files.
3575         (life_analysis): Removed call to notice_stack_pointer_modification.
3576         (rest_of_handle_life): Removed call to initialize_uninitialized_subargs.
3577         * df-core.c (reset_df, pass_reset_df): New.
3578         * Makefile.in (stack-ptr-mod.o, subregs-init.o): New.
3579         * passes.c (pass_stack_ptr_mod, pass_initialize_subregs,
3580         pass_reset_df): New passes.
3581         * subregs-init.c: New file that contains separate pass for
3582         initialize_uninitialized_subargs.
3583         * stack-pointer-mod.c: New file that contains separate pass for
3584         notice_stack_pointer_modification.
3586 2006-04-19  Kenneth Zadeck <zadeck@naturalbridge.com>
3588         * ifcvt.c (rest_of_handle_if_after_combine): Removed flow
3589         scaffolding.
3590         * passes.c (init_optimization_passes): Moved clear_df to after
3591         combine and changed two expensive dce passes into a dse and fast
3592         dce pass.
3594 2006-04-18  Kenneth Zadeck <zadeck@naturalbridge.com>
3596         * mode-switching.c (optimize_mode_switching): Created local
3597         instance of df and removed references to flow.
3598         * regmove.c (mark_flags_life_zones, regmove_optimize): Ditto.
3599         * global.c (global_alloc, rest_of_handle_global_alloc): Reused
3600         instance of df created in local alloc.
3601         * local-alloc.c (rest_of_handle_local_alloc): Create instance of
3602         ra_df used by all register allocation.
3603         * bb-reorder.c (fix_crossing_conditional_branches): Removed code
3604         to keep dataflow up to date.
3605         * Makefile.in (bb-reorder.o): Removed ref to DF_H.
3606         * passes.c (init_optimization_passes): Meved clear_df to before
3607         partition_blocks.
3609 2006-04-17  Kenneth Zadeck <zadeck@naturalbridge.com>
3611         * tree-pass.h (pass_recompute_reg_usage): Deleted.  flow.c
3612         (pass_recompute_reg_usage, recompute_reg_usage): Deleted.  *
3613         sched-ebb.c (begin_schedule_ready, schedule_ebb,
3614         begin_schedule_ready, schedule_ebb, schedule_block): Threaded
3615         local instance of df.
3616         (schedule_ebbs): Created local instance of df.
3617         * haifa-sched.c (schedule_block, sched_init, sched_finish,
3618         generate_recovery_code, begin_speculative_block,
3619         add_to_speculative_block, init_before_recovery,
3620         create_recovery_block, create_check_block_twin, init_glat,
3621         init_glat1): Threaded local instance of df.
3622         * modulo-sched.c (sms_schedule): Ditto.
3623         (rest_of_handle_sms): Removed unnecessary update of flow info.
3624         * sched-int.h (df.h): Now includes this.
3625         (schedule_block, sched_init, sched_finish, add_block): Added df
3626         parm.
3627         * sched-rgn.c (begin_schedule_ready, schedule_region,
3628         schedule_insns): Threaded local instance of df.
3629         (schedule_insns): Removed unnecessary update of flow info.
3630         * Makefile.in (SCHED_INT_H): Added DF_H.
3631         (ddg.o, modulo-sched.o, haifa-sched.o, sched-deps.o, sched-rgn.o,
3632         sched-ebb.o): Removed DF_H.
3633         * ddg.c (build_inter_loop_deps): Swapped parms.
3634         (create_ddg): Swapped parms for call.
3635         * passes.c (init_optimization_passes): Removed dce and
3636         recompute_reg_use pass and moved clear_df to before first
3637         schedulers.
3639 2006-04-16  Kenneth Zadeck <zadeck@naturalbridge.com>
3641         * df.h (shared_df): Removed.
3642         (ra_df): New.
3643         * core.c (shared_df): Removed.
3644         (ra_df): New.
3645         * postreload.c (reload_combine): Changed to use ra_df.
3646         * reload.c (push_reload, find_dummy_reload): Ditto.
3647         * global.c (global_alloc, global_conflicts, mark_elimination,
3648         build_insn_chain, rest_of_handle_global_alloc): Ditto.
3649         * reload1.c (compute_use_by_pseudos, reload): Ditto.
3650         * local-alloc.c (local_alloc, block_alloc): Created local instance
3651         of df.
3652         * passes.c (init_optimization_passes): Moved clear_df to before
3653         register allocators.
3654         * tree-pass.h (pass_partition_blocks): Removed redundant
3655         copy.
3657 2006-04-16  Kenneth Zadeck <zadeck@naturalbridge.com>
3659         * tree-pass.h (pass_reset_df_after_reload): Removed.
3660         * df-core.c (reset_df_after_reload, pass_reset_df_after_reload):
3661         Removed.
3662         * function.c (prologue_epilogue_df): New global.
3663         (rtx keep_stack_depressed, thread_prologue_and_epilogue_insns):
3664         Unthreaded local version of df and replaced with
3665         prologue_epilogue_df.
3666         * rtl.h (prologue_epilogue_df): New.
3667         * passes.c (init_optimization_passes): Removed all uses of flow
3668         after register allocation.
3669         * config/i386/i386.c (ix86_eax_live_at_start_p): Replaced use of
3670         flow with prologue_epilogue_df.
3672 2006-04-15  Kenneth Zadeck <zadeck@naturalbridge.com>
3674         * tree-pass.h (pass_flow2): Renamed to
3675         pass_thread_prologue_and_epilogue.
3676         * passes.c (pass_flow2): Ditto.
3677         * final.c (rest_of_clean_state): Removed flow2_completed.
3678         * config/i386/i386.md: Ditto.
3679         * config/sh/sh.md: Ditto.
3680         * config/mips/mips.md: Ditto.
3681         * config/h8300/h8300.md: Ditto.
3682         * flow.c: Ditto.
3683         (rest_of_handle_flow2): Moved to function.c as
3684         rest_of_handle_thread_prologue_and_epilogue.
3685         * timevar.def (TV_FLOW2): Renamed to
3686         TV_THREAD_PROLOGUE_AND_EPILOGUE.
3687         * function.c (keep_stack_depressed): Added df parameter.
3688         (thread_prologue_and_epilogue_insns): Made local function and
3689         removed unused parameter.  Added local instance of df.
3690         (rest_of_handle_thread_prologue_and_epilogue): New function
3691         renamed from flow.c.
3692         (pass_thread_prologue_and_epilogue): New pass.
3693         * rtl.h (flow2_completed, thread_prologue_and_epilogue_insns):
3694         Removed.
3695         * df-problems.c (df_ru_get_bb_info, df_rd_get_bb_info,
3696         df_lr_get_bb_info, df_ur_get_bb_info, df_urec_get_bb_info): Added
3697         check.
3698         * Makefile.in (function.o): Added timevar.h.
3700 2006-04-13  Kenneth Zadeck <zadeck@naturalbridge.com>
3702         * rtl-factoring (collect_pattern_seqs, clear_regs_live_in_seq,
3703         recompute_gain_for_pattern_seq, clear_regs_live_in_seq,
3704         recompute_gain, split_blocks_after_seqs, split_pattern_seq,
3705         erase_matching_seqs, abstract_best_seq, rtl_seqabstr): Threaded
3706         local instance of df to replace all references to flow.
3707         (gate_rtl_seqabstr): Removed unnecessary calls.
3708         * passes.c (init_optimization_passes): Moved clear_df before
3709         rtl_seqabstr.  Removed some expensive calls to dce.
3710         * tree-pass.h (pass_fast_rtl_dce): New.
3711         * regrename.c (gate_handle_regrename): Update call to pass.
3712         * sched-rgn.c (rest_of_handle_sched2): Remove outdated calls.
3714 2006-04-13  Kenneth Zadeck <zadeck@naturalbridge.com>
3716         * regmove.c (rest_of_handle_stack_adjustments): Removed all
3717         references to flow.c and replaced with df.
3718         * passes.c (init_optimization_passes): Moved clear_df before
3719         pass_stack_adjustments.
3721 2006-04-12  Kenneth Zadeck <zadeck@naturalbridge.com>
3723         * recog.c (delete_insn_chain_and_dflow): New function.
3724         (peephole2_optimize): Replaced all flow references with df.  Added
3725         local instance of df.
3726         * passes.c (init_optimization_passes): Moved clear_df before peephole2.
3728 2006-04-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3730         * ifcvt.c (cond_exec_process_if_block, merge_if_block,
3731         noce_process_if_block, cond_move_process_if_block,
3732         process_if_block, find_if_header, find_cond_trap, find_if_case_1,
3733         find_if_case_2, dead_or_predicable): Threaded local copy of df
3734         thru the call stack.
3735         (merge_if_block, find_cond_trap, find_if_case_1, find_if_case_2,
3736         dead_or_predicable): Added code to update df in place.
3737         (if_convert): Removed parameter concerned with correct dataflow
3738         info, it now always is. Created instance of df.  Removed code to
3739         update old flow info.
3740         (rest_of_handle_if_after_reload): Removed unnecessary calls to
3741         cleanup_cfg.
3742         * passes.c (init_optimization_passes): Moved clear_df to before
3743         last ifconvert.  Renamed pass_cprop to pass_cprop_hardreg.
3744         * regrename.c (rest_of_handle_cprop): Renamed pass_cprop to
3745         pass_cprop_hardreg.
3746         * tree-pass.h: Renamed cprop to cprop_hardreg.
3748 2006-04-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3750         * sched-ebb.c (schedule_ebbs): Removed code to update dataflow
3751         after scheduling and removed unused parm from
3752         reposition_prologue_and_epilogue_notes.
3753         * sched-rgn.c (schedule_insns): Ditto.
3754         (rest_of_handle_sched): Added temp hack to rebuild flow based dataflow
3755         until flow is permanently removed.
3756         * haifa-sched.c (init_glat): Modified to create glat from df info.
3757         (attach_life_info, attach_life_info1, check_reg_live): Removed.
3758         (free_glat): Now cleans up df.
3759         * modulo-sched.c (compute_jump_reg_dependencies): Removed df parm.
3760         * ifcvt.c (rest_of_handle_if_conversion): Added code to clean up
3761         flow based reg_deaths after first call to ifconvert.
3762         * function.c (reposition_prologue_and_epilogue_notes): Removed
3763         unused parm.
3764         * rtl.h (reposition_prologue_and_epilogue_notes): Ditto.
3765         * sched-int.h (check_reg_live): Removed.
3767 2006-04-10  Kenneth Zadeck <zadeck@naturalbridge.com>
3769         * df-core.c (reset_df_after_reload, clear_df): Added return to
3770         make compatible with pass manager.
3771         * dce.c (rest_of_handle_dce, rest_of_handle_fast_dce,
3772         rest_of_handle_dse): Ditto.
3774 2006-04-09 Kenneth Zadeck <zadeck@naturalbridge.com>
3776         * regrename.c (merge_overlapping_regs, regrename_optimize):
3777         Threaded private instance of df.
3778         (regrename_optimize): Created private instance of df, removed
3779         all references or flow.
3780         (copyprop_hardreg_forward): Removed all references to flow.
3781         (gate_handle_regrename): Split reg rename and cprop into separate
3782         passes.
3783         (gate_handle_cprop): New function.
3784         (pass_cprop): New pass structure.
3785         * tree-pass.h (pass_cprop): New pass structure.
3786         * passes.c (init_optimization_passes): Added cprop pass and
3787         moved clear_df pass closer to beginning.
3789 2006-04-08  Kenneth Zadeck <zadeck@naturalbridge.com>
3791         * tree-pass.h (pass_split_after_reload, pass_branch_target_load_optimize1
3792         pass_branch_target_load_optimize2): Added.
3793         (pass_branch_target_load_optimize): Deleted.
3794         * flow.c (rest_of_handle_flow2): Split the calls to split_all_insns and
3795         branch_target_load_optimize into their own passes.
3796         * passes.c (init_optimization_passes): Ditto.
3797         (init_optimization_passes): Moved clear_df pass to before
3798         second branch_target_load_optimize pass.
3799         * bt-load (compute_defs_uses_and_gen, build_btr_def_use_webs,
3800         migrate_btr_defs): Threaded private copy of df into these functions.
3801         (branch_target_load_optimize): Made private and add local
3802         instance of df.  Removed all references to flow.
3803         (rest_of_handle_branch_target_load_optimize1): New function.
3804         (rest_of_handle_branch_target_load_optimize): Renamed to
3805         rest_of_handle_branch_target_load_optimize2.
3806         rtl.h (branch_target_load_optimize): Removed.
3808 2006-04-08  Kenneth Zadeck <zadeck@naturalbridge.com>
3810         * sched-ebb.c (init_ready_list, can_schedule_ready_p, new_ready,
3811         compute_jump_reg_dependencies, schedule_ebb, sched_analyze,
3812         schedule_block): Changed to pass instance of df.
3813         (compute_jump_reg_dependencies): Changed to use local instance
3814         of dataflow.
3815         * ddg.c (build_intra_loop_deps, sched_analyze,
3816         build_intra_loop_deps): Changed to pass instance of df.
3817         * ddg.h: added forward reference to struct df.
3818         * haifa-sched.c (schedule_insns, schedule_insn,
3819         schedule_block): Changed to pass instance of df.
3820         * modulo-sched (compute_jump_reg_dependencies): Ditto.
3821         (sms_schedule): Added call to do dce when stated.
3822         * sched-deps.c (sched_analyze_insn, sched_analyze):
3823         Changed to pass instance of df.
3824         * rtl.h (schedule_insns, schedule_ebbs): Ditto.
3825         * sched-int.h (init_ready_list, can_schedule_ready_p, new_ready,
3826         compute_jump_reg_dependencies, sched_analyze, schedule_block):
3827         Ditto.
3828         * sched-rgn.c (check_live_1, update_live_1, check_live,
3829         update_live, init_ready_list, can_schedule_ready_p, new_ready,
3830         compute_jump_reg_dependencies, compute_block_backward_dependences,
3831         schedule_region, schedule_insns): Ditto.
3832         (schedule_insns): Removed call to update_life_info when finished.
3833         (rest_of_handle_sched, rest_of_handle_sched2): Creates local
3834         instance of df.
3835         * passes.c (init_optimization_passes): moved clear_df pass
3836         earlier.
3837         * Makefile.in (df-core.o): Added except.h and dce.h
3838         (modulo-sched.o): Added DF_H.
3839         * recog.c (split_all_insns): Removed old code that was used to
3840         update dataflow.
3841         * reg-stack.c (rest_of_handle_stack_regs): Removed ifdefed out code.
3843 2006-04-07  Kenneth Zadeck <zadeck@naturalbridge.com>
3845         * recog.c (split_all_insns): Removed parameter and code to
3846         update dataflow.
3847         * sched-rgn.c (rest_of_handle_sched2): Removed parm to
3848         split_all_insns.
3849         * flow.c (rest_of_handle_flow2): Ditto.
3850         (rest_of_handle_split_all_insns): Added call to update old
3851         dataflow after this pass.
3852         (rest_of_handle_split_after_reload,
3853         rest_of_handle_split_before_regstack): New function.
3854         (pass_split_after_reload): New structure.
3855         * rtl.h (split_all_insns): Removed param.
3856         * bb-reorder.c (rest_of_handle_reorder_blocks): Removed
3857         references to flow.
3858         * reg-stack.c (subst_stack_regs_pat): Removed unnecessary
3859         assertion.
3861 2006-04-07  Daniel Berlin  <dberlin@dberlin.org>
3862             Kenneth Zadeck <zadeck@naturalbridge.com>
3864         * regoc.c (dbr_schedule): Added parm to call to df_lr_add_problem.
3865         * ifcvt.c (if_convert): Ditto.
3866         * modulo-sched.c (sms_schedule): Ditto.
3867         * reg-stack.c (reg_to_stack): Ditto.
3868         * global.c (global_alloc, rest_of_handle_global_alloc): Ditto.
3869         (rest_of_handle_global_alloc): Removed call to df_set_state.
3870         * basic_block.h (clear_reg_deaths): New function.
3871         * flow.c: (clear_reg_deaths): New function.
3872         (rest_of_handle_life): Added parm to call to df_lr_add_problem and
3873         df_ur_add_problem.
3874         * df-scan.c (df_scan_free_internal): Added code to clear new
3875         bit vectors.
3876         (df_scan_alloc): Added extra parameter and code to initialize
3877         new bit vectors.
3878         (df_scan_dump): Added code to dump new bit vectors.
3879         (df_problem problem_SCAN): Added extra field.
3880         (df_scan_add_problem): Added flags parameter.
3881         (df_rescan_blocks): Added code to remove deleted blocks from
3882         bitmap and extra parm to call to df_scan_alloc.
3883         (df_insn_create_insn_record): Removed return value.
3884         (df_set_state): Removed function.
3885         (df_ref_record, df_bb_refs_record, df_record_entry_block_defs,
3886         df_record_exit_block_uses): Changed the way flags are processed.
3887         (df_bb_refs_record, df_refs_record, df_record_exit_block_uses):
3888         Restructured scanning to fixed hard regs so bitmaps could be
3889         recorded for later use.
3890         (df_has_eh_preds): Now public.
3891         * df-core.c (df_mvs_dump, df_set_flags, df_clear_flags,
3892         df_delete_basic_block): New function.
3893         (df_init): Changed location of flags.
3894         (df_add_problem): Added flags parameter and the way flags are
3895         processed.
3896         (df_insn_uid_debug, df_ref_debug, debug_df_defno, debug_df_ref,
3897         debug_df_chain): Improved debugging output.
3898         (clear_df): Added call to clear_reg_deaths.
3899         * df.h: Some reordering to remove forward references.
3900         (dataflow.flags): New field.
3901         (df.flag): Deleted field.
3902         (df_alloc_function): Added additional bitmap parameter.
3903         (df_dependent_problem_function): New type.
3904         (df_problem.changeable_flags): New field.
3905         (df_ref_flags.DF_SCAN_INITIAL,
3906         DF_SCAN_GLOBAL, DF_SCAN_POST_ALLOC, df_state): Removed.
3907         (df_refs_chain_dump, df_ref_debug, df_chain_dump): Removed df
3908         parameter.
3909         (df_add_problem, df_ru_add_problem, df_rd_add_problem,
3910         df_lr_add_problem, df_ur_add_problem, df_urec_add_problem,
3911         df_ri_add_problem, df_scan_add_problem): Added flags parameter.
3912         (df_set_state): Removed function.
3913         (df_set_flags, df_clear_flags, df_delete_basic_block, df_has_eh_preds) New functions.
3914         * df-problems.c (df_get_dependent_problem): Deleted function.
3915         (df_ru_alloc, df_rd_alloc, df_lr_alloc, df_ur_alloc,
3916         df_urec_alloc, df_chain_alloc, df_ri_alloc): Added all blocks
3917         parameter.
3918         (df_ru_alloc, df_rd_alloc): Now resets all blocks.
3919         (df_ru_dump, df_rd_dump, df_lr_dump, df_ur_dump, df_urec_dump,
3920         df_chains_dump): Fixed crash if problem was never run.
3921         (df_ru_add_problem, df_rd_add_problem, df_lr_add_problem,
3922         df_ur_add_problem, df_urec_add_problem, df_chain_add_problem,
3923         df_ri_add_problem): Processes flags in uniform manner.
3924         (df_lr_bb_local_compute): Fixed case to account for return value
3925         correctly.
3926         (df_lr_bb_local_compute): Changed processing of exit block.
3927         (df_lr_transfer_function): Added hook to call dce.
3928         (df_lr_free): Added lr problem data.
3929         (df_set_notes_for_mw, df_reg_lifetime): Removed function.
3930         (df_lr_simulate_artificial_refs_at_end, df_lr_simulate_one_insn,
3931         df_kill_notes, df_set_unused_notes_for_mw, df_set_dead_notes_for_mw):
3932         New function.
3933         (df_ri_alloc, df_ri_bb_compute, df_create_unused_note,
3934         df_ri_bb_compute, df_ri_compute, df_ri_free, df_ri_add_problem):
3935         Added functionality to compute register information.
3936         dce.c (deletable_insn_p): Cannot delete PREFETCHes.
3937         (delete_unmarked_insns): Also delete noop moves as well as support for
3938         calling dce from df.
3939         (prescan_insns_for_dce, rest_of_handle_dce, end_fast_dce,
3940         dce_process_block, rest_of_handle_fast_dce,
3941         rest_of_handle_dse): Restructured to handle being directly called from
3942         df.
3945 2006-03-14  Kenneth Zadeck <zadeck@naturalbridge.com>
3947         * tree-pass.h: Added pass to clear other dataflow infomation out.
3948         * final.c (rest_of_handle_final, rest_of_clean_state): Cleared out
3949         references to df.
3950         (rest_of_clean_state) Added regstack_completed.
3951         * reorg.c (fill_simple_delay_slots, fill_slots_from_thread,
3952         fill_eager_delay_slots, make_return_insns): Added df parameter to function.
3953         (make_return_insns, dbr_schedule) Added df parameter to calls.
3954         * flow.c (update_life_info): Added glue code to df calls.
3955         * df-scan.c (df_scan_free_internal, df_insn_refs_delete, df_ref_record): Added
3956         code to properly handle multiword hard registers.
3957         (df_ref_create_structure, df_ref_record): Added code to properly handle subregs.
3958         (df_ref_create_structure): Changed switching structure.
3959         (df_bb_refs_record): Fixed case where duplicate artificial refs
3960         were created.
3961         (df_record_entry_block_defs): Added code to make stack pointer
3962         live in entry block.  Refined cases where frame pointer is needed.
3963         * df-core.c (df_mvs_dump, clear_df): New function.
3964         (pass_clear_df): New pass structure.
3965         (df_insn_uid_debug, df_ref_debug, debug_df_defno, debug_df_ref,
3966         debug_df_chain): Improved debugging output.
3967         * df.h: Some reordering to remove forward reference.
3968         (df_ref_flags.DF_REF_MW_HARDREG, DF_REF_PARTIAL): New fields.
3969         (df_ref_flags.DF_REF_DIES_AFTER_THIS_USE): Removed.
3970         (df_mw_hardreg): New struct.
3971         (DF_INSN_UID_MWS): New macro.
3972         (df_refs_chain_dump, df_ref_debug, df_chain_dump): Removed df
3973         parameter.
3974         * rtl.h (regstack_completed): New global var.
3975         * resource.c (mark_target_live_regs): Added passed in instance of
3976         df.
3977         * resource.h (mark_target_live_regs): Ditto.
3978         * df-problems.c (df_chain_dump): Removed df parameter.
3979         (df_ru_bb_local_compute_process_def,
3980         df_rd_bb_local_compute_process_def, df_lr_bb_local_compute,
3981         df_lr_bb_local_compute, df_chain_create_bb): Made subreg aware.
3982         (df_ru_bb_local_compute, df_rd_bb_local_compute,
3983         df_lr_bb_local_compute, df_lr_bb_local_compute,
3984         df_chain_create_bb): Cleanup to use proper macros.
3985         (df_ur_local_finalize, df_ur_local_finalize): Removed unnecessary
3986         code to fixup bitvectors.
3987         (df_ri_alloc): Cleared lifetime.
3988         (df_ignore_stack_reg, df_kill_notes, df_set_notes_for_mw,
3989         df_create_unused_note): New function.
3990         (df_ri_bb_compute, df_ri_compute): Added code to create/update
3991         REG_DEAD and REG_UNUSED notes.
3992         * reg-stack.c (regstack_completed): New variable.
3993         (reg_to_stack): Modified to use it's own instance of df.
3994         (rest_of_handle_stack_regs): Removed most cleanup code.
3995         * Makefile.in (reorg.o, RESOURCE_H): Added dependancy to df.h.
3996         (final.o): Removed dependency to df.h
3997         * passes.c (pass_magic_life): Removed.
3998         (pass_clear_df): Added.
3999         * dce.c (prescan_insns_for_dce, end_fast_dce): Now works if no instance of
4000         df is available.
4001         (dce_process_block): Made subreg aware.
4002         (rest_of_handle_fast_dce): Reset bitvectors when iterating.
4003         (prescan_insns_for_dse): Removed useless code.
4005 2006-02-06  Daniel Berlin  <dberlin@dberlin.org>
4007         * doc/rtl.texi: Document REG_LIBCALL_ID.
4008         * optabs.c (libcall_id): New variable.
4009         (emit_no_conflict_block): Use it to emit
4010         REG_LIBCALL_ID.
4011         (emit_libcall_block): Ditto.
4012         * combine.c (distribute_notes): Deal with
4013         REG_LIBCALL_ID.
4014         * reg-notes.def (LIBCALL_ID): New note.
4015         * dce.c (marked_libcalls): New variable.
4016         (in_libcall): Removed.
4017         (mark_insn): Mark which libcalls we need to fully mark.
4018         (mark_libcall_insns): New function.
4019         (end_dce): Free marked_libcalls.
4020         (init_dce): Allocate marked_libcalls.
4021         Call mark_libcall_insns.
4023 2006-01-17  Kenneth Zadeck <zadeck@naturalbridge.com>
4024         * df-core.c (df_iterative_dataflow): Added debugging assert.
4025         (df_insn_uid_debug): New debugging function.
4026         (df_insn_debug): Changed to used df_insn_uid_debug.
4027         (df_analyze_problem): Made public.
4028         * df.h (df_analyze_problem): Ditto.
4029         * cfgcleanup.c (cleanup_cfg): Now calls run_fsst_dce.
4030         * flow.c (update_life_info): Ditto.
4031         * dce.c (init_dce, mark_insn,
4032         mark_nonreg_stores, prescan_insns_for_dce): Added parameter so
4033         that they could be called from both handle_rest_of_dce and
4034         handle_rest_of_fast_dce.
4035         (marked_insn_p): Added code to be tolerant of artifical defs,
4036         which do not have insns.
4037         (mark_nonreg_stores_2): New function.
4038         (mark_artificial_uses, mark_reg_dependencies, store_base_local,
4039         mark_escaping_stores, mark_dependent_stores,
4040         prescan_insns_for_dse): Added parameter to mark_insn.
4041         (rest_of_handle_dce): Added parameter to prescan_insns_for_dce.
4042         (record_stores): Added parameter to mark_non_reg_stores.
4043         (dce_process_block, rest_of_handle_fast_dce, gate_fast_dce,
4044         run_fast_dce): New functions to do dce faster.
4045         (rest_of_handle_dse) Added parameter to init_dce.
4046         * dce.h (run_fast_dce): Added declaration.
4048 2006-01-17  Kenneth Zadeck <zadeck@naturalbridge.com>
4050         * df-scan.c (df_hard_reg_init): Moved declaration of i outside macro.
4052 2006-01-17  Ian Lance Taylor <ian@airs.com>
4054         * combine.c (combine_instructions): Pass instruction
4055         to note_stores and set_nonzero_bits_and_sign_copies.
4056         (set_nonzero_bits_and_sign_copies): We can't assume
4057         anything about non-zero bits for registers initialized with
4058         themselves if the register is not live on entry to the block.
4061 2005-01-17  Kenneth Zadeck <zadeck@naturalbridge.com>
4063         PR dataflow/25799
4064         * df-problems.c (df_ru_confluence_n, df_rd_confluence_n):
4065         Corrected confluence operator to remove bits from op2 before oring
4066         with op1 rather than removing bits from op1.
4067         * (df_ru_transfer_function): Corrected test on wrong bitmap which
4068         caused infinite loop.
4071 2005-01-17  Kenneth Zadeck <zadeck@naturalbridge.com>
4073         * df-scan.c (df_scan_free_bb_info): Added basic block parameter to
4074         be able to clean out basic block when not necessary.
4075         (df_scan_free): Fixed to properly delete information if df is
4076         unused before calling df_finish.
4077         (df_scan_alloc, df_rescan_blocks, df_reg_chain_unlink,
4078         df_insn_create_insn_record, df_bb_refs_record): Fixed formatting
4079         or comment typos.
4080         (df_bb_refs_delete): New function.
4081         (df_refs_delete): Moved per block code to df_bb_refs_delete.
4082         * df-core.c (df_set_blocks): Added code to properly clean out
4083         unused blocks if they are not part of the blocks to consider.
4084         (df_compact_blocks): Added basic block parameter to free_bb_fun to
4085         be able to clean out basic block when not necessary
4086         * df.h (df_free_bb_function): Ditto.
4087         (df_bb_refs_delete): New function.
4088         * df-problems.c (df_ru_free_bb_info, df_rd_set_bb_info,
4089         df_lr_set_bb_info, df_ur_free_bb_info, df_urec_free_bb_info):Added
4090         basic block parameter to be able to clean out basic block when not
4091         necessary.
4092         (df_ru_alloc, df_rd_alloc): Fixed dyslexic overflow test.
4093         (df_ru_free, df_rd_free, df_lr_free, df_ur_free, df_urec_free):
4094         Fixed to properly delete information if df is unused before
4095         calling df_finish.
4097 2006-01-06  Daniel Berlin  <dberlin@dberlin.org>
4098             Kenneth Zadeck <zadeck@naturalbridge.com>
4100         * df-scan.c (df_reg_use_gen, df_reg_def_gen): Removed.
4101         (df_insn_contains_asm_1): New function.
4102         (df_insn_contains_asm): Rewritten to use for_each_rtx.
4103         (df_insn_refs_record): Fixed call to df_insn_contains_asm and
4104         the way calls are processed.
4105         (df_insn_refs_record, df_bb_refs_record): Changed calls to not
4106         need df_reg_use_gen or df_reg_def_gen.
4107         * loop-invariant.c (free_inv_motion_data): Removed duplicated code typo.
4109 2005-12-30  Kenneth Zadeck <zadeck@naturalbridge.com>
4111         * df-core.c (df_find_def, df_find_use):  Added subreg aware code.
4112         (df_reg_defined, df_reg_used): New function.
4113         * df.h (df_reg_defined, df_reg_used): New function.
4114         * loop-invariant.c (struct invariant, hash_invariant_expr,
4115         eq_invariant_expr, find_or_insert_inv, find_or_insert_inv,
4116         find_identical_invariants, merge_identical_invariants,
4117         find_defs, create_new_invariant, check_dependencies,
4118         find_invariant_insn, find_invariants, get_inv_cost,
4119         best_gain_for_invariant, set_move_mark, move_invariants,
4120         free_inv_motion_data): Functions added from mainline patch.
4121         (invariant_for_use, hash_invariant_expr_1, invariant_expr_equal_p,
4122         check_dependencies, create_new_invariant, find_invariant_insn
4123         move_invariant_reg): Functions modified from mainline patch to be
4124         consistent with latest df.
4126 2005-12-22  Paolo Bonzini  <bonzini@gnu.org>
4128         * df-scan.c (df_ref_unlink): Fix thinko when REF == CHAIN.
4130 2005-12-22  Danny Berlin <dberlin@dberlin.org>
4131             Richard Sandiford  <richard@codesourcery.com>
4132             Kenneth Zadeck <zadeck@naturalbridge.com>
4134         * tree-pass.h: Added passes for new dce and dse.
4135         * flow.c (update_life_info, propagate_block): Added hooks to
4136         call new dead code elimination.
4137         * common.opt (flag_flow_dce, flag_new_dce): Ditto.
4138         * passes.c (init_optimization_passes): Ditto.
4139         * cfgcleanup.c (cleanup_cfg): Ditto.
4140         * timevar.def: New time vars for dce and dse.
4141         (propagate_block_delete_insn): Added debugging.
4142         * dce.c: New File containing dead code elimination and dead
4143         store elimination based on df.
4145 2005-12-19  Kenneth Zadeck <zadeck@naturalbridge.com>
4147         * flow.c (update_life_info, count_or_remove_death_notes): Fixed
4148         latent bug that could happen if update_life_info was called with a
4149         blocks parameter and the call to cleanup_cfg actually deleted one
4150         of those blocks.
4151         * loop-invariant.c (move_loop_invariants): Fixed df
4152         initialization.
4153         * struct-equiv.c (struct_equiv_init): Made dataflow compatible with
4154         df.
4157 2005-12-18  Daniel Berlin  <dberlin@dberlin.org>
4158             Kenneth Zadeck <zadeck@naturalbridge.com>
4160         * fwprop.c (local_ref_killed_between_p): New Function.
4161         (use_killed_between, varying_mem_p, all_uses_available_at,
4162         update_df, subst, forward_propagate_subreg,
4163         forward_propagate_and_simplify, forward_propagate_into, fwprop,
4164         fwprop_addr): Changes to support modifications to df datastructures.
4165         * ddg.c (add_deps_for_def, add_deps_for_use, build_inter_loop_deps):
4166         Ditto.
4167         * flow.c (verify_local_live_at_start, update_life_info,
4168         update_life_info, initialize_uninitialized_subregs,
4169         propagate_one_insn, init_propagate_block_info,
4170         init_propagate_block_info, regno_clobbered_at_setjmp,
4171         rest_of_handle_life): Ditto.
4172         * modulo-sched.c (sms_schedule): Ditto.
4173         * web.c (union_defs, entry_register, web_main): Ditto.
4174         * global.c (global_alloc, global_conflicts, mark_elimination,
4175         build_insn_chain, rest_of_handle_global_alloc): Ditto.
4176         * ifcvt.c (find_if_case_1, if_convert): Ditto.
4177         * loop_invariant.c (find_defs, record_use, find_invariant_insn,
4178         find_invariants_to_move, move_invariant_reg, move_invariant_reg,
4179         free_inv_motion_data, move_loop_invariants):
4180         * bb-reorder.c (rest_of_handle_reorder_blocks): Ditto.
4181         * reg-stack.c (reg_to_stack): Ditto.
4182         * postreload.c (reload_combine): Changed set reference to
4183         reflect different dataflow problem.
4184         * reload.c (push_reload, find_dummy_reload): Ditto.
4185         * postreload.c (rest_of_handle_postreload): Fixed typo in comment.
4186         * tree-pass.h: Added pass_reset_df_after_reload.
4187         * df.c: Removed, rewritten as df-core.c, df-problems.c and df-scan.c.
4188         * df-scan.c: The scanning fuctions, once in df.c, completely
4189         rewritten so that they now fully model the functionality of
4190         register usage at the backend.
4191         * cfgrtl.c (dump_regset_in, dump_regset_out): New dataflow
4192         * print functions.
4193         (rtl_dump_bb, print_rtl_with_bb): Changed to use
4194         dump_regset_in, dump_regset_out).
4195         * sched_deps (sched_analyze_1): Changed to used renamed
4196         df_read_modify_subreg_p (was read_modify_subreg_p).
4197         (df_scan_free_internal, df_scan_get_bb_info,
4198         df_scan_set_bb_info, df_scan_free_bb_info, df_scan_alloc,
4199         df_scan_free, df_scan_dump, df_scan_add_problem,
4200         df_grow_reg_info, df_grow_ref_info, df_grow_insn_info,
4201         df_rescan_blocks, df_ref_create, df_get_artificial_defs,
4202         df_get_artificial_uses, df_reg_chain_create, df_ref_unlink,
4203         df_reg_chain_unlink, df_ref_remove,
4204         df_insn_create_insn_record, df_insn_refs_delete,
4205         df_refs_delete, df_reorganize_refs, df_reg_use_gen,
4206         df_reg_def_gen, df_set_state, df_ref_create_structure,
4207         df_ref_record, df_read_modify_subreg_p, df_def_record_1,
4208         df_defs_record, df_uses_record, df_insn_contains_asm,
4209         df_insn_refs_record, df_bb_refs_record, df_refs_record,
4210         df_mark_reg, df_record_exit_block_uses, df_hard_reg_init): New functions.
4211         * df-core.c: The core dataflow solver and glue routines for
4212         rtl dataflow.
4213         (df_init, df_add_problem, df_set_blocks, df_finish,
4214         df_hybrid_search_forward, df_hybrid_search_backward,
4215         df_iterative_dataflow, df_prune_to_subcfg,
4216         df_analyze_problem, df_analyze, df_get_bb_info,
4217         df_set_bb_info, df_analyze_simple_change_some_blocks,
4218         df_analyze_simple_change_one_block, df_compact_blocks,
4219         df_bb_replace, df_bb_regno_last_use_find,
4220         df_bb_regno_first_def_find, df_bb_regno_last_def_find,
4221         df_insn_regno_def_p, df_find_def, df_find_use, df_dump,
4222         df_refs_chain_dump, df_regs_chain_dump, df_insn_debug,
4223         df_insn_debug_regno, df_regno_debug, df_ref_debug,
4224         debug_df_insn, debug_df_reg, debug_df_regno, debug_df_ref
4225         debug_df_defno, debug_df_useno, reset_df_after_reload): New functions.
4226         * df-problems.c: Seven concrete dataflow problems that use the scanning
4227         in df-scan.c and are solved by the engine in df-core.c.
4228         (df_get_dependent_problem, df_chain_create,
4229         df_chain_unlink, df_chain_copy, df_get_live_in,
4230         df_get_live_out, df_grow_bb_info, df_chain_dump,
4231         df_print_bb_index, df_ref_bitmap, df_set_seen,
4232         df_unset_seen, df_ru_get_bb_info, df_ru_set_bb_info,
4233         df_ru_free_bb_info, df_ru_alloc,
4234         df_ru_bb_local_compute_process_def,
4235         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
4236         df_ru_local_compute, df_ru_init_solution,
4237         df_ru_confluence_n, df_ru_transfer_function, df_ru_free,
4238         df_ru_dump, df_ru_add_problem, df_rd_get_bb_info,
4239         df_rd_set_bb_info, df_rd_free_bb_info, df_rd_alloc,
4240         df_rd_bb_local_compute_process_def, df_rd_bb_local_compute,
4241         df_rd_local_compute, df_rd_init_solution,
4242         df_rd_confluence_n, df_rd_transfer_function, df_rd_free,
4243         df_rd_dump, df_rd_add_problem, df_lr_get_bb_info,
4244         df_lr_set_bb_info, df_lr_free_bb_info, df_lr_alloc,
4245         df_lr_bb_local_compute, df_lr_local_compute, df_lr_init,
4246         df_lr_confluence_0, df_lr_confluence_n,
4247         df_lr_transfer_function, df_lr_free, df_lr_dump,
4248         df_lr_add_problem, df_ur_get_bb_info, df_ur_set_bb_info,
4249         df_ur_free_bb_info, df_ur_alloc, df_ur_bb_local_compute,
4250         df_ur_local_compute, df_ur_init, df_ur_local_finalize,
4251         df_ur_confluence_n, df_ur_transfer_function, df_ur_free,
4252         df_ur_dump, df_ur_add_problem, df_urec_get_bb_info,
4253         df_urec_set_bb_info, df_urec_free_bb_info, df_urec_alloc,
4254         df_urec_mark_reg_change, df_urec_check_earlyclobber,
4255         df_urec_mark_reg_use_for_earlyclobber,
4256         df_urec_mark_reg_use_for_earlyclobber_1,
4257         df_urec_bb_local_compute, df_urec_local_compute,
4258         df_urec_init, df_urec_local_finalize, df_urec_confluence_n,
4259         df_urec_transfer_function, df_urec_free, df_urec_dump,
4260         df_urec_add_problem, df_chain_alloc,
4261         df_chain_create_bb_process_use, df_chain_create_bb,
4262         df_chain_finalize, df_chain_free, df_chains_dump,
4263         df_chain_add_problem, df_ri_alloc, df_ri_bb_compute,
4264         df_ri_compute, df_ri_free, df_ri_dump, df_ri_add_problem,
4265         df_reg_lifetime) New functions.
4266         df.h: Complete rewrite to support new df-problems.c, df-scan.c and
4267         df-core.c.
4269 2005-12-14  Kenneth Zadeck <zadeck@naturalbridge.com>
4271         * bitmap.c (bitmap_clear_range): Removed extra debugging.
4273 2005-12-12  Paolo Bonzini  <bonzini@gnu.org>
4275         * rtl.h (find_occurrence): Declare.
4276         * rtlanal.c (find_occurrence): New.
4277         (loc_mentioned_in_p): Accept a NULL value for IN.
4278         (commutative_operand_precedence): Remove useless code looking
4279         for constant RTX_EXTRA rtxen.
4280         * common.opt (-fforward-propagate): New.
4281         * tree-pass.h: Add forward propagation passes.
4282         * passes.c: Ditto.
4283         * timevar.def: Add forward propagation timevar.
4284         * fwprop.c: New file.
4285         * Makefile.in: Add fwprop.o dependencies.
4287 2005-11-28  Paolo Bonzini  <bonzini@gnu.org>
4289         * config/sh/sh.c (sh_output_mi_thunk): Use df_finish.
4291 2005-11-17  Paolo Bonzini  <bonzini@gnu.org>
4293         * df.h (struct df_reach): Add size field.
4294         * df.c (df_realloc_reach_bitmaps, df_renumber_refs): New.
4295         (df_reg_use_chain_create, df_reg_def_chain_create): Use them.
4296         Fix GNU coding standards compliancy.
4298 2005-11-11  Richard Earnshaw  <richard.earnshaw@arm.com>
4300         * df.c (df_chain_create): Move declaration of bb outside define
4301         for ENABLE_CHECKING.
4303 2005-11-08  Paolo Bonzini  <bonzini@gnu.org>
4305         * df.c (df_local_ref_killed_between_p): Reinstate.
4307 2005-11-08  Daniel Berlin  <dberlin@dberlin.org>
4308             Kenneth Zadeck <zadeck@naturalbridge.com>
4310         * bitmap.c (bitmap_element_free, bitmap_element_link, bitmap_and,
4311         bitmap_and_compl, bitmap_ior, bitmap_ior_into, bitmap_xor,
4312         bitmap_xor_into): Fixed latent performance issue where current
4313         was being properly kept up to date.
4314         (bitmap_clear_range, bitmap_compl_and_into): New functions to support
4315         dataflow analysis.
4316         * df.c (df_rd_confluence_n, df_alloc_reach_bitmaps, df_free_reach_bitmaps,
4317         df_clear_reach_bitmaps, df_ru_confluence_n, df_lr_confluence_0,
4318         df_lr_confluence_n, df_init, df_dump): Changed the way EH_USES is processed.
4319         (df_bitmaps_alloc, df_bitmaps_free,
4320         df_bb_reg_def_chain_create, df_bb_reg_def_chain_create,
4321         df_reg_use_chain_create, df_rd_transfer_function,
4322         df_alloc_reach_bitmaps, df_ref_bitmap, df_bb_rd_local_compute,
4323         df_rd_local_compute, df_bb_ru_local_compute, df_analyze,
4324         df_analyze_subcfg, df_analyze_simple_change_some_blocks): Fixed
4325         performance problems by grouping all defs and uses
4326         for the same pseudo into contigious ranges.
4327         (df_bb_du_chain_create, df_bb_ud_chain_create): Combined in
4328         new function df_bb_chain_create.
4329         (df_chain_create, df_alloc_reach_bitmaps, df_free_reach_bitmaps,
4330         df_clear_reach_bitmaps, df_ref_bitmap): New function.
4331         (df_rd_init, df_rd_confluence_n, df_rd_transfer_function,
4332         df_rd_set_dflow, df_ru_transfer_function, df_ru_confluence_n,
4333         df_ru_transfer_function, df_ru_set_dflow, df_lr_transfer_function,
4334         df_lr_set_dflow, df_lr_confluence_n, df_ur_transfer_function,
4335         df_ur_set_dflow, df_ur_init, df_ur_transfer_function, df_ur_set_dflow
4336         df_ur_confluence_n, hybrid_search_forward, hybrid_search_backward
4337         iterative_dataflow): Changed interface for dataflow callback
4338         functions to hide where the source of bitmaps.
4339         (df_rd_set_bitmaps, df_ru_set_bitmaps, df_lr_set_bitmaps,
4340         df_ur_set_bitmaps, df_bitmap_ior_edge): Removed as part of
4341         changing dataflow callback interface.
4342         (df_free, df_ref_create, df_ref_record_1,
4343         df_record_exit_block_uses, df_refs_record, df_exit_lr_local_compute,
4344         df_insn_move_before, df_local_ref_killed_between_p,
4345         df_bb_regno_last_def_find, df_chain_dump, df_dump):
4346         Added chains that go to artifical uses in exit block.
4347         (df_exit_bb_reg_use_chain_create, df_exit_bb_chain_create):
4348         New functions to support artifical uses in exit block.
4349         (df_insn_refs_record): Added new DF_REF_CLOBBER ref type to
4350         avoid creation of artifical chains for clobbers at call sites.
4352 2005-11-03  Paolo Bonzini  <bonzini@gnu.org>
4353             Steven Bosscher  <stevenb@suse.de>
4355         * df.c (df_free): Fix call to df_bitmaps_free.
4356         (df_bb_regno_last_def_find): Make it return what it is supposed
4357         to return.
4358         (df_local_ref_killed_between_p): New.
4360 2005-11-01  Daniel Berlin  <dberlin@dberlin.org>
4361             Kenneth Zadeck <zadeck@naturalbridge.com>
4363         * flow.c (update_life_info): Added debugging.
4364         (init_propagate_block_info): Fixed typo.
4365         * df.c (df_refs_unlink, df_ref_record_1, df_ref_record,
4366         read_modify_subreg_p, df_def_record_1, df_insn_refs_record):
4367         Fixed control of when regs_ever_live is modified.
4368         * combine.c: Documentation rot.
4369         * reload1.c: Used wrong type of comment.
4371 2005-10-31  Jan Hubicka  <jh@suse.cz>
4373         * reg-stack.c (subst_stack_regs_pat): Expect USEs to be ignored for
4374         liveness.
4375         (change_stack): Initialize partially dead registers.
4376         (convert_regs_1): Handle dead return values.
4377         (reg_to_stack): Switch to partial liveness.
4378         (propagate_stack): Push in partially live stuff.
4380 2005-10-25  Daniel Berlin  <dberlin@dberlin.org>
4381             Kenneth Zadeck <zadeck@naturalbridge.com>
4383         * cfgrtl.c (print_rtl_with_bb): Fixed problem with debugging
4384         output of bitmaps.
4385         * df.c (mark_reg_change): Fixed problem computing sizes of hard regs.
4386         * reload1.c (reload): Fixed over agressive updating of bitmaps.
4387         * sched-rgn.c (schedule_insns): Cleaned away some useless verification
4388         code.
4389         (rest_of_handle_sched2): Removed debugging.
4392 2005-10-24  Kenneth Zadeck <zadeck@naturalbridge.com>
4394         * sched-rgn.c (check_live_1, update_live_1, rest_of_handle_sched):
4395         Converted to use partially available liveness.
4396         (init_regions, schedule_insns, rest_of_handle_sched):
4397         Removed assertion checking based on death notes.
4400 2005-10-23  Daniel Berlin  <dberlin@dberlin.org>
4401             Kenneth Zadeck <zadeck@naturalbridge.com>
4403         * df.c (df_bitmaps_alloc, df_lr_local_compute, df_compute_all_blocks):
4404         Removed df->all_blocks.
4405         (df_lr_local_compute): Added flag to indicate that
4406         blocks was really the whole function.
4407         (df_ref_record): Fixed missing case for memory refs.
4408         (df_insn_refs_record): Fixed regs ever live processing.
4409         (df_bb_refs_record): Removed debugging code.
4410         (df_bb_lr_local_compute, notice_stack_pointer_modification,
4411         df_bb_lr_local_compute): Moved stack pointer modification
4412         detection code back to flow.c.
4413         (df_bb_lr_local_compute, hybrid_search_forward,
4414         hybrid_search_backward): Formatting cleanup.
4415         (df_compute_all_blocks, notice_stack_pointer_modification):
4416         Removed.
4417         (df_analyze):  Changed the definition of whole program to be all
4418         reachable blocks rather than all blocks.
4419         (df_analyze_subcfg, df_analyze_simple_change_some_blocks): Added
4420         parameter to df_lr_local_compute.
4421         (df_rtx_reg_replace): Fixed way it decided it was processing
4422         entire function.
4423         * df.h: Removed all_blocks from struct df definition.
4424         * flow.c (notice_stack_pointer_modification_1,
4425         notice_stack_pointer_modification): Added back.
4426         (life_analysis): Added back call to
4427         notice_stack_pointer_modification.
4428         (struct tree_opt_pass pass_life, rest_of_handle_flow2):
4429         Added debugging.
4430         * gcse.c (gcse_main, bypass_jumps): Additional places where we had missed
4431         in renumbering entry and exit blocks.
4432         * global.c (global_alloc): Additional debugging code.
4435 2005-10-19  Daniel Berlin  <dberlin@dberlin.org>
4437         * df.c (df_lr_local_compute): Fix thinko regarding pseudos and call
4438         defs.
4440 2005-10-19  Kenneth Zadeck <zadeck@naturalbridge.com>
4442         * df.c (df_bitmap_ior_edge, df_lr_confluence_0
4443         df_lr_confluence_n, df_ur_confluence_n, df_ur_set_bitmaps): New
4444         functions.
4445         (df_exit_lr_local_compute, dataflow_set_a_op_b): Removed
4446         functions.
4447         (df_ur_set_bitmaps, mark_reg_change, df_ur_local_finalize,
4448         mark_reg_use_for_earlyclobber, df_ur_local_compute,
4449         df_bb_reg_live_start, df_bb_reg_live_end, df_bb_reg_live_start_p,
4450         df_bb_reg_live_end_p): Renamed "reaching registers"
4451         problem (rr) to "uninitialized registers" problem.
4452         (df_free): Changed variables freed.
4453         (df_ref_record): Added more sophisticated hard register scan.
4454         (df_insn_refs_record): Changed way invalidated_by_call is
4455         processed.
4456         (df_bb_refs_record, df_exit_lr_local_compute,
4457         df_bb_lr_local_compute): Removed bad way to simulate edge functions.
4458         There are now real confluence functions.
4459         (notice_stack_pointer_modification): Disabled.
4460         (df_bb_lr_local_compute): Disabled call to
4461         notice_stack_pointer_modification. Added code to properly handle hard
4462         regs at call site.
4463         (df_lr_local_compute): Added more hard reg processing.
4464         Changed order exit block is processed.
4465         (df_init): Added some invariant hard regs initialization.
4466         (df_refs_process): Removed artifical special case.
4467         (df_print_bb_index, df_dump): Removed parameter to df_dump.
4468         (hybrid_search_forward, hybrid_search_backward): Added
4469         confluence function calls.
4470         (iterative_dataflow): Added hack to initialize in and out sets
4471         with hard registers.  This will be removed later.
4472         * df.h: Removed DF_ARTIFICIAL_DEFS.  Renamed "reaching registers".
4473         problem (rr) to "uninitialized registers" problem. Changed confluence
4474         operator to general confluence functions.
4475         * flow.c (verify_wide_reg, verify_local_live_at_start): Removed
4476         parameter to df_dump.
4477         * reg_stack.c (reg_to_stack): Ditto.
4478         * sched_rgn.c (init_regions, schedule_insns): Ditto.
4479         * web.c (web_main): Ditto.
4480         * flow.c: (update_life_info): Removed DF_ARTIFICIAL_DEFS.
4481         * global.c (global_alloc): Ditto.