* basic-block.h (struct basic_block_def): Add GTY tags.
[official-gcc.git] / gcc / ChangeLog.tree-ssa-cfg
blob91737bfd42ee10de88df5c3d501a6628f49e52a3
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
14         containers.
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
18         field.
19         (struct bb_ann_d): Add GTY tag.
20         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Don't free
21         redirection_targets.
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
28         correctly.
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
33         creation.
34         (split_critical_edges): Enable.
35         (tree_perform_ssapre): Reenable ggc_collect. Don't allow dominators
36         rebuilding.
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.
45         (expand_vars): New.
46         (lower_function_body, lower_bind_expr): Use it.
47         * tree-alias-common.c (create_alias_vars): Iterate over block tree
48         instead of bti.
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
53         initialization.
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
69         for dom_children.
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
99         lowering.
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.
103         (CASE_START): New.
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
111         lowered.
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
118         true and false.
119         * tree-flatten.c (tree_flatten_statement): Assume COND_EXPRs are
120         lowered.
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>
126         * gimple-low.c: New.
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):
138         Declare.
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
166         gotos.
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
171         basic block.
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.
186         Update phi nodes.
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
199         with no variables.
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.
218         (dump_cfg): Declare.
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.
225         (dump_cfg): New.
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
233         recreated.
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):
260         Declaration removed.
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):
265         Declare.
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.
269         Disable dce.
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):
279         Modified.
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.