1 2003-10-19 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
3 * tree-cfg.c (struct control): Add fields artificial_label, fa_then
5 (first_cs_bb, fixup_gotos, establish_gotos, decide_final_action): New.
6 (reconstruct_tree, dump_cs_tree): Handle gotos correctly.
7 * tree-pretty-print.c (dump_generic_node): Handle BREAK_EXPR and
9 * tree.def (BREAK_EXPR, CONTINUE_EXPR): New.
11 2003-10-17 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
13 * basic-block.h (DFS_stack, DFS_seen): Declare.
14 (DFS_FORWARD, DFS_BACKWARD, DFS): New macros.
15 * cfg.c (DFS_stack, DFS_seen): New.
16 * tree-cfg.c (struct control): New.
17 (determine_structures, make_control_node, try_move_control_node,
18 move_control_node, dump_cs_tree, free_cs_tree, add_bb_cs_nodes,
19 assign_levels, compute_structure_exits, layout_structures,
20 layout_structure, add_to_layout, finish_layout, reconstruct_tree,
21 inside_cs, lift, bsi_real_start): New functions.
22 (dump_cfg_function_to_file): Use reconstruction when instructed to.
23 (split_critical_edges): Moved from tree-ssa-pre.c.
24 * tree-dump.c (dump_options): Add TDF_RECONSTRUCT.
25 * tree.h (TDF_RECONSTRUCT): New.
26 * tree-flow.h (bsi_real_start, split_critical_edges): Declare.
27 * tree-ssa-pre.c (split_critical_edges): Moved to tree-cfg.c.
29 2003-10-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
31 * basic-block.h (struct basic_block_def): Add GTY tags.
32 * cfg.c (compact_blocks): Zero unused entries.
33 * cfgbuild.c (find_basic_blocks): Don't free basic_block_info.
34 * flow.c (free_basic_block_vars): Ditto.
35 * function.h (struct function): Remove tree_containers_root field.
36 * gengtype.c (struct write_types_data): Add test_routine field.
37 (walk_type, write_func_for_structure): Handle "fields_only" option.
38 (ggc_wtd, pch_wtd): Add test routines.
39 (main): Add gcov_type as a scalar type.
40 * ggc.h (ggc_test, gt_pch_test): New macros.
41 * tree-flatten.c (tree_cell_alloc): Don't update chain of tree
43 * tree-flow-inline.h (add_dom_child, clear_dom_children): Make
44 dom_children gc allocated again.
45 * tree-flow.h (struct tree_container): Remove next_in_gc_chain
47 (struct bb_ann_d): Add GTY tag.
48 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Don't free
50 * varray.c (element): Make basic_block varray gc allocated.
51 * varray.h (union varray_data_tag): Don't skip bb field.
53 2003-10-07 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
55 * tree-cfg.c (bsi_insert_on_edge_immediate): Handle non-critical edges
57 * tree-optimize.c (optimize_function_tree): Allow new vars to rename
58 after second dominator optimization pass.
59 * tree-ssa-pre.c (handle_bb_creation, redo_dominators): Removed.
60 (insert_one_operand): Expect the insertion not to cause new bb
62 (split_critical_edges): Enable.
63 (tree_perform_ssapre): Reenable ggc_collect. Don't allow dominators
66 2003-10-06 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
68 * Makefile.in (gimple-low.o): Add EXPR_H and toplev.h dependency.
69 * basic-block.h (EDGE_CONSTRUCT_ENTRY): Remove.
70 * cfg.c (dump_edge_info): Remove EDGE_CONSTRUCT_ENTRY reference.
71 * function.h (struct function): Add tree_containers_root field.
72 * gimple-low.c: Include expr.h and toplev.h.
74 (lower_function_body, lower_bind_expr): Use it.
75 * tree-alias-common.c (create_alias_vars): Iterate over block tree
77 * tree-cfg.c (block_tree, block_tree_curr, block_tree_obstack,
78 * block_tree_alloc, dump_block_tree_id, assign_vars_to_scope,
79 block_tree_free, assign_vars_to_scopes): Removed.
80 (build_tree_cfg, make_blocks, make_edges): Remove block_tree
82 (remove_bb, tree_merge_blocks, dump_cfg_function_to_file,
83 tree_split_edge, tree_split_block, tree_verify_flow_info,
84 debug_tree_chain, tree_forwarder_block_p, thread_jumps,
85 merge_seq_blocks): Remove block_tree handling.
86 (bsi_insert_after, bsi_insert_before): Use tree_cell_alloc.
87 (remove_useless_stmts_and_vars, remove_useless_stmts_and_vars_1,
88 remove_useless_stmts_and_vars_cond, remove_useless_stmts_and_vars_tf,
89 remove_useless_stmts_and_vars_tc, remove_useless_stmts_and_vars_bind):
90 Readded from mainline.
91 * tree-flatten.c (recreate_block_constructs): Remove.
92 (append, compact_to_block, tree_flatten_statement,
93 tree_unflatten_statements): Simplify.
94 (dummy_verify_flow_info): Remove.
95 (tree_cell_alloc): Add cell to gc list.
96 * tree-flow-inline.h (add_dom_child, clear_dom_children): Don't use gc
98 (bti_start, bti_end_p, bti_next): Remove.
99 * tree-flow.h (enum tree_container_note): Removed.
100 (struct tree_container): Note field removed, next_in_gc_chain added.
101 (struct block_tree, block_tree): Removed.
102 (struct var_ann_d): Remove scope field.
103 (struct bb_ann_d): Remove block field.
104 (bti_start, bti_end_p, bti_next, dump_block_tree, block_tree_free,
105 assign_vars_to_scopes, fixup_var_scope): Declaration removed.
106 (propagate_copy, tree_cell_alloc): Declaration changed.
107 * tree-optimize.c (tree_rest_of_compilation): Add
108 remove_useless_stmts_and_vars calls. Reorganize due to earlier
109 declaration expanding.
110 * tree-ssa-copyprop.c (get_common_scope, move_var_to_scope,
111 fixup_var_scope): Removed.
112 (copyprop_stmt): Don't pass bb to propagate_copy.
113 (propagate_copy): Don't take bb argument. Don't call fixup_var_scope.
114 * tree-ssa-dom.c (optimize_stmt): Don't pass bb to propagate_copy.
115 Don't call fixup_var_scope.
116 * tree-ssa-pre.c (tree_perform_ssapre): Don't call ggc_collect.
117 * tree-ssa.c (rewrite_out_of_ssa): Remove call to
118 remove_useless_stmts_and_vars.
119 * tree.c (tsi_link_after, tsi_link_chain_after): Remove parts
120 concerning updating bb boundaries.
122 2003-10-05 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
124 * gimple-low.c (struct lower_data): New field encl_switch_body.
125 (lower_case_label_expr): New.
126 (lower_stmt_body, lower_stmt, lower_switch_expr): Handle switch_expr
128 * tree-cfg.c (CASE_END, CASE_NEXT_RAW): Removed.
129 (CASE_GOTO, CASE_NEXT, CASE_DESTINATION, CASE_CASE, CASE_EDGE): Work
130 over tree_stmt_iterators.
132 (make_switch_expr_edges, tree_redirect_edge_and_branch,
133 find_taken_edge_switch_expr, tree_cleanup_block_edges,
134 remove_superfluous_labels): Use tree_stmt_iterator for switch cases.
135 (build_new_label): Moved ...
136 * gimplify.c (build_new_label): ...here.
137 (build_and_jump): Use it.
138 * tree-flatten.c (tree_flatten_statement): Assume SWITCH_EXPRs are
141 2003-10-05 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
143 * gimple-low.c (simple_goto_p): New.
144 (lower_cond_expr): Lower COND_EXPR form.
145 * tree-cfg.c (tree_cleanup_block_edges): Cleanup edges that are both
147 * tree-flatten.c (tree_flatten_statement): Assume COND_EXPRs are
150 * tree-cfg.c (stmt_starts_bb_p): Include is_ctrl_altering_stmt.
152 2003-10-05 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
155 * Makefile.in (gimple-low.o): Add.
156 * cfglayout.c (insn_locators_initialize): Use new scoping info.
157 * expr.c (expand_expr): Record scope changes.
158 * function.c (blocks_nreverse): Export.
159 (uninitialized_vars_warning): Use DECL_RTL_SET_P instead of DECL_RTL.
160 (reset_block_changes, record_block_change, record_block_change,
161 check_block_change, free_block_changes): New.
162 * function.h (struct function): New fields dont_emit_block_notes
163 and ib_boundaries_block.
164 (blocks_nreverse, reset_block_changes, record_block_change,
165 finalize_block_changes, check_block_change, free_block_changes):
167 * sibcall.c (optimize_sibling_and_tail_recursive_call): Don't call
168 reorder_blocks if cfun->dont_emit_block_notes.
169 * stmt.c (expand_start_bindings_and_block, expand_end_bindings): Don't
170 emit block notes if cfun->dont_emit_block_notes.
171 * toplev.c (rest_of_compilation): Don't call reorder_blocks if
172 cfun->dont_emit_block_notes.
173 * tree-flow.h (lower_function_body): Declare.
174 * tree-optimize.c (optimize_function_tree): Call lower_function_body.
175 * tree.c (build1): Initialize TREE_BLOCK.
176 * tree.h (TREE_BLOCK): New macro.
177 (struct tree_exp): Add block field.
179 2003-10-03 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
181 * tree-ssa.c (degrees): Removed.
182 (rewrite_into_ssa): Degrees initialization removed.
183 (rewrite_block): Test vars_to_rename instead.
184 * tree-dfa.c (remove_phi_arg_num): Don't update PHI_ARG_CAPACITY.
186 2003-10-02 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
188 Merge from tree-ssa-branch (tree-ssa-cfg-merge-20031001)
190 2003-08-18 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
192 * gimplify.c (gimplify_loop_expr): Place the exit label correctly.
193 (annotate_stmt_with_file_line): Don't assign lines to artificial
195 * toplev.c (rest_of_decl_compilation): Ensure correct line number is
196 reported for invalid register name error.
197 * tree-cfg.c: Update comment on general shape of cfg.
198 (remove_bb): Ensure correct line number is reported for unreachable
201 2003-08-17 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
203 * version.c (version_string): Update.
205 2003-08-16 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
207 * basic-block.h (EDGE_CONSTRUCT_ENTRY): New.
208 * cfg.c (dump_edge_info): Add name for EDGE_CONSTRUCT_ENTRY flag.
209 * tree-cfg.c (remove_stmt, bsi_remove): Get basic block from argument
210 rather than from bb_for_stmt.
211 (remove_useless_stmts_and_vars): Export.
212 (make_edges): Mark edges with EDGE_CONSTRUCT_ENTRY.
213 (tree_redirect_edge_and_branch): Refuse to redirect abnormal edges.
215 (cleanup_tree_cfg): Don't call remove_useless_stmts_and_vars.
216 (tree_merge_blocks): Handle phi nodes.
217 (tree_verify_flow_info): Add checks for phi nodes.
218 (dump_block_tree): Dump variables.
219 (tree_forwarder_block_p): Fail if successor is EDGE_CONSTRUCT_ENTRY,
220 or if block contains phi nodes.
221 (thread_jumps): Handle phi nodes.
222 (merge_seq_blocks): Don't merge with construct entry.
223 * tree-dfa.c (add_vdef): Export.
224 (virtual_op_p): Split off add_stmt_operand.
225 (add_stmt_operand): Use it.
226 * tree-flatten.c (tree_flatten_statement): Don't record BIND_EXPRs
228 (compact_to_block): Use EDGE_CONSTRUCT_ENTRY flag.
229 * tree-flow.h (remove_useless_stmts_and_vars, add_vdef,
230 virtual_op_p, fixup_var_scope): Declare.
231 * tree-optimize.c (optimize_function_tree): Enable dce.
232 * tree-ssa-copyprop.c (fixup_var_scope): Split off propagate_copy.
233 (propagate_copy): Use it.
234 * tree-ssa-dce.c: Disable removal of dead conditionals. Enable rest.
235 * tree-ssa-dom.c (optimize_stmt): Use fixup_var_scope.
236 * tree-ssa.c (rewrite_out_of_ssa): Call remove_useless_stmts_and_vars.
237 * tree.c (resize_phi_node): Zero new elements.
239 2003-08-14 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
241 * Makefile.in (tree-flatten.o): Add.
242 * basic-block.h (struct basic_block_def): Head_tree_p and
243 end_tree_p replaced with head_tree and end_tree.
244 (BB_CONTROL_EXPR, BB_LOOP_CONTROL_EXPR): Removed.
245 (tidy_fallthru_edges): Hookized.
247 * bitmap.c (bitmap_first_set_bit, bitmap_last_set_bit): Prevent
248 warning when loop header copying is not done.
249 * c-call-graph.c (construct_call_graph): Disable cfg statistics.
250 * c-decl.c (c_expand_body_1): Ask for creation of loop notes.
251 * c-simplify.c (gimplify_c_loop): Emit the loop in a better shape.
252 * cfg.c (dump_edge_info): Add loop_exit flag.
254 * cfghooks.h (struct cfg_hooks): Add cfgh_tidy_fallthru_edges.
255 (tidy_fallthru_edges): New macro.
256 * cfgloop.h (create_loop_notes): Declare.
257 * cfgloopmanip.c (create_loop_notes): New.
258 * cfgrtl.c (tidy_fallthru_edges): Renamed to rtl_tidy_fallthru_edges.
259 * except.c (resolve_fixup_regions): Fix.
260 * explow.c (probe_stack_range): Don't emit loop notes when they are
262 * expr.c (emit_block_move_via_loop): Ditto.
263 * function.h (struct function): New flag recreate_loop_notes.
264 * gimplify.c (build_and_jump): Exported.
265 (gimplify_loop_expr): Lower LOOP_EXPRs.
266 * integrate.c (copy_decl_for_inlining): Reset DECL_TOO_LATE.
267 * toplev.c (rest_of_compilation): Recreate loop notes.
268 * tree-alias-common.c (create_alias_vars): Work over cfg.
269 * tree-cfg.c: Almost completely rewritten.
270 * tree-flatten.c: New.
271 * tree-flow-inline.h (parent_block, parent_stmt): Removed.
272 (bsi_end_p, bsi_next bsi_stmt_ptr, bsi_stmt, bsi_container,
273 tsi_from_bsi): Rewritten.
274 (FOR_EACH_BSI_IN_REVERSE): Removed.
275 (FOR_EACH_STMT_IN_REVERSE): Rewritten.
276 * tree-flow.h (enum tree_container_note, enum block_tree_type): New.
277 (struct tree_container, tree_cell, struct block_tree): New.
278 (block_tree, no_bb_for_stmt): Declare variables.
279 (struct var_ann_d): Add scope field.
280 (struct stmt_ann_d): Removed parent_stmt and
281 reachable_exception_handlers fields. Added case_edge field.
282 (parent_stmt, parent_block): Removed.
283 (struct bb_ann_d): Added block field.
284 (bti_start, bti_end_p, bti_next): Declare.
285 (block_stmt_iterator): Modified.
286 (bsi_container, bsi_from_tsi, is_loop_stmt, loop_body, set_loop_body,
287 insert_bb_before, is_latch_block_for, remove_useless_stmts_and_vars):
289 (bsi_cell, debug_tree_bb_n, dump_cfg_function_to_file,
290 block_tree_free, tree_move_block_after, tree_split_block,
291 tree_cleanup_block_edges, assign_vars_to_scopes, build_new_label,
292 tree_cell_alloc, tree_flatten_statement, tree_unflatten_statements):
294 (tree_block_label): New.
295 (build_tree_cfg, cleanup_tree_cfg, propagate_copy): Declaration changed.
296 * tree-optimize.c (optimize_function_tree): Create cfg the new way.
298 * tree-pretty-print.c (dump_block_info): Modified.
299 * tree-simple.c (is_gimple_stmt): Remove LOOP_EXPR.
300 * tree-simple.h (build_and_jump): Declare.
301 * tree-ssa-ccp.c (tree_ssa_ccp): Modified.
302 * tree-ssa-copyprop.c (get_common_scope, move_var_to_scope): New.
303 (copyprop_stmt, propagate_copy): Use them.
304 (tree_ssa_copyprop): Modified.
305 * tree-ssa-dce.c: Disabled.
306 * tree-ssa-dom.c (tree_ssa_dominator_optimize, optimize_block):
308 (optimize_stmt): Update scope of variables.
309 * tree-ssa-live.c (build_tree_conflict_graph): Modified.
310 * tree-ssa-pre.c (finalize_1, tree_perform_ssapre): Modified.
311 * tree-ssa.c (delete_tree_ssa, rewrite_into_ssa,
312 rewrite_out_of_ssa): Modified.
313 (remove_annotations_r): Removed.
315 2003-08-13 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
317 * Changelog.tree-ssa-cfg: New.