]>
Commit | Line | Data |
---|---|---|
3072d30e | 1 | 2007-06-07 Kenneth Zadeck <zadeck@naturalbridge.com> |
2 | ||
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. | |
11 | ||
12 | 2007-06-06 Kenneth Zadeck <zadeck@naturalbridge.com> | |
13 | ||
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. | |
25 | ||
26 | 2007-06-06 Seongbae Park <seongbae.park@gmail.com> | |
27 | ||
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 | |
37 | ||
38 | 2007-06-06 Kenneth Zadeck <zadeck@naturalbridge.com> | |
39 | ||
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. | |
65 | ||
66 | 2007-06-06 Kenneth Zadeck <zadeck@naturalbridge.com> | |
67 | ||
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. | |
72 | ||
73 | 2007-05-31 Kenneth Zadeck <zadeck@naturalbridge.com> | |
74 | ||
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> | |
84 | ||
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. | |
194 | ||
195 | 2007-05-30 Kenneth Zadeck <zadeck@naturalbridge.com> | |
196 | ||
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. | |
201 | ||
202 | 2007-05-27 Kenneth Zadeck <zadeck@naturalbridge.com> | |
203 | ||
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> | |
209 | ||
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> | |
218 | ||
219 | * bt-load.c: Include recog.h. | |
220 | (move_btr_def): Use validate_replace_rtx instead of replace_rtx. | |
221 | ||
222 | 2007-05-25 Steven Bosscher <steven@gcc.gnu.org> | |
223 | ||
224 | * emit-rtl.c (try_split): Remove unnecessary setting/resetting | |
225 | of the USED flags of TRIAL. | |
226 | ||
227 | 2007-05-25 Kenneth Zadeck <zadeck@naturalbridge.com> | |
228 | ||
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> | |
238 | ||
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. | |
243 | ||
244 | 2007-05-24 Andrew Pinski <andrew_pinski@playstation.sony.com> | |
245 | ||
246 | * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain. | |
247 | (umulsi3_highpart): Likewise. | |
248 | ||
249 | 2007-05-24 Eric Christopher <echristo@gmail.com> | |
250 | ||
251 | * config/mips/mips.c (mips_save_reg_p): Use df_regs_ever_live_p. | |
252 | (mips_output_mi_thunk): Use SET_REGNO. | |
253 | ||
254 | 2007-05-23 Kaz Kojima <kkojima@gcc.gnu.org> | |
255 | ||
256 | * config/sh/sh.c (sh_expand_prologue): Fix typo. | |
257 | ||
258 | 2007-05-23 Paolo Bonzini <bonzini@gnu.org> | |
259 | ||
260 | * emit-rtl.c [!HAVE_blockage]: Provide a gen_blockage routine here. | |
261 | * rtl.h (gen_blockage): Add prototype. | |
262 | ||
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. | |
270 | ||
271 | 2007-05-23 Kenneth Zadeck <zadeck@naturalbridge.com> | |
272 | ||
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> | |
296 | ||
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. | |
306 | ||
307 | 2007-05-20 Kenneth Zadeck <zadeck@naturalbridge.com> | |
308 | ||
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. | |
317 | ||
318 | 2007-05-17 Kenneth Zadeck <zadeck@naturalbridge.com> | |
319 | ||
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. | |
341 | ||
342 | 2007-05-16 Seongbae Park <seongbae.park@gmail.com> | |
343 | ||
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. | |
348 | ||
349 | 2007-05-16 Kenneth Zadeck <zadeck@naturalbridge.com> | |
350 | ||
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. | |
362 | ||
363 | 2007-05-10 Roman Zippel <zippel@linux-m68k.org> | |
364 | ||
365 | * config/m68k/m68k.c: include df.h. | |
366 | (m68k_output_mi_thunk): use SET_REGNO. | |
367 | ||
368 | 2007-05-09 Kaz Kojima <kkojima@gcc.gnu.org> | |
369 | ||
370 | * df-core.c (df_get_bb_dirty): Return false if df_live is null. | |
371 | ||
372 | 2007-05-09 Kaz Kojima <kkojima@gcc.gnu.org> | |
373 | ||
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. | |
381 | ||
382 | 2007-05-08 Kenneth Zadeck <zadeck@naturalbridge.com> | |
383 | ||
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> | |
495 | ||
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. | |
504 | ||
505 | 2007-05-05 Ramana Radhakrishnan <ramana.r@gmail.com> | |
506 | Serge Belyshev <belyshev@depni.sinp.msu.ru> | |
507 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
508 | ||
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 | ||
513 | ||
514 | 2007-05-01 Kenneth Zadeck <zadeck@naturalbridge.com> | |
515 | ||
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> | |
525 | ||
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. | |
530 | ||
531 | 2007-04-29 Steven Bosscher <steven@gcc.gnu.org> | |
532 | ||
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. | |
538 | ||
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. | |
545 | ||
546 | Fix Java bootstrap on ia64 | |
547 | * emit-rtl.c (try_split): Unshare RTL sequences produced by splitters. | |
548 | ||
549 | 2007-04-27 Kenneth Zadeck <zadeck@naturalbridge.com> | |
550 | ||
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> | |
600 | ||
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. | |
612 | ||
613 | ||
614 | 2007-04-26 Seongbae Park <seongbae.park@gmail.com> | |
615 | ||
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. | |
624 | ||
625 | 2007-04-24 Seongbae Park <seongbae.park@gmail.com> | |
626 | ||
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. | |
632 | ||
633 | 2007-04-23 Steven Bosscher <steven@gcc.gnu.org> | |
634 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
635 | ||
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> | |
673 | ||
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. | |
677 | ||
678 | 2007-04-22 Steven Bosscher <steven@gcc.gnu.org> | |
679 | ||
680 | * df.h (df_bitmap_obstack): Declare. | |
681 | ||
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. | |
696 | ||
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. | |
702 | ||
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. | |
706 | ||
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. | |
713 | ||
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. | |
724 | ||
725 | 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com> | |
726 | ||
727 | * config/spu/spu.c (fsmbi_const_p): Replace flow2_completed with | |
728 | epilogue_completed. | |
729 | ||
730 | 2007-04-16 Steven Bosscher <steven@gcc.gnu.org> | |
731 | ||
732 | * fwprop.c (forward_propagate_into): If multiple sets | |
733 | return. | |
734 | ||
735 | 2007-04-16 Kenneth Zadeck <zadeck@naturalbridge.com> | |
736 | ||
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. | |
756 | ||
757 | ||
758 | 2007-04-12 Steven Bosscher <steven@gcc.gnu.org> | |
759 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
760 | ||
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. | |
770 | ||
771 | 2007-04-11 Steven Bosscher <steven@gcc.gnu.org> | |
772 | ||
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. | |
777 | ||
778 | 2007-04-09 Kenneth Zadeck <zadeck@naturalbridge.com> | |
779 | ||
780 | * df-core.c (add_problem): Keep the problem sorted in | |
781 | problems_in_order. | |
782 | * global.c (compute_regsets): Recompute register information. | |
783 | ||
784 | 2007-04-08 Kenneth Zadeck <zadeck@naturalbridge.com> | |
785 | ||
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. | |
794 | ||
795 | 2007-04-07 Kenneth Zadeck <zadeck@naturalbridge.com> | |
796 | ||
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. | |
822 | ||
823 | 2007-04-06 Paolo Bonzini <bonzini@gnu.org> | |
824 | ||
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. | |
836 | ||
837 | 2007-04-05 Kenneth Zadeck <zadeck@naturalbridge.com> | |
838 | ||
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. | |
883 | ||
884 | 2007-04-05 Peter Bergner <bergner@vnet.ibm.com> | |
885 | ||
886 | * config/rs6000/rs6000.c (rs6000_legitimate_address): Disallow | |
887 | PRE_MODIFY for TDmode. | |
888 | ||
889 | 2007-04-04 Kenneth Zadeck <zadeck@naturalbridge.com> | |
890 | ||
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. | |
895 | ||
896 | 2007-04-03 Paolo Bonzini <bonzini@gnu.org> | |
897 | ||
898 | * df-problems.c (df_chain_create_bb): Plug leak. | |
899 | ||
900 | * df-problems.c (df_chain_alloc): Fix typo. | |
901 | ||
902 | 2007-04-03 Paolo Bonzini <bonzini@gnu.org> | |
903 | ||
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. | |
915 | ||
916 | 2007-04-01 Kenneth Zadeck <zadeck@naturalbridge.com> | |
917 | ||
918 | * config/ia64/ia64.c (emit_predicate_relation_info): Changed | |
919 | DF_LIVE_IN to df_get_live_in. | |
920 | ||
921 | 2007-03-29 Paolo Bonzini <bonzini@gnu.org> | |
922 | ||
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. | |
928 | ||
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. | |
938 | ||
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. | |
945 | ||
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. | |
958 | ||
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. | |
963 | ||
964 | * rtl.h (max_parallel): Remove. | |
965 | ||
966 | 2007-03-29 Paolo Bonzini <bonzini@gnu.org> | |
967 | ||
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. | |
975 | ||
976 | 2007-03-28 Kenneth Zadeck <zadeck@naturalbridge.com> | |
977 | ||
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. | |
1007 | ||
1008 | 2007-03-28 Paolo Bonzini <bonzini@gnu.org> | |
1009 | ||
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. | |
1018 | ||
1019 | 2007-03-20 Seongbae Park <seongbae.park@gmail.com> | |
1020 | ||
1021 | * combine.c (setup_incoming_promotions): Fix a bad merge | |
1022 | - use the argument FIRST instead of recomputing it. | |
1023 | ||
1024 | 2007-03-16 Paolo Bonzini <bonzini@gnu.org> | |
1025 | ||
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. | |
1029 | ||
1030 | 2007-03-16 Paolo Bonzini <bonzini@gnu.org> | |
1031 | ||
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. | |
1036 | ||
1037 | 2007-03-13 Seongbae Park <seongbae.park@gmail.com> | |
1038 | ||
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. | |
1051 | ||
1052 | 2007-03-09 Richard Earnshaw <rearnsha@arm.com> | |
1053 | ||
1054 | * arm.c: Include df.h. | |
1055 | ||
1056 | 2007-03-06 Steven Bosscher <steven@gcc.gnu.org> | |
1057 | ||
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. | |
1083 | ||
1084 | 2007-03-06 Paolo Bonzini <bonzini@gnu.org> | |
1085 | ||
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. | |
1101 | ||
1102 | 2007-03-04 Roman Zippel <zippel@linux-m68k.org> | |
1103 | ||
1104 | * regclass.c (scan_one_insn): Call df_insn_rescan after breaking | |
1105 | out constant parameter. | |
1106 | ||
1107 | 2007-03-04 Roman Zippel <zippel@linux-m68k.org> | |
1108 | ||
1109 | * df-scan.c (df_grow_ref_info): Also add bitmap_addend to size. | |
1110 | ||
1111 | 2007-02-25 Ulrich Weigand <uweigand@de.ibm.com> | |
1112 | ||
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. | |
1124 | ||
1125 | 2007-02-25 Ulrich Weigand <uweigand@de.ibm.com> | |
1126 | ||
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. | |
1133 | ||
1134 | 2007-02-22 Seongbae Park <seongbae.park@gmail.com> | |
1135 | ||
1136 | * global.c (reg_becomes_live): Mark registers not live | |
1137 | after CLOBBER. | |
1138 | ||
1139 | 2007-02-22 Paolo Bonzini <bonzini@gnu.org> | |
1140 | ||
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. | |
1144 | ||
1145 | 2007-02-21 Paolo Bonzini <bonzini@gnu.org> | |
1146 | ||
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. | |
1172 | ||
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. | |
1183 | ||
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. | |
1201 | ||
1202 | 2007-02-20 Seongbae Park <seongbae.park@gmail.com> | |
1203 | ||
1204 | * sched-ebb.c (schedule_ebbs): Clear DF_LR_RUN_DCE flag | |
1205 | after df_analyze. | |
1206 | ||
1207 | 2007-02-20 Kenneth Zadeck <zadeck@naturalbridge.com> | |
1208 | ||
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. | |
1225 | ||
1226 | 2007-02-16 Paolo Bonzini <bonzini@gnu.org> | |
1227 | ||
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. | |
1232 | ||
1233 | 2007-02-15 Paolo Bonzini <bonzini@gnu.org> | |
1234 | ||
1235 | * config/sh/sh.c (sh_reorg): Don't look at LOG_LINKS. | |
1236 | ||
1237 | 2007-02-15 Paolo Bonzini <bonzini@gnu.org> | |
1238 | ||
1239 | * combine.c (find_single_use): Don't check for reload flags. | |
1240 | ||
1241 | 2007-02-15 Paolo Bonzini <bonzini@gnu.org> | |
1242 | ||
1243 | Merge from mainline. | |
1244 | ||
1245 | 2007-02-15 Paolo Bonzini <bonzini@gnu.org> | |
1246 | ||
1247 | * caller-save.c (save_call_clobbered_regs): Do not process sibcalls. | |
1248 | ||
1249 | 2007-02-13 Seongbae Park <seongbae.park@gmail.com> | |
1250 | ||
1251 | Merge from mainline. | |
1252 | ||
1253 | 2007-02-13 Seongbae Park <seongbae.park@gmail.com> | |
1254 | ||
1255 | * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor): | |
1256 | Ensure dst->current is valid. | |
1257 | ||
1258 | 2007-02-13 Kenneth Zadeck <zadeck@naturalbridge.com> | |
1259 | ||
1260 | * lower-subregs.c (resolve_reg_notes): Added code to call | |
1261 | df_notes_rescan when REG_EQUAL notes are changed. | |
1262 | ||
1263 | 2007-02-12 Kenneth Zadeck <zadeck@naturalbridge.com> | |
1264 | ||
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. | |
1270 | ||
1271 | 2007-02-06 Kenneth Zadeck <zadeck@naturalbridge.com> | |
1272 | ||
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. | |
1280 | ||
1281 | 2007-02-03 Kaz Kojima <kkojima@gcc.gnu.org> | |
1282 | ||
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. | |
1295 | ||
1296 | 2007-02-03 Kaz Kojima <kkojima@gcc.gnu.org> | |
1297 | ||
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. | |
1302 | ||
1303 | 2007-02-03 Kaz Kojima <kkojima@gcc.gnu.org> | |
1304 | ||
1305 | * modulo-sched.c (sms_schedule): Call df_ri_add_problem | |
1306 | with DF_RI_LIFE. | |
1307 | ||
1308 | 2007-02-03 Kaz Kojima <kkojima@gcc.gnu.org> | |
1309 | ||
1310 | * df-scan.c (df_get_entry_block_def_set): Use struct_value_rtx | |
1311 | hook instead of TARGET_STRUCT_VALUE_RTX. | |
1312 | ||
1313 | 2007-02-03 Kaz Kojima <kkojima@gcc.gnu.org> | |
1314 | ||
1315 | * passes.c (init_optimization_passes): Move df_finish after | |
1316 | delay_slots. | |
1317 | ||
1318 | 2007-01-02 Kenneth Zadeck <zadeck@naturalbridge.com> | |
1319 | ||
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. | |
1357 | ||
1358 | ||
1359 | 2007-02-01 Seongbae Park <seongbae.park@gmail.com> | |
1360 | ||
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. | |
1365 | ||
1366 | 2007-02-01 Seongbae Park <seongbae.park@gmail.com> | |
1367 | ||
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. | |
1372 | ||
1373 | 2007-01-17 Eric Christopher <echristo@apple.com> | |
1374 | ||
1375 | * config/mips/mips.c (mips_output_function_epilogue): Use SET_REGNO | |
1376 | instead of REGNO. | |
1377 | (mips_output_mi_thunk): Ditto. | |
1378 | ||
1379 | 2007-01-17 Eric Christopher <echristo@apple.com> | |
1380 | ||
1381 | * reorg.c (fill_simple_delay_slots): Fix prototype. | |
1382 | ||
1383 | 2007-01-15 Andreas Krebbel <krebbel1@de.ibm.com> | |
1384 | ||
1385 | * regmove.c: (fixup_match_1): Call df_notes_rescan after | |
1386 | changing insn notes. | |
1387 | ||
1388 | 2007-01-15 Andreas Krebbel <krebbel1@de.ibm.com> | |
1389 | ||
1390 | * config/s390/s390.c: Include df.h. | |
1391 | (s390_emit_prologue): Call df_insn_rescan when annotating constant | |
1392 | pool references. | |
1393 | ||
1394 | 2007-01-15 Andreas Krebbel <krebbel1@de.ibm.com> | |
1395 | ||
1396 | * rtl.h (split_all_insns_noflow): Add prototype. | |
1397 | * recog.c (split_all_insns_noflow): Remove static. | |
1398 | ||
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. | |
1432 | ||
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. | |
1439 | ||
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. | |
1514 | ||
1515 | ||
1516 | ||
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(). | |
1524 | ||
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. | |
1554 | ||
1555 | ||
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. | |
1567 | ||
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. | |
1601 | ||
1602 | ||
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. | |
1636 | ||
1637 | ||
1638 | 2007-01-01 Eric Christopher <echristo@apple.com> | |
1639 | ||
1640 | * config/darwin.c: Include df.h. | |
1641 | (machopic_legitimize_pic_address): Use | |
1642 | df_set_regs_ever_live. | |
1643 | ||
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. | |
1854 | ||
1855 | ||
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. | |
1859 | ||
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. | |
1864 | ||
1865 | 2006-12-22 Andrew Pinski <andrew_pinski@playstation.sony.com> | |
1866 | ||
1867 | * config/spu/spu.c (immediate_load_p): Change usage of | |
1868 | flow2_completed over to epilogue_completed. | |
1869 | ||
1870 | 2006-12-22 Kenneth Zadeck <zadeck@naturalbridge.com> | |
1871 | ||
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. | |
1884 | ||
1885 | 2006-12-16 Kenneth Zadeck <zadeck@naturalbridge.com> | |
1886 | ||
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. | |
2242 | ||
2243 | ||
2244 | 2006-12-07 David Edelsohn <edelsohn@gnu.org> | |
2245 | ||
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. | |
2252 | ||
2253 | 2006-12-07 David Edelsohn <edelsohn@gnu.org> | |
2254 | ||
2255 | * config/rs6000/predicates.md (lwa_operand): Exclude PRE_MODIFY | |
2256 | addresses. | |
2257 | ||
2258 | 2006-12-01 Seongbae Park <seongbae.park@gmail.com> | |
2259 | ||
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. | |
2275 | ||
2276 | ||
2277 | 2006-11-28 Seongbae Park <seongbae.park@gmail.com> | |
2278 | ||
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. | |
2328 | ||
2329 | ||
2330 | ||
2331 | 2006-11-18 Kenneth Zadeck <zadeck@naturalbridge.com> | |
2332 | ||
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. | |
2374 | ||
2375 | 2006-11-17 Kenneth Zadeck <zadeck@naturalbridge.com> | |
2376 | ||
2377 | * fwprop.c Removed bad version. | |
2378 | * tree-ssa-pre.c (init_pre): Added parameter to post_order_compute. | |
2379 | ||
2380 | 2006-11-15 Seongbae Park <seongbae.park@gmail.com> | |
2381 | ||
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. | |
2388 | ||
2389 | ||
2390 | 2006-11-14 Seongbae Park <seongbae.park@gmail.com> | |
2391 | ||
2392 | * function.c (thread_prologue_and_epilogue_insns): | |
2393 | Update regs_ever_live during df scanning. | |
2394 | ||
2395 | 2006-11-14 Seongbae Park <seongbae.park@gmail.com> | |
2396 | ||
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. | |
2401 | ||
2402 | 2006-11-14 Seongbae Park <seongbae.park@gmail.com> | |
2403 | ||
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. | |
2419 | ||
2420 | ||
2421 | 2006-11-14 Paolo Bonzini <bonzini@gnu.org> | |
2422 | ||
2423 | Merge from mainline: | |
2424 | ||
2425 | 2006-11-14 Paolo Bonzini <bonzini@gnu.org> | |
2426 | ||
2427 | PR rtl-optimization/29798 | |
2428 | ||
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. | |
2433 | ||
2434 | 2006-11-13 Seongbae Park <seongbae.park@gmail.com> | |
2435 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
2436 | ||
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. | |
2488 | ||
2489 | 2006-11-10 Seongbae Park <seongbae.park@gmail.com> | |
2490 | ||
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: | |
2528 | ||
2529 | ||
2530 | 2006-11-08 Kenneth Zadeck <zadeck@naturalbridge.com> | |
2531 | ||
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. | |
2568 | ||
2569 | ||
2570 | 2006-11-07 Kenneth Zadeck <zadeck@naturalbridge.com> | |
2571 | ||
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. | |
2647 | ||
2648 | 2006-11-04 Kenneth Zadeck <zadeck@naturalbridge.com> | |
2649 | ||
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. | |
2664 | ||
2665 | 2006-11-03 Seongbae Park <seongbae.park@gmail.com> | |
2666 | ||
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. | |
2675 | ||
2676 | 2006-10-28 Seongbae Park <seongbae.park@gmail.com> | |
2677 | ||
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. | |
2701 | ||
2702 | 2006-10-24 Paolo Bonzini <bonzinI@gnu.rg> | |
2703 | ||
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. | |
2718 | ||
2719 | 2006-10-19 Kenneth Zadeck <zadeck@naturalbridge.com> | |
2720 | ||
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. | |
2797 | ||
2798 | ||
2799 | 2006-10-18 Paolo Bonzini <bonzini@gnu.org> | |
2800 | ||
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. | |
2803 | ||
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. | |
2807 | ||
2808 | 2006-10-03 Richard Sandiford <richard@codesourcery.com> | |
2809 | ||
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. | |
2846 | ||
2847 | 2006-10-03 Maxim Kuvyrkov <mkuvyrkov@ispras.ru> | |
2848 | ||
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. | |
2880 | ||
2881 | 2006-10-01 Kenneth Zadeck <zadeck@naturalbridge.com> | |
2882 | ||
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. | |
2918 | ||
2919 | 2006-09-30 Kenneth Zadeck <zadeck@naturalbridge.com> | |
2920 | ||
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. | |
2974 | ||
2975 | 2006-08-04 Kenneth Zadeck <zadeck@naturalbridge.com> | |
2976 | ||
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. | |
3002 | ||
3003 | 2006-08-01 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3004 | ||
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. | |
3016 | ||
3017 | 2006-07-26 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3018 | ||
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. | |
3140 | ||
3141 | ||
3142 | 2006-07-23 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3143 | ||
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. | |
3224 | ||
3225 | ||
3226 | 2006-07-16 Zdenek Dvorak <dvorakz@suse.cz> | |
3227 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
3228 | ||
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. | |
3290 | ||
3291 | 2006-07-12 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3292 | ||
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. | |
3298 | ||
3299 | 2006-07-11 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3300 | ||
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. | |
3356 | ||
3357 | 2006-07-05 Richard Sandiford <richard@codesourcery.com> | |
3358 | ||
3359 | * passes.c (init_optimization_passes): Move the final RTL DSE pass | |
3360 | after thread_prologue_and_epilogue. | |
3361 | ||
3362 | 2006-07-01 Daniel Berlin <dberlin@dberlin.org> | |
3363 | David Edelsohn <edelsohn@gnu.org> | |
3364 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
3365 | ||
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. | |
3407 | ||
3408 | ||
3409 | ||
3410 | 2006-05-27 Steven Bosscher <steven@gcc.gnu.org> | |
3411 | ||
3412 | * reorg.c (dbr_schedule): Fix df_ur_add_problem calls. | |
3413 | ||
3414 | 2006-05-24 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3415 | ||
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. | |
3459 | ||
3460 | 2006-05-23 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3461 | ||
3462 | * fwprop.c (local_ref_killed_between_p): Rearranged definition. | |
3463 | ||
3464 | 2006-05-23 Steven Bosscher <stevenb.gcc@gmail.com> | |
3465 | ||
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. | |
3482 | ||
3483 | 2006-05-14 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3484 | ||
3485 | * regclass.c (init_subregs_of_mode): Created dummy version | |
3486 | when CANNOT_CHANGE_MODE_CLASS is undefined. | |
3487 | ||
3488 | 2006-05-13 Steven Bosscher <stevenb.gcc@gmail.com> | |
3489 | ||
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. | |
3493 | ||
3494 | 2006-05-05 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3495 | ||
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. | |
3506 | ||
3507 | 2006-04-25 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3508 | ||
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. | |
3523 | ||
3524 | 2006-04-24 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3525 | ||
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. | |
3566 | ||
3567 | 2006-04-21 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3568 | ||
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. | |
3585 | ||
3586 | 2006-04-19 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3587 | ||
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. | |
3593 | ||
3594 | 2006-04-18 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3595 | ||
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. | |
3608 | ||
3609 | 2006-04-17 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3610 | ||
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. | |
3638 | ||
3639 | 2006-04-16 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3640 | ||
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. | |
3656 | ||
3657 | 2006-04-16 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3658 | ||
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. | |
3671 | ||
3672 | 2006-04-15 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3673 | ||
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. | |
3699 | ||
3700 | 2006-04-13 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3701 | ||
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. | |
3713 | ||
3714 | 2006-04-13 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3715 | ||
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. | |
3720 | ||
3721 | 2006-04-12 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3722 | ||
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. | |
3727 | ||
3728 | 2006-04-11 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3729 | ||
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. | |
3747 | ||
3748 | 2006-04-11 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3749 | ||
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. | |
3766 | ||
3767 | 2006-04-10 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3768 | ||
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. | |
3773 | ||
3774 | 2006-04-09 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3775 | ||
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. | |
3788 | ||
3789 | 2006-04-08 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3790 | ||
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. | |
3807 | ||
3808 | 2006-04-08 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3809 | ||
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. | |
3842 | ||
3843 | 2006-04-07 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3844 | ||
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. | |
3860 | ||
3861 | 2006-04-07 Daniel Berlin <dberlin@dberlin.org> | |
3862 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
3863 | ||
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. | |
3943 | ||
3944 | ||
3945 | 2006-03-14 Kenneth Zadeck <zadeck@naturalbridge.com> | |
3946 | ||
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. | |
4004 | ||
4005 | 2006-02-06 Daniel Berlin <dberlin@dberlin.org> | |
4006 | ||
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. | |
4022 | ||
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. | |
4047 | ||
4048 | 2006-01-17 Kenneth Zadeck <zadeck@naturalbridge.com> | |
4049 | ||
4050 | * df-scan.c (df_hard_reg_init): Moved declaration of i outside macro. | |
4051 | ||
4052 | 2006-01-17 Ian Lance Taylor <ian@airs.com> | |
4053 | ||
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. | |
4059 | ||
4060 | ||
4061 | 2005-01-17 Kenneth Zadeck <zadeck@naturalbridge.com> | |
4062 | ||
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. | |
4069 | ||
4070 | ||
4071 | 2005-01-17 Kenneth Zadeck <zadeck@naturalbridge.com> | |
4072 | ||
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. | |
4096 | ||
4097 | 2006-01-06 Daniel Berlin <dberlin@dberlin.org> | |
4098 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
4099 | ||
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. | |
4108 | ||
4109 | 2005-12-30 Kenneth Zadeck <zadeck@naturalbridge.com> | |
4110 | ||
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. | |
4125 | ||
4126 | 2005-12-22 Paolo Bonzini <bonzini@gnu.org> | |
4127 | ||
4128 | * df-scan.c (df_ref_unlink): Fix thinko when REF == CHAIN. | |
4129 | ||
4130 | 2005-12-22 Danny Berlin <dberlin@dberlin.org> | |
4131 | Richard Sandiford <richard@codesourcery.com> | |
4132 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
4133 | ||
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. | |
4144 | ||
4145 | 2005-12-19 Kenneth Zadeck <zadeck@naturalbridge.com> | |
4146 | ||
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. | |
4155 | ||
4156 | ||
4157 | 2005-12-18 Daniel Berlin <dberlin@dberlin.org> | |
4158 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
4159 | ||
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. | |
4268 | ||
4269 | 2005-12-14 Kenneth Zadeck <zadeck@naturalbridge.com> | |
4270 | ||
4271 | * bitmap.c (bitmap_clear_range): Removed extra debugging. | |
4272 | ||
4273 | 2005-12-12 Paolo Bonzini <bonzini@gnu.org> | |
4274 | ||
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. | |
4286 | ||
4287 | 2005-11-28 Paolo Bonzini <bonzini@gnu.org> | |
4288 | ||
4289 | * config/sh/sh.c (sh_output_mi_thunk): Use df_finish. | |
4290 | ||
4291 | 2005-11-17 Paolo Bonzini <bonzini@gnu.org> | |
4292 | ||
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. | |
4297 | ||
4298 | 2005-11-11 Richard Earnshaw <richard.earnshaw@arm.com> | |
4299 | ||
4300 | * df.c (df_chain_create): Move declaration of bb outside define | |
4301 | for ENABLE_CHECKING. | |
4302 | ||
4303 | 2005-11-08 Paolo Bonzini <bonzini@gnu.org> | |
4304 | ||
4305 | * df.c (df_local_ref_killed_between_p): Reinstate. | |
4306 | ||
4307 | 2005-11-08 Daniel Berlin <dberlin@dberlin.org> | |
4308 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
4309 | ||
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. | |
4351 | ||
4352 | 2005-11-03 Paolo Bonzini <bonzini@gnu.org> | |
4353 | Steven Bosscher <stevenb@suse.de> | |
4354 | ||
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. | |
4359 | ||
4360 | 2005-11-01 Daniel Berlin <dberlin@dberlin.org> | |
4361 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
4362 | ||
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. | |
4370 | ||
4371 | 2005-10-31 Jan Hubicka <jh@suse.cz> | |
4372 | ||
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. | |
4379 | ||
4380 | 2005-10-25 Daniel Berlin <dberlin@dberlin.org> | |
4381 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
4382 | ||
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. | |
4390 | ||
4391 | ||
4392 | 2005-10-24 Kenneth Zadeck <zadeck@naturalbridge.com> | |
4393 | ||
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. | |
4398 | ||
4399 | ||
4400 | 2005-10-23 Daniel Berlin <dberlin@dberlin.org> | |
4401 | Kenneth Zadeck <zadeck@naturalbridge.com> | |
4402 | ||
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. | |
4433 | ||
4434 | ||
4435 | 2005-10-19 Daniel Berlin <dberlin@dberlin.org> | |
4436 | ||
4437 | * df.c (df_lr_local_compute): Fix thinko regarding pseudos and call | |
4438 | defs. | |
4439 | ||
4440 | 2005-10-19 Kenneth Zadeck <zadeck@naturalbridge.com> | |
4441 | ||
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. | |
7dfbd804 | 4482 | |
4483 | \f | |
4484 | Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. | |
4485 | ||
4486 | Copying and distribution of this file, with or without modification, | |
4487 | are permitted in any medium without royalty provided the copyright | |
4488 | notice and this notice are preserved. |