1 2005-02-06 Daniel Berlin <dberlin@dberlin.org>
3 * tree-ssa-alias.c (push_fields_onto_typestack): Add bitpos_of_field
6 2005-01-12 Daniel Berlin <dberlin@dberlin.org>
8 * tree-ssa-alias.c (setup_pointers_and_addressables):
9 Structure fields need underlying type tags too.
10 Also don't unmark addressable on a structure unless it's fake
11 variables are not addressed.
12 (group_aliases): Must also deal with struct fields here.
13 (add_pointed_to_var): Don't forget the subvars in addresses_needed.
14 (push_fields_on_to_fieldstack): Should have been else if, not just if.
15 (create_overlap_variables_for): Experiment with some other heuristics.
16 * tree-ssa-operands.c (note_addressable): Var can be null.
17 Return early if we handled the component_ref.
19 2005-01-08 Daniel Berlin <dberlin@dberlin.org>
21 * tree-flow-inline.h (ref_contains_array_ref): Move from
23 (lookup_subvars_for_var): Ditto. Rewrite to use variable
25 (get_subvars_for_var): Ditto on moving.
26 (okay_component_ref_for_subvars): New function.
27 * tree-flow.h (subvar_t): Move from tree-ssa-alias.c.
28 (struct subvar): Ditto.
29 (struct var_ann_d): Add subvars field.
30 (get_subvars_for_var): Replaces get_fake_vars_for_var.
31 (get_fake_vars_for_component_ref): Removed.
32 * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Use new
33 functions, iterate through subvars list.
34 (setup_pointers_and_addressables): Ditto.
35 (maybe_create_global_var): Ditto.
36 (add_pointed_to_var): Ditto.
37 * tree-ssa-operands.c (get_expr_operands): Ditto.
38 (note_addressable): Ditto.
40 2004-12-22 Daniel Berlin <dberlin@dberlin.org>
42 * tree-ssa-alias.c (fieldoff_t): Make offset HOST_WIDE_INT.
43 (used_part_t): New structure.
44 (used_portions): New array.
45 (get_or_create_used_part_for): New function.
46 (create_overlap_variables_for): Use used_portions to decide
47 what fields we need fake variables for.
48 (find_used_portions): New function.
49 (old_referenced_vars): New variable.
50 (create_structure_vars): Find used portions of structures
51 before creating overlap variables.
53 2004-12-20 Daniel Berlin <dberlin@dberlin.org>
55 * tree-flow.h (get_fake_vars_for_component_ref): Update prototype.
56 * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Move
57 add_may_alias to else clause.
58 (add_pointed_to_var): Add comment.
59 (push_fields_onto_fieldstack): Ditto.
61 (var_subvar_hash): Ditto.
62 (subvars_for_var): Ditto.
63 (var_subvar_free): Ditto.
64 (var_subvar_eq): Ditto.
65 (ref_contains_array_ref): Ditto.
66 (get_fake_vars_for_component_ref): Ditto.
67 (create_structure_vars): Ditto.
68 (lookup_subvars_for_var): Ditto.
69 (get_subvars_for_var): Ditto.
70 (create_overlap_variables_for): Ditto.
71 Fix bug in cleanup when we return false.
72 (get_fake_vars_for_component_ref): Add argument, okay_for_killdef.
73 Set it based on whether we have overlaps or conservative answers.
75 * tree-ssa-operands.c (finalize_ssa_v_must_defs): Comment out
77 (build_ssa_operands): COMPONENT_REF's are now presumptively
79 (get_expr_operands): Don't use & ~opf_kill_def all the time.
80 If okay_for_killdef, don't clear opf_kill_def, but if not okay, or
83 2004-12-19 Daniel Berlin <dberlin@dberlin.org>
85 * tree-ssa-alias.c: Include vec.h.
86 (get_fake_vars_for_var): New function.
87 (get_fake_vars_for_component_ref): Ditto.
88 (compute_flow_insensitive_aliasing): Use get_fake_vars_for_var.
89 (setup_pointers_and_addressables): Ditto here.
90 (add_pointed_to_var): If we were really passed a component ref,
91 try to get a set of fake variables from it.
92 Otherwise, make sure to include all the approriate fake variables
93 into the pointed-to set.
94 (bitpos_of_field): New function.
95 (push_fields_onto_fieldstack): Ditto.
96 (var_subvar_hash): Ditto.
97 (var_subvar_free): Ditto.
98 (var_subvar_eq): Ditto.
99 (lookup_subvars_for_var): Ditto.
100 (get_subvars_for_var): Ditto.
101 (create_overlap_variables_for): Ditto.
102 (create_structure_vars): Ditto.
103 (ref_contains_array_ref): Ditto.
104 (pass_create_structure_vars): New structure.
105 * tree-flow.h (get_fake_vars_for_component_ref): Prototype.
106 (get_fake_vars_for_var): Ditto.
107 (mem_tag_kind): Add STRUCT_FIELD.
108 * tree-ssa-operands.c (note_addressable): Add fake vars into
110 (get_expr_operands): Add fake variables when we add regular
113 2004-11-18 Daniel Berlin <dberlin@dberlin.org>
115 * tree-ssa-structalias.c: Rewrite to use real offsets, instead of
117 * tree-optimize.c (init_tree_optimization_passes): Uncomment calls
118 to build_pta and del_pta.
120 2004-09-30 Daniel Berlin <dberlin@dberlin.org>
122 * tree-ssa-loop-ivopts.c (rewrite_use_address): Mark new variables
124 (tree_ssa_iv_optimize): Call rewrite_into_ssa and
125 rewrite_into_loop_closed_ssa.
126 * tree-ssa-operands.c (add_stmt_operand): We don't want to deal
127 with type tags. Add support for trying to find partial use/def
129 * tree-into-ssa.c (rewrite_stmt): Call
130 get_intersecting_reaching_def for partial uses.
131 (ssa_rewrite_stmt): Ditto.
132 (rewrite_operand): Inlined into caller and removed.
133 (find_may_def_for_use): New function.
134 (find_must_def_for_use): Ditto.
135 (find_partial_def_for_use): Ditto.
136 * tree-ssa-structalias.c (process_unification_queue): Fix bug in
137 determing whether variable merging changed the solution.
138 Print out names being unified.
139 (get_constraint_for_component_ref): Update for integer_id.
140 (get_constraint_for): Assignments from integers now get
141 the INTEGER constraint.
142 (create_alias_vars): Mark var_readonly as address taken.
143 Add in integer constraint.
144 (alias_get_name):Call alias_get_name, not get_name, to
145 get ssa variable name, since alias_get_name knows
146 what to do with unnamed variables.
148 2004-09-29 Daniel Berlin <dberlin@dberlin.org>
150 * tree-ssa-ccp.c (substitute_and_fold): Don't try to access
151 operand 1 of non-MODIFY_EXPR stmts.
152 * version.c: Note that this is the structure aliasing branch
154 2004-09-27 Daniel Berlin <dberlin@dberlin.org>
156 * tree-flow-inline.c: gcc_assertify.
157 * tree-ssa-ccp.c (substitute_and_fold): Mark new vars
158 if RHS is handled component as well.
160 2004-09-26 Daniel Berlin <dberlin@dberlin.org>
162 * tree-flow-inline.h (get_vuse_offset_ptr): New.
163 (get_vuse_size_ptr): New.
164 (get_vuse_op_ptr): Modify for vuse operand type change.
165 (op_iter_init_tree): Fix comment.
166 (op_iter_next_partuse): New function.
167 (op_iter_init_partuse): Ditto.
168 * tree-pretty-print.c (dump_vops): Use new partuse iterator
169 to get offset and size info for vuses.
170 * tree-ssa-operands.c (build_vuses_offset): New array.
171 (build_vuses_size): New array.
172 (allocate_vuse_optype): Modify to use vuse_operand_type_t.
173 (init_ssa_operands): Init new arrays.
174 (fini_ssa_operands): Free new arrays.
175 (finalize_ssa_vuses): Rewrite to handle size and offset info as
177 (append_vuse): Take offset and size now as well.
178 Push onto new arrays.
179 (add_stmt_operand): Do partial uses here.
180 (copy_virtual_operands): Copy offset and size for vuse as well.
181 (create_ssa_artficial_load_stmt): Modify to append vuse offset
182 and size from the may_def result and size.
183 * tree-ssa-operands.h (VUSE_OFFSET_PTR): New macro.
184 (VUSE_OFFSET): Ditto.
185 (SET_VUSE_OFFSET): Ditto.
186 (VUSE_SIZE_PTR): Ditto.
188 (SET_VUSE_SIZE): Ditto.
189 (vuse_operand_type): New structure.
190 (vuse_optype_d): Use it.
191 (FOR_EACH_SSA_PARTUSE_OPERAND): New macro.
193 2004-09-19 Daniel Berlin <dberlin@dberlin.org>
195 * tree-ssa-ccp.c (substitute_and_fold): Changing some piece
196 of a handled component may now change the v_may_def.
197 * tree-ssa-operands.c (fini_ssa_operands):
198 Free offset and size arrays too.
199 (add_stmt_operand): Use get_inner_reference to determine offset
200 and size when possible.
201 * tree-ssa.c: Add vd_pair_pool.
202 (init_tree_ssa): Alloc vd_pair pool.
203 (delete_tree_ssa): Free vd_pair pool.
204 * tree-ssa-structlias.c: Update for TREE_CODE_CLASS change.
206 2004-09-15 Daniel Berlin <dberlin@dberlin.org>
208 * Makefile.in (TREE_FLOW_H): Add vec.h.
209 * tree-flow.h: Include vec.h.
210 (var_def_pair): New struct.
211 (register_new_def): update prototype.
212 * tree-into-ssa.c (rewrite_block_data): Use a vector of vd_pair_t.
213 (rewrite_initialize_block_local_date): Use vector function for
215 (rewrite_initialize_block): Pass new parameter to register_new_def.
216 (rewrite_stmt): Ditto.
217 (ssa_register_new_def): Removed.
218 (ssa_rewrite_initialize_block): Use register_new_def.
219 (ssa_rewrite_stmt): Ditto.
220 (rewrite_finalize_block): Rewrite to use new block_defs vector.
221 (ssa_rewrite_finalize_block): Removed.
222 (register_new_def): Take new parameter, rewrite to use
224 * tree-ssa-dom.c (struct dom_block_walk_data): Use a vector
226 (restore_currdefs_to_original_value): Update for vector use.
227 (register_definitions_for_stmt): Ditto.
228 (dom_opt_initialize_block_local_data): Ditto.
229 (dom_opt_finalize_block): Ditto.
230 (thread_across_edge): Pass new parameter to register_new_def.
232 2004-09-12 Daniel Berlin <dberlin@dberlin.org>
234 * Makefile.in (tree-ssa-structalias.o): New file.
235 (tree-ssa-structalias.o): New.
236 * tree-optimize.c (init_tree_optimization_passes): Add build_pta,
238 * tree-pass.h (pass_build_pta, pass_del_pta): New.
239 * tree-ssa-structalias.c: New file.
240 * tree-ssa-structalias.h: Ditto
241 * tree-ssa-operands.c (append_v_may_def): Use unsigned int, not
242 unsigned HOST_WIDE_INT, for now.
244 2004-09-02 Daniel Berlin <dberlin@dberlin.org>
246 * tree-flow-inline.h (get_v_may_def_offset_ptr): New function.
247 (get_v_may_def_size_ptr): Ditto.
248 (op_iter_next_maydef): Add size and offset.
249 (op_iter_init_maydef): Ditto.
250 * tree-into-ssa.c (mark_def_sites): Ditto.
251 * tree-pretty-print.c (dump_vops): Ditto.
252 * tree-ssa-operands.c (build_v_may_defs_offset): New.
253 (build_v_may_defs_size): Ditto.
254 (init_ssa_operands): Init new varrays.
255 (finalize_ssa_v_may_defs): Compare/set offset and size too.
256 (finalize_ssa_vuses): Pop new arrays.
257 (start_ssa_stmt_operands): Check new arrays.
258 (append_v_may_def): Handle offset and size.
259 (add_stmt_operand): Pass offset and size to append_v_may_def.
260 (copy_virtual_operands): Copy offset and size.
261 * tree-ssa-operands.h (v_may_def_operand_type): Add offset and
263 (V_MAY_DEF_OFFSET_PTR): New macro.
264 (V_MAY_DEF_OFFSET): Ditto.
265 (V_MAY_DEF_SIZE_PTR): Ditto.
266 (V_MAY_DEF_SIZE): Ditto.
267 (FOR_EACH_SSA_MAYDEF): Modify to give caller offset and size.