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