* tree-cfg.c (struct control): Add fields artificial_label, fa_then
[official-gcc.git] / gcc / ChangeLog.tree-ssa-cfg
blobdd276e1547054e009e4da7a009bb2fb4169428a2
1 2003-10-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
3         * tree-cfg.c (struct control): Add fields artificial_label, fa_then
4         and fa_else.
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
8         CONTINUE_EXPR.
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
42         containers.
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
46         field.
47         (struct bb_ann_d): Add GTY tag.
48         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Don't free
49         redirection_targets.
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
56         correctly.
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
61         creation.
62         (split_critical_edges): Enable.
63         (tree_perform_ssapre): Reenable ggc_collect. Don't allow dominators
64         rebuilding.
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.
73         (expand_vars): New.
74         (lower_function_body, lower_bind_expr): Use it.
75         * tree-alias-common.c (create_alias_vars): Iterate over block tree
76         instead of bti.
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
81         initialization.
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
97         for dom_children.
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
127         lowering.
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.
131         (CASE_START): New.
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
139         lowered.
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
146         true and false.
147         * tree-flatten.c (tree_flatten_statement): Assume COND_EXPRs are
148         lowered.
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>
154         * gimple-low.c: New.
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):
166         Declare.
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
194         gotos.
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
199         basic block.
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.
214         Update phi nodes.
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
227         with no variables.
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.
246         (dump_cfg): Declare.
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.
253         (dump_cfg): New.
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
261         recreated.
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):
288         Declaration removed.
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):
293         Declare.
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.
297         Disable dce.
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):
307         Modified.
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.