aboutsummaryrefslogtreecommitdiff
path: root/gcc/ChangeLog.vta
blob: 9c27274ce3edf9fb434c42c06c2b3851d071d556 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* expr.c (expand_expr_real_1): Reject debug exprs.
	* cfgexpand.c (floor_sdiv_adjust): New fn.
	(ceil_sdiv_adjust): New fn.
	(ceil_udiv_adjust): New fn.
	(round_sdiv_adjust): New fn.
	(round_udiv_adjust): New fn.
	(expand_debug_expr): New fn.
	(expand_gimple_basic_block): Handle debug stmts.
	* cfgrtl.c (rtl_block_ends_with_call_p): Ignore debug insns.
	* rtl.h (DEBUG_INSN_P): New macro.
	(MAY_HAVE_DEBUG_INSNS): New macro.
	(INSN_P): Accept debug insns.
	(RTX_FRAME_RELATED_P): Likewise.
	(INSN_DELETED_P): Likewise.
	(PAT_VAR_LOCATION_DECL): New macro.
	(PAT_VAR_LOCATION_LOC): New macro.
	(NOTE_VAR_LOCATION_DECL): Reimplement.
	(NOTE_VAR_LOCATION_LOC): Likewise.
	(NOTE_VAR_LOCATION_STATUS): Likewise.
	(INSN_VAR_LOCATION): New macro.
	(INSN_VAR_LOCATION_DECL): Likewise.
	(INSN_VAR_LOCATION_LOC): Likewise.
	(INSN_VAR_LOCATION_STATUS): Likewise.
	(gen_rtx_UNKNOWN_VAR_LOC): New macro.
	(VAR_LOC_UNKNOWN_P): New macro.
	(SCHED_GROUP_P): Accept debug insns.
	(emit_debug_insn_before): Declare.
	(emit_debug_insn_before_noloc): Likewise.
	(emit_debug_insn_before_setloc): Likewise.
	(emit_debug_insn_after): Likewise.
	(emit_debug_insn_after_noloc): Likewise.
	(emit_debug_insn_after_setloc): Likewise.
	(emit_debug_insn): Likewise.
	(make_debug_insn_raw): Likewise.
	* recog.c (verify_changes): Accept debug insns.
	(extract_insn): Handle them.
	(peephole2_optimize): Skip them.
	* dce.c (deletable_insn_p): Handle debug insns.
	* reload1.c (reload): Don't scan subregs in debug insns.
	(eliminate_regs_in_insn): Handle debug insns.
	* cse.c (cse_insn): Handle debug insns.
	(cse_extended_basic_block): Likewise.
	(insn_live_p): Likewise.
	* emit-rtl.c (copy_rtx_if_shared_1): Handle debug insns.
	(reset_used_flags): Likewise.
	(set_used_flags): Likewise.
	(active_insn_p): Exclude debug insns.
	(make_debug_insn_raw): New fn.
	(emit_insn_before_noloc): Handle debug insns.
	(emit_jump_insn_before_noloc): Likewise.
	(emit_call_insn_before_noloc): Likewise.
	(emit_debug_insn_before_noloc): New fn.
	(emit_insn_after_noloc): Handle debug insns.
	(emit_jump_insn_after_noloc): Likewise.
	(emit_call_insn_after_noloc): Likewise.
	(emit_debug_insn_after_noloc): New fn.
	(emit_debug_insn_after_setloc): New fn.
	(emit_debug_insn_after): New fn.
	(emit_debug_insn_before_setloc): New fn.
	(emit_debug_insn_before): New fn.
	(emit_insn): Handle debug insn.
	(emit_debug_insn): New fn.
	(emit_jump_insn): Handle debug insn.
	(emit_call_insn): Likewise.
	(emit): Likewise.
	(emit_copy_of_insn_after): Likewise.
	* reg-stack.c (subst_stack_regs_pat): Handle var location rtx.
	* var-tracking.c (MO_LOC_MAIN, MO_LOC_USE): New micro ops.
	(var_reg_decl_set): New fn.
	(var_reg_set): Adjust.
	(var_mem_decl_set): New fn.
	(var_mem_set): Adjust.
	(use_type): New fn.
	(count_uses, add_uses, add_stores): Adjust.
	(compute_bb_dataflow): Handle new micro ops.
	(emit_notes_in_bb): Likewise.
	(vt_initialize): Likewise.
	(delete_debug_insns): New fn.
	(vt_debug_insns_local): New fn.
	(variable_tracking_main): Call it.
	* final.c (get_attr_length_1): Handle debug insns.
	* lower-subreg.c (adjust_decomposed_uses): New fn.
	(resolve_debug): New fn.
	(decompose_multiword_subregs): Handle debug insns.
	* print-rtl.c (print_rtx): Likewise.
	* ifcvt.c (first_active_insn): Skip debug insns.
	(last_active_insn): Likewise.
	(cond_exec_process_insns): Handle debug insns.
	(check_cond_move_block): Likewise.
	(cond_move_convert_if_block): Likewise.
	(block_jumps_and_fallthru_p): Likewise.
	(dead_or_predicable): Likewise.
	* cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
	* combine.c (create_log_links): Skip debug insns.
	(combine_instructions): Likewise.
	(rtx_subst_pair): New struct.
	(propagate_for_debug_subst): New fn.
	(propagate_for_debug): New fn.
	(try_combine): Call it.
	(distribute_links): Handle debug insns.
	* df-problems.c (df_lr_bb_local_compute): Likewise.
	(df_set_note): Reject debug insns.
	(df_set_dead_notes_for_mw): Add added_notes_p argument.
	(df_note_bb_compute): Handle debug insns.
	(df_simulate_uses): Likewise.
	(df_simulate_one_insn_forwards): Likewise.
	(df_simulate_one_insn_backwards): Likewise.
	* df-scan.c (df_insn_rescan_1): Renamed with new argument, from...
	(df_insn_rescan): ... this.  Implement in terms of new name.
	(df_insn_rescan_debug_internal): New fn.
	(df_uses_record): Handle debug insns.
	* haifa-sched.c (contributes_to_priority_p): Likewise.
	(nondebug_dep_list_size): New fn.
	(priority, add_jump_dependencies): Use it.
	(rank_for_schedule): Handle debug insns.
	(schedule_block): Always accept more debug insns.
	* local-alloc.c (block_alloc): Handle debug insns.
	* regrename.c (replace_oldest_value_reg): ??? Test without this
	(replace_oldest_value_addr): Handle debug insns.
	(replace_oldest_value_mem): Likewise.
	(copyprop_hardreg_forward_1): Likewise.
	* regstat.c (regstat_init_n_sets_and_refs): Skip debug uses.
	(regstat_bb_compute_ri): Skip debug insns.
	* sched-rgn.c (add_branch_dependences): Likewise.
	* sched-vis.c (print_pattern): Handle debug insns.
	* regmove.c (optimize_reg_copy_1): Don't count debug insns.
	(fixup_match_2): Likewise.
	(regmove_optimize): Handle debug insns.
	(fixup_match_1): Don't count debug insns.  Adjust them.
	* gcse.c (allolc_gcse_mem): Don't allocate uid for debug isnsn.
	(bypass_conditional_jumps): Skip debug insns.
	(compute_ld_motion_mems): Likewise.
	* sched-deps.c (sched_analyze_2): Handle debug insns.
	(sched_analyze_insn): Likewise.
	(sched_analyze): Likewise.
	* init-regs.c (initialize_uninitialized_regs): Skip debug insns.
	* dse.c (scan_insn): Keep debug insns.
	* resource.c (mark_target_live_regs): Skip debug insns.
	* rtlanal.c (canonicalize_condition): Likewise.
	* df.h (df_insn_rescan_debug_internal): Declare.
	* dwarf2out.c (mem_loc_descriptor): Ignore sign and zero extend.
	(loc_descriptor): Likewise.
	* function.c (instantiate_virtual_regs): Handle debug insns.
	* rtl.def (DEBUG_INSN): New rtl code.
	* cfgbuild.c (inside_basic_block_p): Handle debug insns.
	(control_flow_insn_p): Likewise.
	* cfglayout.c (duplicate_insn_chain): Likewise.

2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* tree-inline.c (processing_debug_stmt_p): New variable.
	(remap_decl): Register variables only while not processing debug
	statements.
	(copy_body_r): Enqueue debug statements for later processing.
	(copy_bb): Skip debug statements.
	(copy_edges_for_bb): Likewise.
	(copy_debug_stmt): New fn.
	(copy_debug_stmts): New fn.
	(copy_generic_body, copy_body): Call it.
	(setup_one_parameter): Insert debug notes for inlined parms.
	(estimated_num_insns_1): Handle debug stmts.
	(optimize_inline_calls): Initialize debug stmt queue.
	(tree_function_versioning): Likewise.
	* tree-into-ssa.c (mark_def_sites): Handle debug stmts.
	(var_debug_value_for_decl): New fn.
	(adjust_debug_stmts_for_var_def_move): New fn.
	(adjust_debug_stmts_for_move): New fn.
	(check_debug_predicate): New struct.
	(check_and_update_debug_stmt_1): New fn.
	(check_and_update_debug_stmt): New fn.
	(insert_phi_nodes_for): Introduce debug stmts for phi nodes.
	(rewrite_stmt): Likewise, for SSA defs.
	(mark_use_interesting): Handle debug stmts.
	(prepare_block_for_update): Likewise.
	* tree.c (build_var_debug_value_stat): New fn.
	(empty_body_p): Handle debug stmts.
	* tree.def (VAR_DEBUG_VALUE): New tree code.
	* tree.h (VAR_DEBUG_VALUE_SET_VAR): New macro.
	(VAR_DEBUG_VALUE_VAR): Likewise.
	(VAR_DEBUG_VALUE_VALUE): Likewise.
	(IS_DEBUG_STMT): Likewise.
	(MAY_HAVE_DEBUG_STMTS): Likewise.
	(VAR_DEBUG_VALUE_NOVALUE): Likewise.
	(build_var_debug_value_stat): Declare.
	(build_var_debug_value): New macro.
	(var_debug_value_for_decl): Declare.
	* tree-gimple.c (is_gimple_stmt): Handle debug stmts.
	* tree-ssa-operands.c (opf_debug_use): New flag.
	(get_expr_operands): Handle debug stmts.  Don't mark objects
	addressed in debug stmts as addressable.
	(parse_ssa_operands): Handle debug stmts.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-ssa-dce (mark_stmt_if_obviously_necessary): Likewise.
	(necessary_p): New function.
	(eliminate_unnecessary_stmts): Handle debug stmts.
	* tree-ssa-propagate.c (get_rhs): Likewise.
	* tree-ssa.c (verify_ssa): Likewise.
	(execute_early_warn_uninitialized): Likewise.
	* tree-ssa-live.c (remove_unused_locals): Likewise.
	(set_var_live_on_entry): Likewise.
	* tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
	* tree-flow-inline.h (has_zero_uses): Ignore uses in debug stmts.
	(has_single_use): Likewise.
	(single_imm_use): Likewise.
	(num_imm_uses): Likewise.
	(bsi_next_nondebug): New fn.
	(bsi_prev_nondebug): Likewise.
	(bsi_start_nondebug): Likewise.
	(bsi_last_nondebug): Likewise.
	* tree-ssa-phiopt.c (empty_block_p): Ignore debug stmts.
	* tree-ssa-sink.c (all_immediate_uses_same_place): Likewise.
	(nearest_common_dominator_of_uses): Check for debug stmts.
	(statement_sink_location): Handle debug stmts.
	* tree-ssa-threadedge.c
	(record_temporary_equivalences_from_stmts): Skip debug stmts.
	* tree-ssa-threadupdate.c (redirection_block_p): Ignore them.
	* tree-cfgcleanup.c (tree_forwarder_block_p): Likewise.
	* tree-outof-ssa.c (replace_use_variable): Don't clear.
	(analyze_edges_for_bb): Handle debug stmts.
	* tree-cfg.c (first_stmt): Skip debug stmts.
	(last_stmt): Likewise.
	(last_and_only_stmt): Likewise.
	(verify_expr): Verify debug value.
	(tree_block_ends_with_call_p): Skip debug stmts.
	* tree-flow.h (bsi_next_nondebug): Declare.
	(bsi_prev_nondebug): Likewise.
	(bsi_start_nondebug): Likewise.
	(bsi_last_nondebug): Likewise.
	(adjust_debug_stmts_for_move): Likewise.
	(adjust_debug_stmts_for_var_def_move): Likewise.
	(check_and_update_debug_stmt): Likewise.
	* tree-ssa-reassoc.c (linearize_expr): Adjust debug stmts.
	(linearize_expr_tree): Likewise.
	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Skip debug
	stmts.
	* tree-ssa-ter.c (find_replaceable_in_bb): Likewise.
	* tree-ssa-loop-ivopts.c (find_interesting_uses_stmt): Likewise.
	(remove_unused_ivs): Adjust debug stmts.
	* tree-ssa-loop-im.c (rewrite_bittest): Likewise.
	(move_computations_stmt): Likewise.
	* tree-ssanames.c (release_ssa_name): Likewise.
	* tree-ssa-alias.c (find_used_portions): Handle debug exprs.
	* tree-ssa-structalias.c (compute_points_to_sets): Ignore debug
	stmts.
	* tree-tailcall.c (find_tail_calls): Handle debug stmts.
	* tree-vrp.c (find_assert_locations): Likewise.
	* tree-ssa-coalesce.c (build_ssa_conflict_graph): Likewise.
	(create_outofssa_var_map): Likewise.
	* tree-ssa-forwprop.c (forward_propagate_addr_expr): Handle debug
	stmts.
	* tree-ssa-pre.c (compute_avail): Skip debug stmts.
	* tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Likewise.
	(check_loop_closed_ssa_stmt): Likewise.
	* tree-inline.h (copy_body_data): Add debug_stmts queue.
	* ipa-pure-const.c (scan_function): Skip debug stmts.
	* ipa-reference.c (scan_for_static_refs): Likewise.
	* ipa-type-escape.c (scan_for_refs): Likewise.
	* tree-stdarg.c (execute_optimize_stdarg): Likewise.

2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* common.opt (fvar-tracking-assignments): New.
	* doc/invoke.texi: Document it.
	* toplev.c (flag_var_tracking_assignments): New.
	(process_options): Choose its default.

2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.

2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* tree-inline.c (self_inlining_addr_expr): Delete.
	(setup_one_parameter): Drop fn argument.  Adjust callers.
	Don't short-circuit optimization of declarations.

2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* ifcvt.c (noce_process_if_block): Try to handle only the then
	block if the else block exists but isn't suitable.

2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* gcse.c (hash_scan_set): Insert set in insn before note at
	the end of basic block.

2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	PR tree-optimization/33572
	* tree-cfg.c (verify_stmts): Check for missing PHI defs.
	* tree-inline.c (update_ssa_across_eh_edges): Renamed to...
	(update_ssa_across_abnormal_edges): ... this.  Set slots in the
	return PHI node.
	(copy_edges_for_bb): Handle nonlocal label edges.
	(make_nonlocal_label_edges): Deleted.
	(optimize_inline_calls): Don't call it.

2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* tree-ssa-copyrename.c (copy_rename_partition_coalesce):
	Permit coalescing of user variables.

2007-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* tree-ssa-live.c (remove_unused_scope_block_p): Don't change
	generated code depending on -g.  Reverts part of 2007-07-26's
	patch.

Local Variables:
mode: change-log
change-log-default-name: "ChangeLog.vta"
End: