1 2008-03-03 Vladimir Makarov <vmakarov@redhat.com>
3 * ira-conflicts.c (allocno_conflict_p): Rename to
4 allocno_live_ranges_intersect_p.
5 (allocno_reg_conflict_p): Rename to
6 pseudo_live_ranges_intersect_p.
8 * ira-lives.c (high_pressure_start_point): New variable.
9 (update_allocno_pressure_excess_length): New function.
10 (make_regno_dead): Call it.
11 (set_allocno_live): Udpate high_pressure_start_point.
12 (clear_allocno_live, mark_reg_store, mark_reg_death): Ditto.
13 (process_bb_node_lives): Initialize high_pressure_start_point.
14 Consider only allocatable hard regs for liveness.
16 * ira-costs.c (record_reg_classes): Multiply cost by frequency.
17 Use half frequency when memory is allowed. Remove check for
18 prefferred small register classes of pseudo-registers.
19 (scan_one_insn): Continue processing operands for moves of
20 pseudo-registers with equivalence. Don't multiply cost by
22 (init_ira_costs): Use bigger initial cost value.
25 (allocno): New members somewhere_renamed_p and
26 excess_pressure_points_num.
27 (ALLOCNO_SOMEWHERE_RENAMED_P, ALLOCNO_EXCESS_PRESSURE_POINTS_NUM):
29 (allocno_reg_conflict_p): Rename to
30 pseudo_live_ranges_intersect_p.
31 (allocno_conflict_p): Rename to allocno_live_ranges_intersect_p.
33 * ira.h (sort_regnos_for_alter_reg, better_spill_reload_regno_p):
34 New function prototypes.
36 * ira-color.c (merge_allocnos): Remove mode check.
37 (coalesce_allocnos): Add parameter and modify to use it for
38 coalescing spilled allocnos.
39 (color_allocnos): Pass parameter to coalesce_allocnos.
40 (regno_coalesced_allocno_freq, regno_coalesced_allocno_num): New
42 (coalesced_pseudo_reg_compare, calculate_spill_cost,
43 sort_regnos_for_alter_reg, better_spill_reload_regno_p): New
45 (mark_allocation_change, allocno_reload_assign, reassign_pseudos
46 ): Use ALLOCNO_MEMORY_COST instead of ALLOCNO_UPDATED_MEMORY_COST.
47 (reuse_stack_slot): Use pseudo_live_ranges_intersect_p instead of
48 allocno_reg_conflict_p.
50 * ira-emit.c (set_allocno_somewhere_renamed_p): New function.
51 (renamed_regno_bitmap): New static variable.
52 (change_loop): Check register pressure for creating new pseudo.
53 Set up ALLOCNO_SOMEWHERE_RENAMED_P and renamed_regno_bitmap.
54 (ira_emit): Allocate/deallocate renamed_regno_bitmap.
55 Call set_allocno_somewhere_renamed_p.
57 * ira-build.c (ira_loops): Move to ira.c.
58 (create_allocno): Initialize ALLOCNO_SOMEWHERE_RENAMED_P and
60 (create_cap_allocno): Set up ALLOCNO_MEMORY_COST.
61 (check_and_add_conflicts): Use allocno_live_ranges_intersect_p
62 instead of allocno_conflict_p.
63 (ira_flattening): Check conflicts of allocno renamed somewhere
64 locally. Update ALLOCNO_EXCESS_PRESSURE_POINTS_NUM.
65 (ira_build): Move code for finding loops to ira.c.
66 (ira_destroy): Move code for freeing loops to ira.c.
68 * ira.c (setup_reg_class_intersect_union): Fix calculation of
70 (calculate_allocation_cost): Use ALLOCNO_MEMORY_COST instead of
71 ALLOCNO_UPDATED_MEMORY_COST.
72 (ira_loops): Move from ira-build.c.
73 (ira): Move code for finding and freeing loops from ira-build.c.
74 Don't use regional RA when there are too many loops.
76 * reload1.c (pseudo_reg_compare): Remove.
77 (reload): Use sort_regnos_for_alter_reg.
78 (hard_regno_to_pseudo_regno): New variable.
79 (count_pseudo): Set up hard_regno_to_pseudo_regno.
80 (order_regs_for_reload): Initialize hard_regno_to_pseudo_regno.
81 (count_spilled_pseudo): Update hard_regno_to_pseudo_regno.
82 (find_reg): Use better_spill_reload_regno_p. Check
83 hard_regno_to_pseudo_regno.
85 * cfgloopanal.c: Include params.h.
86 (estimate_reg_pressure_cost): Check number of loops.
88 * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
90 * params.h (IRA_MAX_LOOPS_NUM): New macro.
92 * Makefile.in (cfgloopanal.o): Add PARAMS_H.
94 * doc/invoke.texi (ira-max-loops-num): Describe.
96 2008-02-20 Vladimir Makarov <vmakarov@redhat.com>
98 * ira.h, ira-emit.c: Add year 2008 to the copyright.
101 (struct copy): Rename move_insn to insn.
102 (initiate_ira_assign, finish_ira_assign, debug_allocno_copies):
103 New function prototypes.
105 * ira-build.c: Add year 2008 to the copyright. Rename member
106 move_insn of the copies to insn.
107 (find_allocno_copy): New function.
108 (propagate_info_to_cap, add_allocno_copy): Use it.
109 (print_allocno_copies, debug_allocno_copies): New functions.
111 * ira-conflicts.c: Add year 2008 to the copyright. Rename member
112 move_insn of the copies to insn.
115 (setup_reg_class_intersect_union): Fix reg_class_union for cover
117 (ira): Call initiate_ira_assign and finish_ira_assign. Remove
118 setting reload_completed up.
120 * ira-costs.c: Add year 2008 to the copyright.
121 (ira_costs): Check modes of registers.
123 * ira-lives.c: Add year 2008 to the copyright.
124 (mark_reg_store, mark_reg_death, process_bb_node_lives): Don't use
126 (process_single_reg_class_operands): Check that the hard reg
127 belongs to the cover class.
129 * ira-color.c: Add year 2008 to the copyright. Rename member
130 move_insn of the copies to insn.
131 (initiate_cost_update, finish_cost_update, update_copy_costs_1):
133 (allocno_update_cost_check, update_cost_check): New static
135 (update_copy_costs): Increment update_cost_check. Call
137 (coalesce_allocnos): Don't coalesce already assigned allocnos or
138 copies with null insn.
139 (color_pass): Check loop tree node of the subloop allocno.
140 (finish_allocno_priorities): Remove.
141 (do_coloring): Move allocation/deallocation of
142 consideration_allocno_bitmap into initiate_cost_update and
144 (reassign_conflict_allocnos): Remove allocation/deallocation of
145 sorted_allocnos. Remove call of finish_allocno_priorities.
146 (reassign_pseudos): Remove allocation/deallocation of
147 consideration_allocno_bitmap and sorted_allocnos. Remove call of
148 finish_allocno_priorities.
149 (initiate_ira_assign, finish_ira_assign): New fucntions.
150 (ira_color): Remove allocation/deallocation of sorted_allocnos.
151 Call initiate_ira_assign and finish_ira_assign.
153 * postreload.c (gate_handle_postreload): Don't do post reload
154 optimizations unless the reload is completed.
156 * cfgloopanal.c (estimate_reg_pressure_cost): Return zero if we
159 * recog.c (peep2_free_reg_search_ofs): New static variable.
160 (peep2_find_free_register): Remove search_ofs. Use
161 peep2_free_reg_search_ofs instead of it.
162 (peephole2_optimize): Reset peep2_free_reg_search_ofs.
164 2008-01-10 Vladimir Makarov <vmakarov@redhat.com>
166 * reload1.c (compute_use_by_pseudos): Permits spilled registers in
168 (temp_pseudo_reg_arr): New variable.
169 (reload): Use instead temp_pseudo_reg_arr of pseudo_regs. Move
170 freeing to the function end. Don't clear spilled_pseudos for IRA.
171 Restore original insn chain for IRA.
172 (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
173 (count_pseudo, count_spilled_pseudo): Check spilled pseudos.
174 (alter_reg): Set up spilled_pseudos.
175 (finish_spills): Set up pseudo_previous_regs only for spilled
176 pseudos. Call reassign_pseudos once for all spilled pseudos,
177 pass more arguments. Don't clear live_throughout and dead_or_set
180 2008-01-10 Vladimir Makarov <vmakarov@redhat.com>
182 * reload1.c (compute_use_by_pseudos): Permits spilled registers in
184 (temp_pseudo_reg_arr): New variable.
185 (reload): Use instead temp_pseudo_reg_arr of pseudo_regs. Move
186 freeing to the function end. Don't clear spilled_pseudos for IRA.
187 Restore original insn chain for IRA.
188 (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
189 (count_pseudo, count_spilled_pseudo): Check spilled pseudos.
190 (alter_reg): Set up spilled_pseudos.
191 (finish_spills): Set up pseudo_previous_regs only for spilled
192 pseudos. Call reassign_pseudos once for all spilled pseudos,
193 pass more arguments. Don't clear live_throughout and dead_or_set
196 * global.c (reg_becomes_live, build_insn_chain): Don't ignore
197 spilled pseudos for IRA.
199 * caller-save.c (calculate_local_save_info,
200 save_call_clobbered_regs): Ignore spilled pseudos for IRA.
202 * toplev.c (backend_init_target): Call init_ira.
203 (backend_init): Move call of init_ira_once before
206 * ira.h (init_ira, sort_insn_chain, mark_memory_move_deletion):
207 New function prototypes.
208 (retry_ira_color): Rename to reassign_pseudos. Change
211 * ira-int.h (allocno): New member dont_reassign_p.
212 (ALLOCNO_DONT_REASSIGN_P): New macro.
213 (memory_move_cost): Change element type.
214 (register_move_cost): Change type.
215 (register_may_move_in_cost, register_may_move_out_cost,
216 reg_class_intersect): New arrays.
217 (important_class_nums): Fix element type.
218 (hard_reg_not_in_set_p): Make it static inline.
219 (init_register_move_cost, init_ira_costs): New function
221 (allocno_conflict_index): Remove.
222 (allocate_and_set_costs, allocate_and_copy_costs,
223 allocate_and_set_or_copy_costs): New static inline functions.
225 * ira-build.c (compress_allocno_conflict_vec,
226 compress_conflict_vecs): New functions.
227 (allocno_conflict_index): Remove.
228 (allocno_conflict_check, curr_allocno_conflict_check_tick): New
230 (propagate_info_to_cap): Use allocate_and_copy_costs.
231 (check_and_add_conflicts): Don't call allocno_conflict_index.
232 (ira_flattening): Add some assertions. Check that cost vectors
233 have been allocated. Don't call allocno_conflict_index. Call
234 compress_conflict_vecs.
236 * ira.c (memory_move_cost, register_move_cost): Change types.
237 (register_may_move_in_cost, register_may_move_out_cost,
238 strict_class_subset_p): New variables.
239 (setup_class_subset_and_move_costs): Rename to
240 setup_class_subset_and_memory_move_costs. Remove
241 register_move_cost setup. Don't consider no_unit_alloc_regs. Add
242 strict_class_subset_p setup.
243 (setup_reg_class_intersect): Rename to
244 setup_reg_class_intersect_union. Don't consider
245 no_unit_alloc_regs. Add reg_class_union setup.
246 (hard_reg_not_in_set_p): Move to ira-int.h.
247 (setup_reg_subclasses): Use no_unit_alloc_regs instead of
248 fixed_reg_set. Don't consider no_unit_alloc_regs.
249 (important_class_nums): Fix element type.
250 (setup_cover_classes): Use no_unit_alloc_regs instead of
251 fixed_reg_set. Don't consider no_unit_alloc_regs.
252 (setup_class_translate): Ditto.
253 (reg_class_union): New variable.
254 (init_register_move_cost, free_register_move_costs): New
256 (init_ira_once): Initialize register_move_cost,
257 register_may_move_in_cost, register_may_move_out_cost. Move some
259 (init_ira): New function. Move some code from init_ira_once.
260 Call free_register_move_costs and init_ira_costs.
261 (calculate_allocation_cost): Check allocation of allocno hard reg
263 (basic_block_order_nums): New variable.
264 (chain_freq_compare, chain_bb_compare, sort_insn_chain): New
266 (ira): Call sort_insn_chain.
268 * ira-color.c (allocno_coalesced_p): New variable.
269 (update_copy_costs): Use allocate_and_set_or_copy_costs.
270 (assign_hard_reg): Clear and use
271 processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
272 Use allocate_and_copy_costs. Use allocno cover class cost if the
273 hard register cost vector is not allocated.
274 (get_coalesced_allocnos_best_class_and_freq): Use
275 reg_class_intersect instead of reg_class_subintersect.
276 (add_allocno_to_ordered_bucket): Use strict_class_subset_p.
277 (push_allocno_to_stack): Clear and use
278 processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
279 (setup_allocno_left_conflicts_num): Don't setup
280 ALLOCNO_UPDATED_HARD_REG_COSTS and
281 ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS. Clear and use
282 processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
283 (put_allocno_into_bucket): Don't setup
284 ALLOCNO_UPDATED_HARD_REG_COSTS and
285 ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
286 (coalesced_allocno_conflict_p): Clear and use
287 processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
288 (coalesce_allocnos): Setup allocno_coalesced_p.
289 (color_allocnos): Add processing reg class NO_REGS.
290 (color_pass): Propagate assignment of spilled allocno not
291 mentioned in the subregion for the mixed algorithm. Use
292 allocate_and_set_costs.
293 (move_spill_restore, mark_allocation_change): Check unallocated
294 hard reg cost vectors.
295 (setup_curr_costs): Don't setup ALLOCNO_UPDATED_HARD_REG_COSTS and
296 ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS. Use
297 allocate_and_set_or_copy_costs.
298 (mark_memory_move_deletion, allocno_reload_assign,
299 pseudo_reg_compare, reassign_pseudos): New functions.
300 (retry_ira_color): Remove.
302 * ira-conflicts.c (add_insn_allocno_copies): Use
303 allocate_and_set_costs.
304 (allocno_conflict_p): Simplify the code.
306 * ira-costs.c: Rename reg_class_subunion to reg_class_union
308 (cost_classes, cost_classes_num, cost_class_nums,
309 max_struct_costs_size): New variables.
310 (copy_cost): Use init_register_move_cost instead of
312 (record_reg_classes): Ditto. Use cost_classes and
313 cost_classes_num instead of important_classes and
314 important_classes_num. Use register_may_move_{in,out}_cost
315 instead of may_move_{in,out}_cost. Check reg class intersection
317 (record_address_regs): Use init_register_move_cost instead of
318 init_move_cost. Use cost_classes and cost_classes_num instead of
319 important_classes and important_classes_num. Use
320 register_may_move_in_cost instead of may_move_in_cost.
321 (scan_one_insn): Use cost_classes_num instead of
322 important_classes_num.
323 (print_costs): Use cost_classes and cost_classes_num instead of
324 important_classes and important_classes_num.
325 (find_allocno_class_costs): Initialize cost_classes and
326 cost_class_nums. Use cost_classes and cost_classes_num instead of
327 important_classes and important_classes_num.
328 (process_bb_node_for_hard_reg_moves): Use allocate_and_set_costs.
329 (setup_allocno_cover_class_and_costs): Use cost_classes and
330 cost_classes_num instead of important_classes and
331 important_classes_num.
332 (init_ira_costs_once): Move some code to init_ira_costs. Initiate
334 (free_ira_costs: New function. Move some code from
335 finish_ira_costs_once.
336 (init_ira_costs): New function. Move some code from
337 init_ira_costs_once. Use max_struct_costs_size instead of
338 struct_costs_size. Call free_ira_costs. Allocate cost_classes.
339 (finish_ira_costs_once): Move some code to finish_ira_costs. Call
341 (ira_costs): Use max_struct_costs_size instead of
342 struct_costs_size. Use allocate_and_set_costs.
344 * ira-emit.c (modify_move_list): Remove allocation of hard reg
347 * ira-lives.c (process_single_reg_class_operands): Add new
348 parameter freq. Calculate costs basing on the frequency.
349 (process_bb_node_lives): Pass the frequency to
350 process_single_reg_class_operands.
352 2007-12-17 Vladimir Makarov <vmakarov@redhat.com>
354 * doc/invoke.texi (fira-algoirthm): Remove prioirity coloring.
355 Make mixed the default.
357 * flags.h (ira_algorithm): Remove IRA_ALGORITHM_PRIORITY.
359 * ira-color.c (priority_coloring): Remove.
360 (do_coloring): Don't call priority_coloring.
362 * opts.c (common_handle_option): Remove priority coloring option.
364 * toplev.c (flag_ira_algorithm): Assign IRA_ALGORITHM_MIXED.
366 * ira-build.c (check_and_add_conflicts, ira_flattening): Increase
367 threshold for internal_flag_ira_verbose.
369 2007-12-17 Vladimir Makarov <vmakarov@redhat.com>
371 * common.opt (fira-assign-after-call-split, fira-biased-coloring,
372 fira-split-around-calls): Remove.
373 (fdump-simple-rtl, fira-verbose): New options.
374 (fira, fira-coalesce): Initiate by 0.
376 * opts.c (common_handle_option): Process flag_ira_verbose.
378 * flags.h (flag_ira_verbose): New external definition.
380 * toplev.h (flag_ira_assign_after_call_split,
381 flag_ira_biased_coloring, flag_ira_split_around_calls): Remove.
383 * toplev.c (flag_ira_verbose): New external declaration.
384 (finalize): Call finish_ira_once.
386 * print-rtl.c (flag_simple): Rename to flag_dump_simple_rtl.
388 * doc/invoke.texi (-fno-ira-assign-after-call-split,
389 -fira-biased-coloring, -fno-ira-split-around-calls): Remove.
390 (-fdump-simple-rtl, -fira-verbose): New options.
392 * caller-save.c (insert_restore, insert_save): Use
393 adjust_address_nv instead of adjust_address. Check the mode by
396 * ira-call.c: Remove file.
398 * ira-lives.c: New file.
400 * Makefile.in (ira-live.o): Add
401 (ira-call.o): Remove.
402 (IRA_INT_H): Add alloc-pool.h.
404 * ira.h (finish_ira_once): New external definition.
406 * ira-int.h (internal_flag_ira_verbose, alloc_pool allocno_pool,
407 copy_pool, allocno_live_range_pool, ira_loop_tree_height,
408 max_point, start_point_ranges, finish_point_ranges,
409 prohibited_mode_move_regs, important_class_nums,
410 ira_curr_regno_allocno_map, allocno_set_words): New external
412 (loop_tree_node_t, allocno_live_range_t): New typedefs. Use them
414 (ira_loop_tree_node): Rename to loop_tree_node.
415 (loop_tree_node): New member level.
416 (allocno_live_range): New structure.
417 (allocno): New members nrefs, live_ranges,
418 total_conflict_hard_regs, conflict_allocnos_num,
419 total_conflict_allocnos_num, mem_optimized_dest,
420 mem_optimized_dest_p, total_no_stack_reg_p. Remove members
421 conflict_allocno_vec_active_size and original_memory_cost. Rename
422 member curr_hard_reg_costs to updated_hard_reg_costs.
423 (ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
424 ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_CONFLICT_ALLOCNOS_NUM,
425 ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM, ALLOCNO_NREFS,
426 ALLOCNO_MEM_OPTIMIZED_DEST, ALLOCNO_MEM_OPTIMIZED_DEST_P,
427 ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_LIVE_RANGES): New access
429 (ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
430 ALLOCNO_ORIGINAL_MEMORY_COST): Remove.
431 (ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS): Rename to
432 ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
433 (allocno_copy): New member loop_tree_node.
434 (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move from
436 (SET_ALLOCNO_SET_BIT, CLEAR_ALLOCNO_SET_BIT,
437 TEST_ALLOCNO_SET_BIT): New macros.
438 (ira_reallocate, allocno_conflict_index, add_allocno_conflict,
439 create_allocno_live_range, finish_allocno_live_range,
440 add_allocno_copy_to_list, swap_allocno_copy_ends_if_necessary,
441 remove_allocno_copy_from_list, add_allocno_copy, ira_flattening,
442 finish_ira_costs_once, rebuild_start_finish_chains,
443 print_live_range_list, debug_live_range_list,
444 debug_allocno_live_ranges, debug_live_ranges,
445 create_allocno_live_ranges, finish_allocno_live_ranges,
446 allocno_conflict_p, loop_edge_freq): New external function
448 (hard_reg_in_set_p, original_regno_call_crossed_p,
449 ira_max_regno_before, ira_max_regno_call_before): Remove.
450 (traverse_loop_tree): Add new parameter type.
451 (create_copy): Ditto.
452 (debug_conflicts, ira_emit, add_allocno_copy): Add parameter.
453 (debug_ira_call_data, split_around_calls, get_around_calls_regno):
456 * ira.c (setup_prohibited_mode_move_regs): New function.
457 (internal_flag_ira_verbose, allocno_pool, copy_pool,
458 allocno_live_range_pool, important_class_nums): New external
460 (IRA_NO_OBSTACK): Uncomment it.
461 (ira_reallocate): New function.
462 (setup_cover_classes): Set up important_class_nums.
463 (finish_ira_once): New function.
464 (prohibited_mode_move_regs,
465 prohibited_mode_move_regs_initialized_p): New global variables.
466 (setup_prohibited_mode_move_regs): New function.
467 (setup_reg_renumber): Remove parameters.
468 (setup_allocno_assignment_from_reg_renumber): Rename to
469 setup_allocno_assignment_flags. Set up ALLOCNO_ASSIGNED_P.
470 (calculate_allocation_cost): Use ALLOCNO_UPDATED_MEMORY_COST.
471 (ira_max_regno_before, ira_max_regno_call_before): Remove.
472 (ira): Set up internal_flag_ira_verbose. Call
473 setup_prohibited_mode_move_regs. Create and destroy allocno,
474 copy, and live range pools. Remove original_regno_call_crossed_p.
475 Report major passes. Use argument for ira_emit. Call
476 ira_flattening and df_analyze. Remove live range splitting around
479 * ira-build.c (setup_loop_tree_level, rebuild_regno_allocno_maps,
480 expand_calls, compress_calls, allocno_conflict_index,
481 add_to_allocno_conflict_vec, propagate_info_to_cap,
482 copy_allocno_live_range, copy_allocno_live_range_list,
483 finish_allocno, finish_copy,
484 propagate_info_to_loop_tree_node_caps, merge_ranges,
485 common_loop_tree_node_dominator, check_and_add_conflicts,
486 add_conflict_with_underlying_allocnos, ira_flattening): New
488 (check_coalesced_allocnos): Remove.
489 (ira_loop_tree_height): New external variable.
490 (form_loop_tree): Call setup_loop_tree_level.
491 (initiate_calls): Allocate a bit more. (create_allocno): Use
492 pool_alloc. Set up ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
493 ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_NREFS,
494 ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_MEM_OPTIMIZED_DEST,
495 ALLOCNO_MEM_OPTIMIZED_DEST_P, ALLOCNO_UPDATED_MEMORY_COST, and
496 ALLOCNO_LIVE_RANGES. Rename
497 ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
498 ALLOCNO_CURR_HARD_REG_COSTS, and
499 ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS to
500 ALLOCNO_CONFLICT_ALLOCNOS_NUM, ALLOCNO_UPDATED_HARD_REG_COSTS, and
501 ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
502 (add_allocno_conflict): Make it external. Use
503 add_to_allocno_conflict_vec.
504 (create_cap_allocno): Move part of code to propagate_info_to_cap.
505 (finish_allocnos): Use finish_allocno.
506 (add_allocno_copy_to_list, remove_allocno_copy_from_list,
507 swap_allocno_copy_ends_if_necessary, add_allocno_copy): Move from
508 ira-conflicts.c. Make them external.
509 (create_copy): Use pool_alloc. Add parameter loop_tree_node.
510 (finish_copies): Use finish_copy.
511 (ira_curr_regno_allocno_map): New external variable.
512 (traverse_loop_tree): Add parameter bb_first_p.
513 (create_insn_allocnos): Update ALLOCNO_NREFS.
514 (create_loop_tree_node_allocnos): Traverse loop tree nodes with
515 BBs first. Update ALLOCNO_NREFS.
516 (create_loop_tree_node_caps): Move part of code to
517 propagate_info_to_loop_tree_node_cap.
518 (regno_top_level_allocno_map): New global variable.
519 (ira_build): Create caps before build conflicts. Call
520 create_allocno_live_ranges. Propagate info to caps. Report
522 (ira_destroy): Call finish_allocno_live_ranges.
524 * ira-conflicts.c (set_allocno_live, clear_allocno_live,
525 record_regno_conflict, mark_reg_store, mark_reg_clobber,
526 mark_reg_conflicts, mark_reg_death): Remove.
527 (add_insn_allocno_copies, add_copies): New functions.
528 (add_allocno_copy_to_list, remove_allocno_copy_from_list,
529 swap_allocno_copy_ends_if_necessary, add_allocno_copy): Remove.
530 (add_allocno_copies): Rename to add_insn_allocno_copies. Use
531 ira_curr_regno_allocno_map and add_insn_allocno_copies.
532 (single_reg_class, single_reg_operand_class,
533 process_single_reg_class_operands, process_bb_node_for_conflicts):
535 (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move to
537 (allocnos_live_bitmap, SET_ALLOCNO_CONFLICT_ROW,
538 CLEAR_ALLOCNO_CONFLICT_ROW, TEST_ALLOCNO_CONFLICT_ROW): Remove.
539 (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, TEST_ALLOCNO_LIVE):
540 Use {SET, CLEAR, TEST}_ALLOCNO_SET_BIT.
541 (allocno_row_words, hard_regs_live, curr_bb_node,
542 curr_regno_allocno_map, curr_reg_pressure): Remove.
543 (CONFLICTP): Rename to CONFLICT_P.
545 (propagate_allocno_info): Use ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
546 Set up ALLOCNO_CALLS_CROSSED_START.
547 (allocno_conflict_p): New function.
548 (allocno_reg_conflict_p): Use allocno_conflict_p.
549 (build_allocno_conflict_vects): Divide original and propagated
551 (print_hard_reg_set): New function.
552 (print_conflicts): Use print_hard_reg_set. Set up mark for the
553 start of propagated conflicts.
554 (debug_conflicts): Add parameter.
555 (ira_build_conflicts): Call add_copies. Set up
556 ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
558 * ira-costs.c (struct costs): Make cost allocated dynamically.
559 (struct_costs_size, temp_cots, op_costs, this_op_costs): New
561 (costs): Rename to total_costs.
562 (COSTS_OF_ALLOCNO): New macro.
563 (curr_regno_allocno_map): Remove. Use ira_curr_regno_allocno_map
565 (record_reg_classes): Check NO_REGS in allocno_pref.
566 (record_address_regs): Use COSTS_OF_ALLOCNO.
567 (scan_one_insn): Ditto.
568 (print_costs): Ditto.
569 (find_allocno_class_costs): Ditto. Pass additional argument to
570 traverse_loop_tree. Set up NO_REGS if memory is cheaper.
571 (setup_allocno_cover_class_and_costs): Use
572 ALLOCNO_UPDATED_MEMORY_COST instead of
573 ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
574 instead of ALLOCNO_CURR_HARD_REG_COSTS, and
575 ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
576 ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS. Pass additional argument to
578 (init_ira_costs_once): Allocate init_cost, op_costs,
579 this_op_costs, temp_costs.
580 (finish_ira_costs_once): New function.
582 * ira-color.c: Use ALLOCNO_UPDATED_MEMORY_COST instead of
583 ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
584 instead of ALLOCNO_CURR_HARD_REG_COSTS, and
585 ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
586 ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS. Use
587 ALLOCNO_TOTAL_CONFLICT_HARD_REGS instead of
588 ALLOCNO_CONFLICT_HARD_REGS.
589 (processed_allocno_bitmap): Rename into
590 processed_coalesced_allocno_bitmap.
591 (allocno_cost_compare_func): Use ALLOCNO_UPDATED_MEMORY_COST
592 instead of ALLOCNO_MEMORY_COST.
593 (assign_hard_reg): Remove biased coloring.
594 (add_allocno_to_ordered_bucket): Check cover class first.
595 (loop_edge_freq): Make it external.
596 (setup_allocno_left_conflicts_num): Check that conflicting
597 allocnos of one class.
598 (allocno_conflict_p): Rename to coalesced_allocno_conflict_p.
599 (color_pass): Check pressure in the loop (not in subloops) for
601 (allocno_priorities): New variable.
602 (start_allocno_priorities, finish_allocno_priorities): New
604 (allocno_priority_compare_func): Use allocno_priorities.
605 (priority_coloring): Call start_allocno_priorities and
606 finish_allocno_priorities.
607 (do_coloring): Pass additional argument to traverse_loop_tree.
609 * ira-emit.c (struct move): Add member insn.
610 (create_move): Initialize member insn.
611 (generate_edge_moves): Set up ALLOCNO_MEM_OPTIMIZED_DEST and
612 ALLOCNO_MEM_OPTIMIZED_DEST_P.
613 (change_loop): Check prohibited_mode_move_regs.
614 (curr_jump_map, can_move_through_p): Remove.
615 (unify_moves): Don't move through jump.
616 (modify_move_list): Set up attributes for new allocno used for
617 breaking dependency loops.
618 (emit_move_list): Set up insn codes.
619 (update_costs, add_range_and_copies_from_move_list,
620 add_ranges_and_copies): New functions.
621 (ira_emit): Add a parameter. Call add_ranges_and_copies.
623 2007-10-09 Vladimir Makarov <vmakarov@redhat.com>
625 * toplev.h (flag_ira_coalesce): New external variable.
627 * ira-int.h (allocno): New members first_coalesced_allocno,
628 next_coalesced_allocno.
629 (ALLOCNO_FIRST_COALESCED_ALLOCNO, ALLOCNO_NEXT_COALESCED_ALLOCNO):
631 (reg_class_subintersect): New external variable.
633 * ira-color.c (processed_allocno_bitmap): New variable.
634 (allocno_cost_compare_func, print_coalesced_allocno): New
636 (assign_hard_reg): Process coalesced allocnos.
637 (get_coalesced_allocnos_best_class_and_freq): New function.
638 (add_allocno_to_ordered_bucket): Use the function.
639 (push_allocno_to_stack, push_allocnos_to_stack): Process coalesced
641 (remove_allocno_from_bucket_and_push, pop_allocnos_from_stack):
642 Use print_coalesced_allocno.
643 (setup_allocno_available_regs_num,
644 setup_allocno_left_conflicts_num): Process coalesced allocnos.
645 (copy_freq_compare_func, allocno_conflict_p, coalesce_allocnos):
647 (color_allocnos): Allocate/free processed_allocno_bitmap. Call
649 (priority_coloring): Allocate/free processed_allocno_bitmap.
651 * ira-build.c (check_coalesced_allocnos): New function.
652 (create_allocno): Initiate next_coalesced_allocno,
653 first_coalesced_allocno.
654 (create_cap_allocno): Check next_coalesced_allocno,
655 first_coalesced_allocno.
657 * common.opt (fira-coalesce): New option.
659 * ira.c (setup_reg_class_intersect): New function.
660 (reg_class_subintersect): New global variable.
661 (init_ira_once): Call setup_reg_class_intersect.
663 * doc/invoke.texi (-fira-coalescing): New option.
665 2007-09-20 Vladimir Makarov <vmakarov@redhat.com>
667 * ira-build.c (create_allocno): Initialize ALLOCNO_BEST_CLASS.
669 * ira-color.c (add_allocno_to_ordered_bucket): Use
672 * ira-costs.c (setup_allocno_cover_class_and_costs): Initialize
675 * ira-int.h (allocno): New member best_class.
676 (ALLOCNO_BEST_CLASS): New macro.
678 2007-09-19 Vladimir Makarov <vmakarov@redhat.com>
680 * ira-int.h (allocno): Remove calls_crosed. Add
682 (ALLOCNO_CALLS_CROSSED): Remove.
683 (ALLOCNO_CALLS_CROSSED_START): Add.
685 (regno_calls, add_regno_call): New.
687 * ira-build.c (initiate_calls, finish_calls, add_regno_call): New
689 (regno_calls, regno_calls_num): New globals.
691 (add_loop_to_tree): Use loop_outer.
692 (form_loop_tree): Ditto.
693 (initiate_allocnos, create_cap_allocno): Remove
694 ALLOCNO_CALLS_CROSSED. Add ALLOCNO_CALLS_CROSSED_START.
695 (finish_allocnos): Remove ALLOCNO_CALLS_CROSSED.
696 (create_bb_allocnos, create_loop_allocnos): Use DF_LR_{IN,OUT}
697 instead of DF_UPWARD_LIVE_{IN,OUT}.
698 (ira_build): Remove adding df problems and call of
699 free_dominance_info. Call initiate_calls.
700 (ira_destroy): Add free_dominance_info and finish_calls. Remove
703 * ira-emit.c (change_regs): Return the result.
704 (generate_edge_moves): Use DF_LR_{IN,OUT} instead of
705 DF_UPWARD_LIVE_{IN,OUT}.
706 (change_loop): Call df_insn_rescan and df_note_rescan if there is
708 (can_move_through_p): Use hard_reg_set_equal_p instead of
709 GO_IF_HARD_REG_EQUAL.
711 * ira-costs.c (copy_cost, record_reg_classes,
712 record_address_regs): Call init_move_cost if it is necessary.
713 (tune_allocno_costs_and_cover_classes): Use regno_calls and
714 ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
716 * ira-conflicts.c (n_regs_set): Remove.
717 (regs_set): Make it a vector.
718 (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
719 (process_bb_node_for_conflicts): Use DF_LR_IN instead of
720 DF_UPWARD_LIVE_IN. Call add_regno_call. Initialize
721 ALLOCNO_CALLS_CROSSED_START. Remove ALLOCNO_CALLS_CROSSED.
722 (build_conflict_bit_table): Initialize and finalize regs_set.
723 (propagate_allocno_info): Remove ALLOCNO_CALLS_CROSSED.
724 Initialzie ALLOCNO_CALLS_CROSSED_START.
726 * ira-color.c (setup_allocno_available_regs_num,
727 setup_allocno_left_conflicts_num): New functions.
728 (update_allocno_avaialable_regs): Remove.
729 (sorted_allocnos, allocno_stack_varray): Move upper.
730 (assign_hard_reg): Use hard_reg_set_subset_p instead of
731 GO_IF_HARD_REG_SUBSET.
732 (loop_edge_freq): Use DF_LR_{IN,OUT} instead of
733 DF_UPWARD_LIVE_{IN,OUT}.
734 (put_allocno_into_bucket): Call setup_allocno_available_regs_num
735 and setup_allocno_left_conflicts_num.
736 (print_loop_title): Use loop_depth.
737 (allocno_priority_compare_func): Remove REG_N_REFS and
739 (retry_ira_color): Use SET_REGNO. Use ALLOCNO_CALLS_CROSSED_NUM
740 instead of ALLOCNO_CALLS_CROSSED.
741 (collect_pseudo_call_clobbered_regs): Use regno_calls and
742 ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
744 * ira-call.c (init_ira_call_data): Add argument to
746 (n_regs_set): Remove.
747 (regs_set): Make it a vector.
748 (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
749 (mark_referenced_regs): Check null x.
750 (put_save_restore_and_calculate_local_info): Initialize and
751 finalize regs_set. Use DF_LR_{IN,OUT} instead of
752 DF_UPWARD_LIVE_{IN,OUT}. Use loop_outer.
753 (do_init_nothing): Remove.
754 (save_trans_fun, save_con_fun_0, restore_trans_fun,
755 restore_con_fun_0): Remove 1st parameter.
756 (save_con_fun_n, restore_con_fun_n): Ditto. Use
757 df_simple_dataflow instead of df_analyze_problem.
758 (put_save_restore): Use DF_LR_IN instead of DF_UPWARD_LIVE_IN.
759 Call mark_all_referenced_regs for all insn. Use bitmap progress.
760 (get_move_insn): New function.
761 (put_save_restore_and_calculate_local_info, put_save_restore): Use
764 * ira.c (insn_contains_asm_1, insn_contains_asm,
765 compute_regs_asm_clobbered, expand_reg_info): New functions.
766 (setup_class_subset_and_move_costs): Use hard_reg_set_subset_p
767 instead of GO_IF_HARD_REG_SUBSET.
768 (setup_reg_subclasses, setup_class_translate): Ditto. Use
769 hard_reg_set_equal_p instead of GO_IF_HARD_REG_EQUAL.
770 (setup_eliminable_regset): Call compute_regs_asm_clobbered. Use
771 df_set_regs_ever_live instead of regs_ever_live.
772 (setup_reg_renumber): Check reg_equiv_const and
773 reg_equiv_invariant_p.
774 (ira): Remove no_new_pseudos. Add df-problems and analyze. Call
775 regstat_init_n_sets_and_refs and regstat_compute_ri. Remove
776 delete_unreachable_blocks. Use expand_reg_info. Move
777 setup_preferred_alternate_classes upper. Remove life_analysis.
778 Prepare df-insfrastructure for reload.
780 * regclass.c (setup_reg_classes): Don't use reg_pref_buffer.
782 * function.[ch] (get_call_invalidated_used_regs): Change 1st
785 * gengtype.c (main): Add HARD_REG_SET.
787 * alias.c (value_addr_p): New function.
788 (nonoverlapping_memrefs_p): Use it.
790 * caller-save.c (init_caller_save): Use DF_LR_TOP for IRA instead
791 of global_live_at_start.
793 2007-05-04 Vladimir Makarov <vmakarov@redhat.com>
795 * ira-conflicts.c: Change pseudo to allocno.
796 * ira-color.c: Ditto.
798 * ira-build.c: Ditto.
800 (important_classes_num, important_classes): New variables.
801 (setup_cover_classes): Set up the variable values.
802 * ira-costs.c: Ditto.
803 (record_reg_classes, record_address_regs, scan_one_insn,
804 find_pseudo_class_costs): Process only important classes.
805 * ira-call.c: Ditto. Add comments about placement optimization.
807 (allocno) Use one bit field for boolean members.
808 (important_classes_num, important_classes): New external
811 2007-03-16 Vladimir Makarov <vmakarov@redhat.com>
813 * flags.h (ira_algorithm): Add IRA_ALGORITHM_MIXED.
815 * opts.c (common_handle_option): Set up IRA_ALGORITHM_MIXED from
818 * common.opt (fira-assign-after-call-split, fira-propagate-cost,
819 fira-split-around-calls): New options.
820 (fira-ipra): Switch off by default.
822 * doc/invoke.texi (-fira-algorithm): Add mixed algorithm.
823 (-fno-ira-ipra): Rename to -fira-ipra.
824 (-fno-ira-assign-after-call-split, -fira-propagate-cost,
825 -fno-ira-split-around-calls): Add new options.
827 * ira-conflicts.c (curr_reg_pressure): New variable.
828 (set_pseudo_live, clear_pseudo_live, mark_reg_store,
829 mark_reg_death): Update reg pressure.
830 (add_pseudo_copies): Decrease cost for copy with dead pseudo.
831 (process_bb_node_for_conflicts): Propagate reg pressure.
832 (build_conflict_bit_table): Call process_bb_node_for_conflicts in
834 (ira_build_conflicts): Add new coloring algorithm.
835 (ira_build_conflicts): Add flag_ira_split_around_calls.
837 * ira-emit.c (change_loop): Print allocation on the region
838 borders. Use pseudo_cap_member instead of regno.
839 (modify_move_list): Add parameter to create pseudo.
840 (ira_emit): Use pseudo_cap_member instead of regno.
842 * ira-build.c (create_loop_tree_nodes): Set up initial reg
844 (create_pseudo): Add parameter. Use the parameter value instead
846 (print_expanded_pseudo): Use pseudo_cap_member instead of regno.
847 (create_cap_pseudo, create_insn_pseudos, create_bb_pseudos,
848 create_loop_pseudos): Add argument to create_pseudo call.
849 (create_pseudos, ira_build): Process IRA_ALGORITHM_MIXED.
850 (create_loop_tree_node_caps): Create cap pseudo for all pseudos
851 not having father pseudo.
853 * final.c (rest_of_handle_final): Process INCOMING_REGNO.
855 * toplev.h (flag_ira_assign_after_call_split,
856 flag_ira_propagate_cost, flag_ira_split_around_calls): New flags.
858 * caller-save.c (save_call_clobbered_regs): Move declaration
859 this_insn_sets to the function start.
861 * ira-int.h (ira_loop_tree_node): Add reg_pressure.
862 (pseudo): More comments for regno and cap_member
863 (original_regno_call_crossed_p, ira_max_regno_before,
864 ira_max_regno_call_before): New external variables.
865 (create_pseudo): Add parameter.
866 (reassign_conflict_pseudos, debug_ira_call_data,
867 split_around_calls, get_around_calls_regno): New function
870 * ira-color.c (assign_hard_reg): Set best_hard_regno and
871 conflict_regs earlier. Check register availability earlier.
872 Ignore conflict and copy cost for PSEUDO_MAY_BE_SPILLED_P.
873 (calculate_pseudo_spill_cost): Use pseudo_cap instead of regno.
874 Check father pseudo instead of subloop pseudos.
875 (pop_pseudos_from_stack): Set up PSEUDO_ASSIGNED_P for NO_REGS
877 (print_loop_title): Print reg pressure.
878 (color_pass): Use PSEUDO_CAP_MEMBER instead of regno. Add mixed
880 (move_spill_restore): Use PSEUDO_CAP_MEMBER instead of regno. Use
881 subloop pseudos instead of father pseudo for cost calculation.
882 (setup_curr_costs, reassign_conflict_pseudos): New functions.
883 (retry_ira_color): Don't allocate call used registers when
884 flag_caller_saves or flag_ira_split_around_calls. Call
885 setup_curr_cost. Print about spilling pseudo split around calls.
886 (reuse_stack_slot): Choose the slot with minimal memory-memory
889 * ira.c (setup_reg_renumber): Add 2 parameters. Use cap_number
890 instead of regno. Initialize caller_save_needed. Make assertion
892 (setup_pseudo_assignment_from_reg_renumber): New function.
893 (calculate_allocation_cost): Add assertion.
894 (print_redundant_copies): Use cap_number instead of regno.
895 (original_regno_call_crossed_p, ira_max_regno_before,
896 ira_max_regno_call_before): New global variables.
897 (ira): Process IRA_ALGORITHM_MIXED. Set up
898 ira_max_regno_call_before and ira_max_regno_before. New arguments
899 for setup_reg_renumber. Reassign if pseudo changed its class.
900 Split pseudos around the call if necessary. Reassign if a pseudo
903 * ira.h: New year for Copyright.
905 * ira-costs.c (reg_pref): Rename to pseudo_pref.
906 (reg_pref_buffer): rename to pseudo_pref_buffer.
907 (find_pseudo_class_costs): Initialize best_cost and best_class.
908 Process IRA_ALGORITHM_MIXED. Find best cover class for regno.
909 (process_bb_node_for_hard_reg_moves): Process IRA_ALGORITHM_MIXED.
911 * Makefile.in (ira-call.o): Add new file.
913 * reload1.c (calculate_needs_all_insns): Remove unnecessary
916 * ira-call.c: New file.
918 2007-02-09 Vladimir Makarov <vmakarov@redhat.com>
920 * common.opt (fipra): Rename to fira-ipra. Make it default.
921 (fira-move-spills, fira-share-save-slots, fira-share-spill-slots):
923 * toplev.h (flag_ipra): Rename to flag_ira_ipra.
924 (flag_ira_move_spills, flag_ira_share_save_slots,
925 flag_ira_share_spill_slots): New external definitions.
926 * doc/invoke.texi (-fipra): Rename to -fno-ira-ipra.
927 (-fno-ira-move-spills, -fno-ira-share-save-slots,
928 -fno-ira-share-spill-slots): New options.
929 * function.c (get_call_invalidated_used_regs): Rename flag_ipra to
931 * ira-costs.c (tune_pseudo_costs_and_cover_classes): Ditto.
932 * caller-save.c (setup_save_areas): Use flag_ira_share_save_slots.
933 Rename flag_ipra to flag_ira_ipra.
934 (flag_ira_share_save_slots): Use flag_ira_move_spills.
935 * ira-color.c (assign_hard_reg): Skip pseudos with different cover
937 (reuse_stack_slot): Use flag_ira_share_spill_slots.
938 * config/arm/arm.h (IRA_COVER_CLASSES): New macro.
940 2007-02-31 Vladimir Makarov <vmakarov@redhat.com>
942 * reload.h (debug_save_data): New definition.
944 * caller-save.c (struct bb_info): New.
945 (BB_INFO, BB_INFO_BY_INDEX): New macros.
946 (calculate_local_save_info, set_up_bb_rts_numbers, rpost_cmp,
947 calculate_save_in_out, calculate_save_here,
948 make_global_save_analysis, print_hard_reg_set_and_mode,
949 print_hard_reg_set, print_save_data, debug_save_data,
950 set_hard_reg_saved): New functions.
951 (save_call_clobbered_regs): Make global save analysis and use it
952 to put save/restore code.
953 (insert_one_insn): Check CODE_LABEL.
955 2007-01-19 Vladimir Makarov <vmakarov@redhat.com>
957 * toplev.h (flag_ipra): New external definition.
959 * common.opt (fipra): New option.
961 * doc/invoke.texi (-fipra); Document the option.
963 * cgraph.h (cgraph_node): New member function_used_regs.
965 * cgraph.c (cgraph_create_node): Initialize function_used_regs.
967 * final.c (update_regs_ever_live): New function.
968 (rest_of_handle_final): Set up function_used_regs and
971 * ira-build.c (ira_build): Clear function call_used_regs.
973 * function.h: Add hard-reg-set.h header.
974 (emit_status): New member call_used_regs.
975 (get_call_invalidated_used_regs): New definition.
977 * function.c (get_call, get_call_invalidated_used_regs): New
980 * Makefile.in (FUNCTION_H): Add hard-reg-set.h.
981 (caller-save.o): Add dependence on output.h and ira.h
983 * regrename.c (copyprop_hardreg_forward_1): Use function
984 get_call_invalidated_used_regs.
986 * ira-conflicts.c (process_bb_node_for_conflicts): Ditto.
988 * postreload-gcse.c (record_opr_changes,
989 reg_set_between_after_reload_p, reg_used_between_after_reload_p):
992 * postreload.c (reload_combine, reload_cse_move2add): Ditto.
994 * rtlanal.c (reg_set_between_p): Ditto.
996 * flow.c (propagate_one_insn): Ditto.
998 * df-scan.c (df_insn_refs_record): Ditto.
1000 * gcse.c (compute_hash_table_work, compute_store_table): Ditto.
1002 * cselib.c (cselib_process_insn): Ditto.
1004 * loop-iv.c (simplify_using_assignment): Ditto.
1006 * sched-deps.c (sched_analyze): Ditto.
1008 * combine.c (record_dead_and_set_regs): Ditto.
1010 * resource.c (mark_set_resources, mark_set_resources): Ditto.
1012 * var-tracking.c (var-tracking.c): Ditto.
1014 * reload1.c (reload): Ditto.
1016 * cse.c (invalidate_for_call): Ditto. Add parameter.
1017 (cse_insn): Pass the parameter.
1019 * ira.h (try_to_migrate): Remove the definition.
1020 (collect_pseudo_call_clobbered_regs): New external definition.
1022 * ira-color.c (collect_pseudo_call_clobbered_regs): New function.
1024 * ira-costs.c (tune_pseudo_costs_and_cover_classes): Add cost
1025 calculation when IPRA is used.
1027 * caller-save.c: Include headers output.h and ira.h.
1028 (saved_hard_reg): New structure.
1029 (hard_reg_map, hard_reg_map, all_saved_regs): New variables.
1030 (all_saved_regs, new_saved_hard_reg, finish_saved_hard_regs,
1031 saved_hard_reg_compare_func): New functions.
1032 (setup_save_areas): Add code for sharing stack slots.
1033 (save_call_clobbered_regs): Use function
1034 get_call_invalidated_used_regs.
1036 2007-01-12 Vladimir Makarov <vmakarov@redhat.com>
1038 * doc/tm.texi (IRA_HARD_REGNO_ADD_COST_MULTIPLIER): New macro.
1040 * ira-conflicts.c (add_pseudo_copies): Add copy between output and
1041 died operand pseudos.
1043 * ira.c (setup_cover_classes, setup_class_translate): Define and
1044 call only when IRA_COVER_CLASSES is defined.
1045 (no_alloc_regs): Rename to no_unit_alloc_regs.
1046 (setup_eliminable_regset): Set up no_alloc_regs.
1048 * ira-costs.c (tune_pseudo_costs_and_cover_classes): Modify cost
1049 if IRA_HARD_REGNO_ADD_COST_MULTIPLIER is defined.
1051 * config/s390/s390.h (IRA_COVER_CLASSES,
1052 IRA_HARD_REGNO_ADD_COST_MULTIPLIER(regno)): Define.
1054 2006-12-22 Vladimir Makarov <vmakarov@redhat.com>
1056 * rtl.h (setup_reg_classes): New function prototype.
1058 * regclass.c (setup_reg_classes): New function.
1060 * global.c (global_alloc): Dump information about register
1063 * ira-int.h (ira_build): Change prototype signature.
1065 * ira-color.c (pseudo_compare_func): Rename to
1066 pseudo_priority_compare_func.
1067 (priority_coloring): Dump information about register
1070 * ira-build.c (ira_build): Return true if we have loops for the
1073 * ira.c (setup_preferred_alternate_classes): New function.
1074 (ira): Use it instead of regclass. Rebuild only if we have loops.
1076 2006-12-15 Vladimir Makarov <vmakarov@redhat.com>
1078 * ira.h, ira-int.h, ira.c, ira-build.c, ira-costs.c
1079 ira-conflicts.c, ira-color.c, ira-emit.c: New files.
1081 * flags.h (ira_algorithm): New enumeration.
1082 (flag_ira_algorithm): New external variable declaration.
1084 * tree-pass.h (pass_ira): New external variable declaration.
1086 * toplev.c (ira.h): New include.
1087 (flag_ira_algorithm): New global variable.
1088 (backend_init): Call init_ira_once.
1090 * toplev.h (flag_ira, flag_ira_biased_coloring): New external
1091 variable declarations.
1093 * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
1094 may_move_out_cost): New external variable declarations.
1096 * caller-save.c (no_caller_save_reg_set): New global variable.
1097 (init_caller_save): Set up no_caller_save_reg_set.
1099 * global.c (eliminable_regset): Make it external.
1100 (gate_handle_global_alloc): New function.
1101 (pass_global_alloc): Add the gate function.
1103 * opts.c (decode_options): Print the warning for -fira.
1104 (common_handle_option): Process -fira-algorithm option.
1106 * timevar.def (TV_IRA): New pass.
1108 * hard-reg-set.h (no_caller_save_reg_set): New external variable
1111 * regmove.c (regmove_optimize): Don't do replacement of output
1112 operands by input operands.
1113 (rest_of_handle_regmove): Don't do CFG cleanup for IRA.
1115 * local-alloc.c (update_equiv_regs): Make it external. Return
1116 true if jump label rebuilding should be done.
1117 (gate_handle_local_alloc): New function.
1118 (pass_local_alloc): Add the gate function.
1120 * alias.c (stack_addr_p): New function.
1121 (nonoverlapping_memrefs_p): Add code for IRA.
1123 * common.opt (fira, fira-algorithm, fira-biased-coloring): New
1126 * regclass.c (contains_reg_of_mode, move_cost, may_move_in_cost,
1127 may_move_out_cost): Make the variables external.
1129 * rtl.h (eliminable_regset): New external variable declaration.
1130 (update_equiv_regs): New external function definition.
1132 * Makefile.in (IRA_INT_H): New definition.
1133 (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
1134 ira-conflicts.o, ira-color.o, and ira-emit.o.
1135 (reload1.o, toplev.o): Add dependence on ira.h.
1136 (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
1137 ira-emit.o): New entries.
1139 * passes.c (pass_ira): New pass.
1141 * reload1.c (alter_reg): Add a new parameter.
1142 (pseudo_reg_compare): New function.
1143 (reload): Sort pseudos for IRA. Call alter_reg with the
1144 additional parameter.
1145 (count_spilled_pseudo): New variable freq. Use it.
1146 (alter_reg): Add code for IRA.
1147 (eliminate_regs_1, finish_spills, emit_input_reload_insns,
1148 delete_output_reload): Use additional parameter for alter_reg.
1149 (finish_spills, emit_input_reload_insns, delete_output_reload):
1150 Call mark_allocation_change.
1151 (finish_spills): Call retry_ira_color.
1153 * doc/invoke.texi: Describe new options -fira,
1154 -fira-biased-coloring, and -fira-algorithm.
1156 * doc/passes.texi: Decribe IRA.
1158 * doc/tm.texi: Decribe macro IRA_COVER_CLASSES.
1160 * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
1162 * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
1164 * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
1166 * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
1168 Richard Henderson <rth@redhat.com>
1170 * tree-pass.h (pass_lower_subreg): New external definition.
1171 * toplev.h (flag_lower_subreg): New external definition.
1172 * rtl.def (CONCATN): New rtl expression.
1173 * dwarf2out.c (concatn_loc_descriptor): New function.
1174 (loc_descriptor): Process CONCATN.
1175 * timevar.def (TV_LOWER_SUBREG): New definition.
1176 * emit-rtl.c (gen_reg_rtx_offset): New function.
1177 (gen_lowpart_common): Process CONCATN.
1178 * simplify-rtx.c (simplify_subreg): Process CONCATN.
1179 * common.opt (flower-subreg): New options.
1180 * rtl.h (gen_reg_rtx_offset): New external definition.
1181 * Makefile.in (OBJS-common): Add lower-subreg.o.
1182 (lower-subreg.o): New entry.
1183 * passes.c (pass_lower_subreg): Add new pass.
1184 * lower-subreg.c: New file.
1186 2008-02-11 Kai Tietz <kai.tietz@onevision.com>
1188 * config/i386/cygwin.asm: (__alloca): Correct calling
1189 convention and alignment.
1190 (__chkstk): Force 8 byte stack alignment.
1192 2008-02-11 Uros Bizjak <ubizjak@gmail.com>
1193 Richard Guenther <rguenther@suse.de>
1195 PR tree-optimization/33992
1196 * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
1197 the zero we compare against.
1199 2008-02-10 Danny Smith <dannysmith@users.sourceforge.net>
1202 * gthr-win32.h (__gthread_mutex_destroy_function): New function
1203 to CloseHandle after unlocking to prevent accumulation of handle
1206 2008-02-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1209 * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
1210 pic_label_operand source. Similarly, add a REG_LABEL_OPERAND note
1211 and update LABEL_NUSES during and after reload.
1213 2008-02-08 Steven Bosscher <stevenb.gcc@gmail.com>
1216 * combine.c (simplify_if_then_else): Make sure the comparison is
1217 against const0_rtx when simplifying to (abs x) or (neg (abs X)).
1219 2008-02-08 Richard Sandiford <rsandifo@nildram.co.uk>
1222 * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
1223 (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
1224 * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
1225 (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
1226 * tree.h (get_type_static_bounds): Likewise.
1228 2008-02-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1230 * doc/invoke.texi (Option Summary, C++ Dialect Options)
1231 (Objective-C and Objective-C++ Dialect Options, Warning Options):
1232 Make -Wfoo language annotations match what the compiler outputs.
1234 2008-02-08 Sa Liu <saliu@de.ibm.com>
1236 * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
1237 intrinsics spu_convts, spu_convtu, spu_convtf.
1238 * testsuite/gcc.target/spu/intrinsics-3.c: New. Test error messages.
1240 2008-02-08 Hans-Peter Nilsson <hp@axis.com>
1242 * doc/extend.texi (Function Attributes) <noinline>: Mention
1243 asm ("") as method to keep calls.
1245 2008-02-07 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1248 * doc/options.texi (Options): Replace references to opts.sh with
1250 * opts-common.c: Likewise.
1251 * optc-gen.awk: Likewise.
1253 2008-02-07 Andreas Krebbel <krebbel1@de.ibm.com>
1255 * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
1257 2008-02-07 Richard Henderson <rth@redhat.com>
1260 * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
1261 EXPR_LIST for the REG_EQUAL instead of a comparison with a
1264 2008-02-07 Uros Bizjak <ubizjak@gmail.com>
1266 PR tree-optimization/35085
1267 * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
1268 for operand entry oe2 in addition to operand entry oe3 in order to
1269 expose more opportunities for vectorizer sum reduction.
1271 2008-02-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1274 * Makefile.in (LIBS): Remove $(GMPLIBS).
1275 (cc1-dummy, cc1): Add $(GMPLIBS).
1277 2008-02-06 Jan Hubicka <jh@suse.cz>
1280 * i386.md (moddf_integer): Do not produce partial memory stalls for
1281 targets where it hurts.
1283 2008-02-06 Uros Bizjak <ubizjak@gmail.com>
1286 * optabs.c (expand_float): Do not check for decimal modes when
1287 expanding unsigned integer through signed conversion.
1289 2008-02-06 Nick Clifton <nickc@redhat.com>
1291 * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
1292 inside the clobber with a match_operand and duplicated operand
1293 number in the constraint.
1294 (ineqbranchsi): Delete redundant comment.
1296 2008-02-06 Ralf Corsepius <ralf.corsepius@rtems.org>
1298 * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
1299 builtin_define ("__USE_INIT_FINI__").
1300 * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
1302 * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
1304 2008-02-06 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1306 PR documentation/30330
1307 * doc/invoke.texi (C++ Dialect Options)
1308 (Objective-C and Objective-C++ Dialect Options, Warning Options):
1309 For each warning option -Wfoo that allows -Wno-foo, ensure both
1310 -Wfoo and -Wno-foo are listed in the option index. Fix index
1311 entry of -Wswitch-default, index -Wnormalized= including the
1312 `=', and -Wlarger-than-@var{len} including @var{len}.
1314 2008-02-05 Uros Bizjak <ubizjak@gmail.com>
1316 * config/i386/i386.md (floatunssisf2): Use
1317 ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
1318 (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
1319 Macroize expander using MODEF mode iterator.
1321 2008-02-05 Diego Novillo <dnovillo@google.com>
1323 http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
1326 * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
1328 2008-02-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1331 * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
1333 2008-02-05 H.J. Lu <hongjiu.lu@intel.com>
1336 * config/i386/i386.c (ix86_function_sseregparm): Add an arg
1337 to indicate if a message should be generated.
1338 (init_cumulative_args): Updated.
1339 (function_value_32): Likewise.
1341 2008-02-05 Joseph Myers <joseph@codesourcery.com>
1343 * doc/include/texinfo.tex: Update to version 2008-02-04.16.
1345 2008-02-05 Uros Bizjak <ubizjak@gmail.com>
1348 * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
1349 Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
1351 2008-02-04 Diego Novillo <dnovillo@google.com>
1353 http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
1356 * tree-vrp.c (vrp_evaluate_conditional): With
1357 -Wtype-limits, emit a warning when comparing against a
1358 constant outside the natural range of OP0's type.
1360 2008-02-04 Richard Guenther <rguenther@suse.de>
1363 * expr.c (count_type_elements): Give for unions instead of
1366 2008-02-04 Richard Guenther <rguenther@suse.de>
1369 * gimplify.c (gimplify_init_ctor_eval): Convert array indices
1370 to TYPE_DOMAINs base type instead of using bitsizetype here.
1372 2008-02-03 Jason Merrill <jason@redhat.com>
1374 * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
1376 2008-02-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1379 * doc/invoke.texi (C++ Dialect Options, Optimize Options)
1380 (HPPA Options, i386 and x86-64 Options, IA-64 Options)
1381 (RS/6000 and PowerPC Options): Fix typos and markup.
1382 * doc/passes.texi (Tree-SSA passes): Likewise.
1384 2008-02-02 Michael Matz <matz@suse.de>
1387 * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
1388 from record_last_reg_set_info.
1389 (record_last_reg_set_info): Take an RTX argument, iterate over all
1390 constituent hardregs.
1391 (record_last_set_info, record_opr_changes): Change calls to
1392 new signature or to record_last_reg_set_info_regno.
1394 2008-02-02 Gerald Pfeifer <gerald@pfeifer.com>
1396 * doc/extend.texi (X86 Built-in Functions): Fix grammar.
1398 2008-02-01 Hans-Peter Nilsson <hp@axis.com>
1400 PR rtl-optimization/34773
1401 * reg-notes.def (EQUAL): Mention significance of combination of
1402 REG_EQUAL and REG_RETVAL.
1403 * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
1404 insn that has a REG_RETVAL.
1406 2008-02-01 Roger Sayle <roger@eyesopen.com>
1409 * configure.ac (--enable-fixed-point): Disable unless explicitly
1411 * configure: Regenerate.
1413 2008-02-01 Richard Guenther <rguenther@suse.de>
1416 * invoke.texi (-finline-limit): Remove no longer true parts
1417 of the documentation. Note that there is no default value.
1419 2008-02-01 Andrew Pinski <pinskia@gmail.com>
1420 Mark Mitchell <mark@codesourcery.com>
1421 Ben Elliston <bje@au.ibm.com>
1424 * doc/extend.texi (Other Builtins): Document.
1426 2008-01-31 Tom Browder <tom.browder@gmail.com>
1428 * doc/c-tree.texi (Types): Fix grammar.
1429 (Expression trees): Ditto.
1430 * doc/passes.texi (Tree-SSA passes): Ditto.
1432 * doc/configterms.texi (Configure Terms): Fix typo.
1433 * doc/cpp.texi (Common Predefined Macros): Ditto.
1434 * doc/md.texi (Machine Constraints): Ditto.
1436 * doc/makefile.texi (Makefile): Add comma.
1438 2008-01-31 Tom Browder <tom.browder@gmail.com>
1439 Gerald Pfeifer <gerald@pfeifer.com>
1441 * doc/sourcebuild.texi (Front End): Remove references to CVS
1442 and CVSROOT/modules.
1443 (Texinfo Manuals): Replace reference to CVS by one to SVN.
1444 (Back End): Remove reference to CVS.
1446 2008-01-31 Richard Sandiford <rsandifo@nildram.co.uk>
1449 * config/mips/mips.c (gen_load_const_gp): New function, taking a
1451 (mips16_gp_pseudo_reg): ...here.
1452 * config/mips/mips.md (load_const_gp): Replace with...
1453 (load_const_gp_<mode>): ...this :P-based insn.
1455 2008-01-31 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1457 * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
1458 options. Minor fixes.
1459 (-std): Move reference to standards closer to where language
1460 standards are first mentioned.
1462 2008-01-31 Richard Sandiford <rsandifo@nildram.co.uk>
1464 PR rtl-optimization/34995
1465 * reload.c (alternative_allows_const_pool_ref): Take an rtx
1466 parameter and return a bool. If the rtx parameter is nonnull,
1467 check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
1468 (find_reloads): Update call accordingly. Pass the new operand
1469 if it needed no address reloads, otherwise pass null.
1471 2008-01-30 Richard Henderson <rth@redhat.com>
1474 * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
1475 for unbounded arrays.
1477 2008-01-30 Silvius Rus <rus@google.com>
1479 * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
1481 2008-01-30 Jan Hubicka <jh@suse.cz>
1484 * i386.c (init_cumulative_args): Use real function declaration when
1487 2008-01-30 Richard Sandiford <rsandifo@nildram.co.uk>
1489 PR rtl-optimization/34998
1490 * global.c (build_insn_chain): Treat non-subreg_lowpart
1491 SUBREGs of pseudos as clobbering all the words covered by the
1492 SUBREG, not just all the bytes.
1493 * ra-conflict.c (clear_reg_in_live): Likewise. Take the
1494 original df_ref rather than an extract parameter.
1495 (global_conflicts): Update call accordingly.
1497 2008-01-30 Andreas Krebbel <krebbel1@de.ibm.com>
1499 * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
1500 the overflow check to make it easier to read.
1501 (__fixtfdi): Change the type of the ll member in union
1502 long_double to UDItype_x.
1504 2008-01-30 Jakub Jelinek <jakub@redhat.com>
1507 * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
1508 * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
1509 * tree-inline.c (fold_marked_statements): Call
1510 cgraph_update_edges_for_call_stmt if folding a call statement.
1511 * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
1512 debug_generic_stmt calls, reset it back afterwards.
1515 * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
1517 * c-typeck.c (build_external_ref): Don't pedwarn about
1518 static vars in current function's scope.
1520 2008-01-29 Joseph Myers <joseph@codesourcery.com>
1522 * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
1524 2008-01-29 Bernhard Fischer <aldot@gcc.gnu.org>
1527 * ipa-struct-reorg.c: Fix spelling.
1528 * params.def: Ditto.
1530 2008-01-29 Richard Guenther <rguenther@suse.de>
1533 * tree-inline.h (struct copy_body_data): Add remapping_type_depth
1535 * tree-inline.c (remap_type): Increment remapping_type_depth
1536 around remapping types.
1537 (copy_body_r): Only add referenced variables if they are referenced
1538 from code, not types.
1540 2008-01-29 Douglas Gregor <doug.gregor@gmail.com>
1551 * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
1552 qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
1554 2008-01-28 Andy Hutchinson <hutchinsonandy@netscape.net>
1557 * config/avr/avr.c (expand_prologue): Use correct QI mode frame
1558 pointer for tiny stack.
1560 2008-01-28 Bernhard Fischer <aldot@gcc.gnu.org>
1562 * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
1564 2008-01-28 Bernhard Fischer <aldot@gcc.gnu.org>
1566 * config/vx-common.h: Fix typo in comment.
1568 2008-01-28 Ian Lance Taylor <iant@google.com>
1572 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
1573 coalesce pointers if they have different DECL_NO_TBAA_P values.
1574 * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
1575 between variables with different DECL_NO_TBAA_P values.
1577 2008-01-28 Nathan Froyd <froydnj@codesourcery.com>
1580 * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
1581 are not legitimate small data references on SPE targets.
1583 2008-01-28 David Daney <ddaney@avtrex.com>
1585 * doc/install.texi (mips-*-*): Recommend binutils 2.18.
1587 2008-01-28 David Daney <ddaney@avtrex.com>
1589 * doc/install.texi (--disable-libgcj-bc): Reword documentation.
1591 2008-01-27 Joseph Myers <joseph@codesourcery.com>
1593 * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
1594 m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
1595 *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
1596 *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
1597 hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
1598 i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
1599 i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
1600 vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
1602 2008-01-27 Bernhard Fischer <aldot@gcc.gnu.org>
1604 * basic-block.h (condjump_equiv_p): Fix comment.
1606 2008-01-27 Bernhard Fischer <aldot@gcc.gnu.org>
1608 * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
1609 print_generic_stmt_indented): Fix comment.
1611 2008-01-27 Bernhard Fischer <aldot@gcc.gnu.org>
1613 * configure.ac (__stack_chk_fail): Add detecion for availability
1614 of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
1615 * configure: Regenerate.
1617 2008-01-26 Maxim Kuvyrkov <maxim@codesourcery.com>
1620 * final.c (output_addr_const): Handle TRUNCATE.
1622 2008-01-26 Zdenek Dvorak <ook@ucw.cz>
1625 * tree-ssa-loop-ivopts.c (comp_cost): New type.
1626 (zero_cost, infinite_cost): New constants.
1627 (struct cost_pair): Change type of cost to comp_cost.
1628 (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
1629 (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
1631 (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
1632 split_address_cost, ptr_difference_cost, difference_cost,
1633 get_computation_cost_at, get_computation_cost,
1634 determine_use_iv_cost_generic, determine_use_iv_cost_address,
1635 determine_use_iv_cost_condition, determine_use_iv_costs,
1636 cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
1637 iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
1638 iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
1639 Change type of cost to comp_cost.
1640 (determine_iv_cost): Increase cost of non-original ivs, instead
1641 of decreasing the cost of original ones.
1642 (get_address_cost): Indicate the complexity of the addressing mode
1644 (try_add_cand_for): Prefer using ivs not specific to some object.
1645 * tree-flow.h (force_expr_to_var_cost): Declaration removed.
1647 2008-01-26 Peter Bergner <bergner@vnet.ibm.com>
1648 Janis Johnson <janis187@us.ibm.com>
1651 * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
1652 (TARGET_INSTANTIATE_DECLS): Likewise.
1653 * target.h (expand_to_rtl_hook): New target hook.
1654 (instantiate_decls): Likewise.
1655 * function.c (instantiate_decl): Make non-static. Rename to...
1656 (instantiate_decl_rtl): ... this.
1657 (instantiate_expr): Use instantiate_decl_rtl.
1658 (instantiate_decls_1): Likewise.
1659 (instantiate_decls): Likewise.
1660 (instantiate_virtual_regs: Call new instantiate_decls taget hook.
1661 * function.h (instantiate_decl_rtl): Add prototype.
1662 * cfgexpand.c (target.h): New include.
1663 (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
1664 * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
1665 (TARGET_INSTANTIATE_DECLS): Likewise.
1666 (TARGET_INITIALIZER): New target hooks added.
1667 * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
1669 * config/rs6000/rs6000.c (tree-flow.h): New include.
1670 (machine_function): Add sdmode_stack_slot field.
1671 (rs6000_alloc_sdmode_stack_slot): New function.
1672 (rs6000_instantiate_decls): Likewise.
1673 (rs6000_secondary_memory_needed_rtx): Likewise.
1674 (rs6000_check_sdmode): Likewise.
1675 (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
1676 (TARGET_INSTANTIATE_DECLS): Likewise.
1677 (rs6000_hard_regno_mode_ok): Allow SDmode.
1678 (num_insns_constant): Likewise. Handle _Decimal32 constants.
1679 (rs6000_emit_move): Handle SDmode.
1680 (function_arg_advance): Likewise.
1681 (function_arg): Likewise.
1682 (rs6000_gimplify_va_arg): Likewise. Add special handling of
1683 SDmode var args for 32-bit compiles.
1684 (rs6000_secondary_reload_class): Handle SDmode.
1685 (rs6000_output_function_epilogue): Likewise.
1686 (rs6000_function_value): Simplify if statement.
1687 (rs6000_libcall_value): Likewise.
1688 * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
1689 (SECONDARY_MEMORY_NEEDED_RTX): Add define.
1690 * config/rs6000/dfp.md (movsd): New define_expand and splitter.
1691 (movsd_hardfloat): New define_insn.
1692 (movsd_softfloat): Likewise.
1693 (movsd_store): Likewise.
1694 (movsd_load): Likewise.
1695 (extendsddd2): Likewise.
1696 (extendsdtd2): Likewise.
1697 (truncddsd2): Likewise.
1698 (movdd_hardfloat64): Fixup comment.
1699 (UNSPEC_MOVSD_LOAD): New constant.
1700 (UNSPEC_MOVSD_STORE): Likewise.
1702 2008-01-26 Jakub Jelinek <jakub@redhat.com>
1705 * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
1707 (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
1708 (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
1709 (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
1712 2008-01-26 David Edelsohn <edelsohn@gnu.org>
1715 * config.gcc: Separate AIX 5.3 from AIX 6.1.
1716 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
1717 __LONGDOUBLE128 too.
1718 * config/rs6000/aix61.h: New file.
1720 2008-01-26 Richard Sandiford <rsandifo@nildram.co.uk>
1722 PR rtl-optimization/34959
1723 * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
1724 popcount and parity rtxes the same mode as their operand.
1725 Truncate or extend the result to the return value's mode
1728 2008-01-26 Richard Sandiford <rsandifo@nildram.co.uk>
1731 * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
1732 * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
1733 to GOT_VERSION_REGNUM.
1734 (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
1735 (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
1736 * config/mips/mips.c (mips_emit_call_insn): New function.
1737 (mips_call_tls_get_addr): Call mips_expand_call directly.
1738 (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
1740 (mips16_build_call_stub): Likewise. Return the call insn or null.
1741 (mips_expand_call): Update the call to mips16_build_call_stub
1742 accordingly and a remove redundant condition. Assert that MIPS16
1743 stubs do not use lazy binding. Use mips_emit_call_insn and return
1745 (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
1747 (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
1748 (mips_avoid_hazard): Remove hazard_set handling.
1749 * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
1750 (UNSPEC_RESTORE_GP): ...this.
1751 (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
1752 (FAKE_CALL_REGNO): Rename to...
1753 (GOT_VERSION_REGNUM): ...this.
1754 (type): Add "ghost" value. Add an associated insn reservation.
1755 (hazard_set): Remove.
1756 (exception_receiver): Rename to...
1757 (restore_gp): ...this and update the unspec identifier accordingly.
1758 (exception_receiver, nonlocal_got_receiver): New expanders.
1759 (load_call<mode>): Use GOT_VERSION_REGNUM. Don't set
1760 FAKE_CALL_REGNO. Remove hazard_set attribute.
1761 (set_got_version, update_got_version): New patterns.
1763 2008-01-26 Danny Smith <dannysmith@users.sourceforge.net>
1766 * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
1768 2008-01-25 Joseph Myers <joseph@codesourcery.com>
1771 * doc/install.texi2html: Generate gcc-vers.texi.
1773 2008-01-25 DJ Delorie <dj@redhat.com>
1775 * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
1777 2008-01-25 Joseph Myers <joseph@codesourcery.com>
1779 * config/c4x: Remove directory.
1780 * config.gcc (crx-*, mt-*): Mark obsolete.
1781 (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
1782 h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
1783 sh-*-rtemscoff*): Remove cases.
1784 * defaults.h (C4X_FLOAT_FORMAT): Remove.
1785 * real.c (encode_c4x_single, decode_c4x_single,
1786 encode_c4x_extended, decode_c4x_extended, c4x_single_format,
1787 c4x_extended_format): Remove.
1788 * real.h (c4x_single_format, c4x_extended_format): Remove.
1789 * doc/extend.texi (interrupt, naked): Remove mention of attributes
1791 (Pragmas): Remove comment about c4x pragmas.
1792 * doc/install.texi (c4x): Remove target-specific instructions.
1793 * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
1794 * doc/md.texi (Machine Constraints): Remove C4x documentation.
1795 * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
1796 refer to C4x source files as examples.
1797 (C4X_FLOAT_FORMAT): Remove documentation.
1799 2008-01-25 Bernd Schmidt <bernd.schmidt@analog.com>
1801 * config/bfin/bfin.c (override_options): Reorder tests so that
1802 flag_pic gets enabled for -msep-data.
1804 2008-01-25 Richard Guenther <rguenther@suse.de>
1807 * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
1808 to its bitfield precision if required.
1810 2008-01-25 Jakub Jelinek <jakub@redhat.com>
1813 * tree-nested.c (walk_omp_for): New function.
1814 (convert_nonlocal_reference, convert_local_reference): Call
1815 walk_omp_for on OMP_FOR.
1816 (convert_call_expr): Call walk_body on OMP_FOR's
1817 OMP_FOR_PRE_INIT_BODY.
1819 2008-01-25 Richard Guenther <rguenther@suse.de>
1821 PR tree-optimization/34966
1822 * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
1823 default defs and PHI_NODEs we have to insert after the
1826 2008-01-24 Nick Clifton <nickc@redhat.com>
1828 * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
1829 Provide a default definition.
1830 (LIBGCC2_UNITS_PER_WORD): Likewise.
1832 * config/stormy16/stormy16.c: Include df.h for the prototype
1833 for df_regs_ever_live_p.
1834 (xstormy16_expand_builtin_va_start): Convert the stack offset
1835 into a component_ref and then use POINTER_PLUS_EXPR to add it
1836 to the incoming_virtual_args_rtx.
1837 (xstormy16_gimplify_va_arg_expr): Rename to
1838 xstormy16_gimplify_va_arg_expr.
1839 Use POINTER_PLUS_EXPR when performing pointer arithmetic.
1840 (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
1841 xstormy16_gimplify_va_arg_expr.
1842 Fix up some formatting issues.
1844 * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
1845 Move to predicates.md.
1846 (xs_hi_general_operand): Likewise.
1847 (xs_hi_nonmemory_operand): Likewise.
1848 * config/stormy16/predicates.md:
1849 (xstormy16_carry_plus_operand): New predicate.
1850 (xs_hi_general_operand): New predicate.
1851 (xs_hi_nonmemory_operand): New predicate.
1852 * config/stormy16/stormy16-protos.h:
1853 (xstormy16_carry_plus_operand): Delete prototype.
1854 (xs_hi_general_operand): Likewise.
1855 (xs_hi_nonmemory_operand): Likewise.
1857 * config/storm16/stormy16.md (addhi3): Remove earlyclobber
1858 modifiers as they are no longer needed and they can trigger
1859 reload spill failures.
1861 * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
1862 with a match_operand in order to help reload.
1864 * config/storm16/stormy16.md (movhi_internal): Replace 'r'
1865 constraint with 'e' for the 8th alternative as this version of
1866 the mov.w instruction only accepts the lower 8 registers.
1868 2008-01-25 Uros Bizjak <ubizjak@gmail.com>
1871 * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
1872 Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
1875 2008-01-25 Jakub Jelinek <jakub@redhat.com>
1878 * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
1880 2008-01-25 Golovanevsky Olga <olga@il.ibm.com>
1882 * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
1884 (remove_structure): Update allocations list before removing structure.
1886 2008-01-25 Golovanevsky Olga <olga@il.ibm.com>
1888 * ipa-struct-reorg.c (is_safe_cond_expr,
1889 create_new_stmts_for_cond_expr): Use integer_zerop function,
1890 that recognize not only zero-pointer, but zero-integer too.
1892 2008-01-25 Ben Elliston <bje@au.ibm.com>
1895 * fixproto: Escape "." in sed expression that strips leading "./".
1897 2008-01-24 H.J. Lu <hongjiu.lu@intel.com>
1900 * gcc.c (SWITCH_OK): Removed.
1901 (SWITCH_LIVE): Changed to bit.
1902 (SWITCH_FALSE): Likewise.
1903 (SWITCH_IGNORE): Likewise.
1904 (switchstr): Change live_cond to unsigned int.
1905 (process_command): Replace SWITCH_OK with 0.
1906 (do_self_spec): Likewise.
1907 (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
1908 (give_switch): Likewise.
1909 (used_arg): Likewise.
1910 (do_spec_1): Set the SWITCH_IGNORE bit.
1911 (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
1912 bits. Set the SWITCH_LIVE bit.
1914 2008-01-24 Andreas Krebbel <krebbel1@de.ibm.com>
1916 * config/s390/s390.h (MOVE_RATIO): Define new target macro.
1918 2008-01-24 Richard Sandiford <rsandifo@nildram.co.uk>
1920 PR tree-optimization/34472
1921 * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
1922 parameter to a "bool *" and set *DATA to false if there is
1923 an unsafe access. Do not delete the structure here.
1924 (check_cond_exprs): Delete it here instead.
1925 (check_cond_exprs, exclude_cold_structs): Do not increase
1926 I when removing a structure.
1928 2008-01-24 Uros Bizjak <ubizjak@gmail.com>
1931 * config/i386/i386.c (ix86_expand_vector_init): Consider only
1932 CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
1934 2008-01-24 Jakub Jakub Jelinek <jakub@redhat.com>
1937 * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
1938 a fixed vector for stack.
1940 2008-01-24 Ben Elliston <bje@au.ibm.com>
1943 * doc/gcc.texi (Software development): Add a direntry for g++.
1945 2008-01-23 Hans-Peter Nilsson <hp@axis.com>
1947 * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
1948 stale and straggling -fforce-addr comments above.
1950 * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
1952 * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
1953 * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
1955 2008-01-23 Michael Matz <matz@suse.de>
1958 * dwarf2out.c (force_type_die): Use modified_type_die instead of
1961 2008-01-23 Andreas Krebbel <krebbel1@de.ibm.com>
1963 * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
1966 2008-01-23 Anatoly Sokolov <aesok@post.ru>
1968 * config/avr/avr.c (avr_current_arch): New variable.
1969 (avr_arch_types): Add 'avr31' and 'avr51' entries.
1970 (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
1971 (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
1972 (avr_override_options): Init 'avr_current_arch'.
1973 (base_arch_s): Move from here...
1974 * config/avr/avr.h (base_arch_s): ... here. Add new members
1975 'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
1976 'mega' to 'have_jmp_call'.
1977 (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
1978 "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
1980 (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
1982 * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
1983 MULTILIB_MATCHES): (Ditto.).
1985 2008-01-23 Richard Guenther <rguenther@suse.de>
1988 * cgraphunit.c (cgraph_reset_node): Always mark the node
1989 not reachable if it is not queued already.
1991 2008-01-23 Bernd Schmidt <bernd.schmidt@analog.com>
1993 * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
1994 * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
1995 (cputype_selected): New static variable.
1996 (bfin_handle_option): Set it if -mcpu is used.
1997 (override_option): Select default set of workarounds if no cpu type
1998 selected on the command line.
1999 (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
2001 From Michael Frysinger <michael.frysinger@analog.com>
2002 * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
2003 BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
2005 * config/bfin/elf.h (LIB_SPEC): Use proper linker script
2006 for bf547, bf523, bf524, and bf526.
2007 * config/bfin/bfin.c (bfin_cpus[]): Add bf547, bf523, bf524, and
2009 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
2010 __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
2011 __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
2012 __ADSPBF547__ and __ADSPBF54x__ for bf547.
2013 * doc/invoke.texi (Blackfin Options): Document that
2014 -mcpu now accept bf547, bf523, bf524, and bf526.
2016 2008-01-22 Eric Botcazou <ebotcazou@adacore.com>
2018 PR rtl-optimization/34628
2019 * combine.c (try_combine): Stop and undo after the first combination
2020 if an autoincrement side-effect on the first insn has effectively
2023 2008-01-22 David Edelsohn <edelsohn@gnu.org>
2026 * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
2027 Offset addresses are not valid for Altivec or paired float modes.
2029 2008-01-22 Jakub Jelinek <jakub@redhat.com>
2032 * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
2033 if DECL_INITIAL (decl) is error_mark_node.
2036 * c-common.c (handle_vector_size_attribute): Only allow
2037 integral, scalar float and fixed point types. Handle OFFSET_TYPE
2038 the same way as pointer, array etc. types.
2039 * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
2042 * tree.c (build_type_attribute_qual_variant): Call
2043 build_qualified_type if attributes are equal, but quals are not.
2045 2008-01-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2048 * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
2049 * flags.h (warn_strict_aliasing): Remove.
2050 (warn_strict_overflow): Remove.
2051 * opts.c (warn_strict_aliasing): Remove.
2052 (warn_strict_overflow): Remove.
2053 * c-opts.c (c_common_handle_option): -Wall only sets
2054 -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
2055 (c_common_post_options): Give default values to -Wstrict-aliasing
2056 and -Wstrict-overflow if they are uninitialized.
2057 * common.opt (Wstrict-aliasing): Specify Var and Init.
2058 (Wstrict-overflow): Likewise.
2060 2008-01-22 Kenneth Zadeck <zadeck@naturalbridge.com>
2062 PR rtl-optimization/26854
2063 PR rtl-optimization/34400
2064 PR rtl-optimization/34884
2065 * ddg.c (create_ddg_dep_from_intra_loop_link): Use
2067 * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
2068 (df_rd_bb_info.expanded_lr_out): Deleted
2069 * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
2070 * loop_iv.c (iv_analysis_loop_init): Ditto. * df-problems.c
2071 (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
2072 df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
2073 Removed code to allocate, initialize or free expanded_lr_out.
2074 (df_rd_bb_local_compute_process_def): Restructured to make more
2076 (df_rd_confluence_n): Removed code to no apply invalidate_by_call
2077 sets if the sets are being trimmed.
2079 2008-01-22 H.J. Lu <hongjiu.lu@intel.com>
2082 * configure.ac (ld_vers): Support GNU linker version xx.xx.*
2083 (as_vers): Likewise.
2084 * configure: Regenerated.
2086 2008-01-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2089 * tree-pass.h (pass_build_alias): New pass.
2090 * tree-ssa-alias.c (gate_build_alias): New.
2091 (pass_build_alias): New.
2092 * passes.c (init_optimization_passes): Add pass_build_alias after
2093 pass_create_structure_vars.
2095 2008-01-22 Wolfgang Gellerich <gellerich@de.ibm.com>
2097 * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
2098 Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
2099 (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
2100 S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
2101 (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
2102 S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
2103 (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
2104 S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
2105 (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
2106 (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
2107 (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
2108 (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
2109 * config/s390/s390.md (FP_ALL): New mode iterator.
2110 (_d): New mode attribute.
2111 ("*signbit<mode>2>"): Changed mode of first operand.
2112 ("isinf<mode>2"): Changed mode of first operand.
2113 ("*TDC_insn"): Adaptation for DFP modes.
2115 2008-01-22 Ben Elliston <bje@au.ibm.com>
2117 * tree.c (check_qualified_type): Improve function description.
2119 2008-01-21 Jason Merrill <jason@redhat.com>
2122 * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
2123 * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
2126 2008-01-21 DJ Delorie <dj@redhat.com>
2128 * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
2131 2008-01-21 Richard Guenther <rguenther@suse.de>
2134 * tree-cfg.c (verify_expr): Allow all invariant expressions
2135 instead of just constant class ones as reference argument.
2136 * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
2137 like any other constant.
2138 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
2140 2008-01-21 H.J. Lu <hongjiu.lu@intel.com>
2142 * regmove.c (fixup_match_1): Update call crossed frequencies.
2144 2008-01-21 Richard Guenther <rguenther@suse.de>
2147 * tree-inline.c (setup_one_parameter): Deal with mismatched
2148 types using a VIEW_CONVERT_EXPR.
2150 2008-01-21 Alon Dayan <alond@il.ibm.com>
2151 Olga Golovanevsky <olga@il.ibm.com>
2153 PR tree-optimization/34701
2154 * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
2155 when the structure size is not a power of 2.
2157 2008-01-20 Kenneth Zadeck <zadeck@naturalbridge.com>
2159 * doc/install.texi: Add doc for --enable-checking=df.
2161 2008-01-20 Kaz Kojima <kkojima@gcc.gnu.org>
2163 PR rtl-optimization/34808
2164 * emit-rtl.c (try_split): Handle REG_RETVAL notes.
2166 2008-01-20 Richard Sandiford <rsandifo@nildram.co.uk>
2168 * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
2171 2008-01-19 Kenneth Zadeck <zadeck@naturalbridge.com>
2173 PR rtl-optimization/26854
2174 PR rtl-optimization/34400
2175 * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
2177 * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
2178 (df_rd_bb_info.expanded_lr_out): New.
2179 * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
2180 * loop_iv.c (iv_analysis_loop_init): Ditto.
2181 * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
2182 df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
2183 Added code to allocate, initialize or free expanded_lr_out.
2184 (df_rd_bb_local_compute_process_def): Restructured to make
2185 more understandable.
2186 (df_rd_confluence_n): Add code to do nothing with fake edges and
2187 code to no apply invalidate_by_call sets if the sets are being trimmed.
2188 (df_lr_local_finalize): Renamed to df_lr_finalize.
2189 (df_live_local_finalize): Renamed to df_live_finalize.
2191 2008-01-20 Richard Sandiford <rsandifo@nildram.co.uk>
2194 * config/mips/mips.md (div<mode>3): Use <recip_condition> when
2195 deciding whether to use reciprocal instructions.
2197 2008-01-19 Uros Bizjak <ubizjak@gmail.com>
2199 * dwarf2out.c (dwarf2out_switch_text_section): Do not call
2200 dwarf2out_note_section_used if cold_text_section is NULL.
2202 2008-01-19 Jakub Jelinek <jakub@redhat.com>
2204 PR gcov-profile/34610
2205 * tree-cfg.c (make_edges): Mark both outgoing edges from
2206 OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
2207 * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
2208 from OMP_FOR and OMP_CONTINUE outgoing edges.
2210 * tree-profile.c (tree_profiling): Return early if
2211 cfun->after_tree_profile != 0. Set cfun->after_tree_profile
2213 * omp-low.c (expand_omp_parallel): Copy after_tree_profile
2214 from cfun to child_cfun.
2215 * function.h (struct function): Add after_tree_profile bit.
2217 2008-01-19 Anatoly Sokolov <aesok@post.ru>
2219 * config/avr/avr.S (_exit): Disable interrupt.
2221 2008-01-18 Kenneth Zadeck <zadeck@naturalbridge.com>
2222 Steven Bosscher <stevenb.gcc@gmail.com>
2224 PR rtl-optimization/26854
2225 PR rtl-optimization/34400
2226 * df-problems.c (df_live_scratch): New scratch bitmap.
2227 (df_live_alloc): Allocate df_live_scratch when doing df_live.
2228 (df_live_reset): Clear the proper bitmaps.
2229 (df_live_bb_local_compute): Only process the artificial defs once
2230 since the order is not important.
2231 (df_live_init): Init the df_live sets only with the variables
2232 found live by df_lr.
2233 (df_live_transfer_function): Use the df_lr sets to prune the
2234 df_live sets as they are being computed.
2235 (df_live_free): Free df_live_scratch.
2237 2008-01-18 Ian Lance Taylor <iant@google.com>
2239 * common.opt: Add fmerge-debug-strings.
2240 * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
2241 flag_merge_debug_strings rather than flag_merge_constants.
2242 * doc/invoke.texi (Option Summary): Mention
2243 -fmerge-debug-strings.
2244 (Debugging Options): Document -fmerge-debug-strings.
2246 2008-01-18 Ian Lance Taylor <iant@google.com>
2249 * tree.h (DECL_IS_OPERATOR_NEW): Define.
2250 (struct tree_function_decl): Add new field operator_new_flag.
2251 * tree-inline.c (expand_call_inline): When inlining a call to
2252 operator new, force the return value to go into a variable, and
2253 set DECL_NO_TBAA_P on that variable.
2254 * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
2256 2008-01-18 Uros Bizjak <ubizjak@gmail.com>
2259 * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
2260 DWARF2_DEBUGGING_INFO.
2261 (dwarf2out_note_section_used): Ditto. Add prototype.
2262 (have_multiple_function_sections, text_section_used,
2263 cold_text_section_used, *cold_text_sections): Move declarations
2266 2008-01-17 Bob Wilson <bob.wilson@acm.org>
2268 * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
2269 field and add signal_ra.
2270 * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
2271 assignments to frame state pc. Move end of stack check after
2272 MD_FALLBACK_FRAME_STATE_FOR.
2273 (uw_update_context_1): Use frame state signal_regs if set, instead
2274 of checking signal_frame flag.
2275 (uw_update_context): Use frame state signal_ra if set.
2276 * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
2277 * config/xtensa/linux-unwind.h: New file.
2279 2008-01-18 Bernhard Fischer <aldot@gcc.gnu.org>
2281 * modulo-sched.c (get_sched_window): Fix comment typo.
2283 2008-01-17 Andrew MacLeod <amacleod@redhat.com>
2285 PR tree-optimization/34648
2286 * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
2288 2008-01-17 Anatoly Sokolov <aesok@post.ru>
2290 * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
2291 * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
2293 2008-01-17 Seongbae Park <seongbae.park@gmail.com>
2295 PR rtl-optimization/34400
2296 * df-core.c (df_worklist_dataflow_overeager,
2297 df_worklist_dataflow_doublequeue): New functions.
2298 (df_worklist_dataflow): Two different worklist solvers.
2299 * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
2302 2008-01-16 Sebastian Pop <sebastian.pop@amd.com>
2305 * doc/invoke.texi: Document the dependence on pthread for fopenmp
2306 and ftree-parallelize-loops.
2308 2008-01-17 Mircea Namolaru <namolaru@il.ibm.com>
2310 PR rtl-optimization/34826
2311 * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
2313 2008-01-17 Andreas Krebbel <krebbel1@de.ibm.com>
2315 * global.c (find_reg): Mark the eh regs as used if necessary.
2316 * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
2317 * ra.h (struct allocno): no_eh_reg field added. Changed
2318 no_stack_reg type to bitfield.
2320 2008-01-17 Eric Botcazou <ebotcazou@adacore.com>
2322 * tree.c (substitute_in_expr): Add missing 'break'.
2324 2008-01-17 Richard Guenther <rguenther@suse.de>
2326 PR tree-optimization/34825
2327 * tree-ssa-math-opts.c (is_division_by): Do not recognize
2328 x / x as division to handle.
2330 2008-01-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2332 * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
2333 "-pthread" is specified.
2334 * pa-hpux11.h (LIB_SPEC): Likewise.
2336 2008-01-16 Janis Johnson <janis187@us.ibm.com>
2337 Peter Bergner <bergner@vnet.ibm.com>
2339 PR rtl-optimization/33796
2340 * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
2342 2008-01-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2344 PR libgfortran/34699
2345 * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
2347 * pa-hpux10.h (LINK_SPEC): Likewise.
2348 * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
2350 2008-01-16 Richard Guenther <rguenther@suse.de>
2353 * fold-const.c (fold_convert_const_int_from_int): Do not
2354 set overflow if that occured only because of a sign extension
2355 change when converting from/to a sizetype with the same
2356 precision and signedness.
2358 2008-01-16 Uros Bizjak <ubizjak@gmail.com>
2361 * dwarf2out.c (output_call_frame_info): Move output of FDE initial
2362 location address to the correct place. Update copyright year.
2364 2008-01-16 Sebastian Pop <sebastian.pop@amd.com>
2366 * lambda-code.c (lambda_transform_legal_p): Handle the case of
2367 no dependences in the dependence_relations vector.
2369 2008-01-16 Jan Hubicka <jh@suse.cz>
2371 PR rtl-optimization/31396
2372 * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
2373 * cfg.c (dump_reg_info): Print it.
2374 * regs.h (struct reg_info_t): add freq_calls_crossed.
2375 (REG_FREQ_CALLS_CROSSED): New macro.
2376 * global.c (global_alloc): Compute freq_calls_crossed for allocno.
2377 (find_reg): Update call of CALLER_SAVE_PROFITABLE.
2378 * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
2379 regmove_optimize): Update call crossed frequencies.
2380 * local-alloc.c (struct qty): Add freq_calls_crossed.
2381 (alloc_qty): Copute freq_calls_crossed.
2382 (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
2383 (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
2384 * ra.h (struct allocno): Add freq_calls_crossed.
2386 2008-01-16 Sebastian Pop <sebastian.pop@amd.com>
2388 * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
2389 libgomp when compiling with ftree-parallelize-loops.
2390 (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
2392 2008-01-16 Richard Guenther <rguenther@suse.de>
2394 PR tree-optimization/34769
2395 * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
2396 * tree.c (int_cst_value): Instead make this function more
2397 permissive in what it accepts as valid input. Document this
2398 function always sign-extends the value.
2400 2008-01-16 Jakub Jelinek <jakub@redhat.com>
2401 Richard Guenther <rguenther@suse.de>
2404 * gimplify.c (fold_indirect_ref_rhs): Rename to ...
2405 (gimple_fold_indirect_ref_rhs): ... this.
2406 (gimple_fold_indirect_ref): New function with foldings
2407 that preserve lvalueness.
2408 (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
2409 * tree-flow.h (gimple_fold_indirect_ref): Declare.
2410 * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
2411 to fold an INDIRECT_REF, fall back to the old use of
2412 fold_indirect_ref_1.
2414 2008-01-16 Sebastian Pop <sebastian.pop@amd.com>
2416 * tree-data-ref.c (subscript_dependence_tester_1): Call
2417 free_conflict_function.
2418 (compute_self_dependence): Same.
2420 2008-01-16 Uros Bizjak <ubizjak@gmail.com>
2423 * debug.h (dwarf2out_switch_text_section): Move declaration from ...
2424 * dwarf2out.c (dwarf2out_switch_text_section): ... here. Make
2426 * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
2427 Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
2428 for DWARF2_UNWIND_INFO targets.
2430 2008-01-16 Richard Guenther <rguenther@suse.de>
2433 * c-typeck.c (common_pointer_type): Do not merge inconsistent
2434 type qualifiers for function types.
2436 2008-01-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
2438 * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
2439 loop_iterator li from previous commit.
2441 2008-01-15 Sebastian Pop <sebastian.pop@amd.com>
2443 * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
2445 2008-01-12 Sebastian Pop <sebastian.pop@amd.com>
2447 * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
2448 (parallelize_loops): Don't parallelize irreducible components.
2450 2008-01-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2453 * c-opts (c_common_post_options): Do not enable CPP
2454 flag_pedantic_errors by default.
2456 2008-01-14 Eric Botcazou <ebotcazou@adacore.com>
2458 PR rtl-optimization/31944
2459 * cse.c (remove_pseudo_from_table): New function.
2460 (merge_equiv_classes): Use above function to remove pseudo-registers.
2461 (invalidate): Likewise.
2463 2008-01-13 Richard Guenther <rguenther@suse.de>
2466 * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
2467 instead of TYPE_MODE to deal with calls from expand_one_error_var.
2469 2008-01-13 Uros Bizjak <ubizjak@gmail.com>
2471 * gcse.c (cprop_jump): Call validate_unshare_change instead of
2472 validate_change to unshare the source of the PC set.
2474 2008-01-12 Jan Hubicka <jh@suse.cz>
2477 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
2478 references above array bounds. This might trigger bounds checks for
2481 2008-01-12 Sebastian Pop <sebastian.pop@amd.com>
2483 * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
2484 new_replaceable_dependencies.
2486 2008-01-12 Doug Kwan <dougkwan@google.com>
2488 * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
2489 instead of OPT_Wreturn_type in warning due to ignored return type
2491 * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
2492 options included in -Wextra.
2493 * c.opt: New option -Wignored_qualifiers.
2494 * doc/invoke.texi (Warning Options, -Wextra): Add new option
2495 -Wignore_qualifiers.
2496 (-Wignored-qualifiers): Document.
2497 (-Wreturn-type): Remove description of functionality now handled
2498 by -Wignored-qualifiers.
2500 2008-01-12 Eric Botcazou <ebotcazou@adacore.com>
2503 * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
2504 NOP_EXPR if it is between integral types with the same precision.
2506 2008-01-12 Jan Hubicka <jh@suse.cz>
2509 * invoke.texi (max-inline-recursive-depth): Fix default value.
2511 2008-01-12 Zdenek Dvorak <ook@ucw.cz>
2513 * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
2516 2008-01-11 Bob Wilson <bob.wilson@acm.org>
2518 * config/xtensa/xtensa.c (override_options): Set flag_shlib.
2520 2008-01-11 James E. Wilson <wilson@specifix.com>
2523 * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
2525 2008-01-11 Anatoly Sokolov <aesok@post.ru>
2527 * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
2528 save/restore frame pointer register and don't use 'call-prologues'
2529 optimization in function with "OS_task" attribute.
2531 2008-01-11 Eric Botcazou <ebotcazou@adacore.com>
2534 * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
2535 when copying to memory.
2537 2008-01-11 Steven Bosscher <stevenb.gcc@gmail.com>
2539 PR rtl-optimization/30905
2540 * cfgcleanup.c: Include dce.h
2541 (crossjumps_occured): New global variable.
2542 (try_crossjump_bb): Exit loop after finding a fallthru edge.
2543 If something changed, set crossjumps_occured to true.
2544 (try_optimize_cfg): Clear crossjumps_occured at the beginning.
2545 Don't add/remove fake edges to exit here...
2546 (cleanup_cfg): ...but do it here, when crossjumping.
2547 Run a fast DCE when successful crossjumps occured in the latest
2548 iteration of try_optimize_cfg.
2550 2008-01-11 Richard Guenther <rguenther@suse.de>
2552 * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
2553 (struct vn_unary_op_s): Likewise.
2554 (vn_reference_insert): Free old reference on hash collision.
2556 2008-01-10 Raksit Ashok <raksit@google.com>
2558 PR rtl-optimization/27971
2559 * combine.c (find_split_point): Split PLUS expressions which are
2560 inside a MEM rtx, and whose first operand is complex.
2562 2008-01-10 DJ Delorie <dj@redhat.com>
2564 * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
2565 (m32c_hard_regno_nregs): ...this, which is now a wrapper.
2566 (m32c_hard_regno_ok): Call the underlying function.
2568 2008-01-10 Richard Guenther <rguenther@suse.de>
2571 * tree-cfg.c (tree_merge_blocks): Do not go through the
2572 full-blown folding and stmt updating path if we just deal
2573 with virtual operands.
2574 * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
2575 test for abnormal SSA_NAMEs.
2577 2008-01-10 Andreas Krebbel <krebbel1@de.ibm.com>
2580 * reload.c (push_reload): Add assertions. All constants from
2581 reg_equiv_constant should have been used for replacing the respective
2583 (find_reloads_address): Invoke find_reloads_address_part for
2584 constant taken from the reg_equiv_constant array.
2586 2008-01-10 Steven Bosscher <stevenb.gcc@gmail.com>
2588 * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
2589 field (valnum) the first in the struct. Replace bools with
2592 2008-01-10 Richard Guenther <rguenther@suse.de>
2594 PR tree-optimization/34651
2595 * tree-sra.c (sra_build_assignment): Sanitize. Use the correct
2596 types and ordering for masking and converting.
2598 2008-01-09 Sebastian Pop <sebastian.pop@amd.com>
2600 PR tree-optimization/34017
2601 * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
2602 also for PHI_NODE expressions.
2604 2008-01-09 Jan Hubicka <jh@suse.cz>
2606 PR tree-optimization/34708
2607 * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
2608 based on number of case labels.
2609 (init_inline_once): Remove switch_cost.
2610 * tree-inline.h (eni_weights_d): Remove switch_cost.
2612 2008-01-09 Richard Guenther <rguenther@suse.de>
2613 Andrew Pinski <andrew_pinski@playstation.sony.com>
2616 * gimplify.c (gimplify_cond_expr): Do not create an addressable
2617 temporary if an rvalue is ok or an lvalue is not required.
2619 2008-01-09 Richard Guenther <rguenther@suse.de>
2622 * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
2625 2008-01-09 Richard Guenther <rguenther@suse.de>
2628 * tree.c (host_integerp): Check for sizetype only if the
2629 type is an integer type.
2631 2008-01-09 Steven Bosscher <stevenb.gcc@gmail.com>
2634 * opts.c (decode_options): Disable inlining of functions called
2635 once if not in unit-at-a-time mode.
2637 2008-01-09 Alexandre Oliva <aoliva@redhat.com>
2639 * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
2641 2008-01-08 Richard Guenther <rguenther@suse.de>
2644 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
2645 out early if the result will be unused.
2647 2008-01-08 Uros Bizjak <ubizjak@gmail.com>
2652 2008-01-05 Uros Bizjak <ubizjak@gmail.com>
2653 * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
2656 2008-01-08 Jan Sjodin <jan.sjodin@amd.com>
2658 * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
2659 for vectorization tuned.
2661 2008-01-08 Richard Guenther <rguenther@suse.de>
2663 PR tree-optimization/34683
2664 * tree-ssa-operands.c (operand_build_cmp): Export.
2665 * tree-ssa-operands.h (operand_build_cmp): Declare.
2666 * tree-vn.c (vuses_compare): Remove.
2667 (sort_vuses): Use operand_build_cmp.
2668 (sort_vuses_heap): Likewise.
2669 * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
2670 to re-use old VEC if available. Do not sort already sorted VUSEs.
2671 (vdefs_to_vec): Do not sort already sorted VDEFs.
2673 2008-01-08 Jakub Jelinek <jakub@redhat.com>
2676 * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
2678 2008-01-08 Uros Bizjak <ubizjak@gmail.com>
2681 * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
2682 limitations of reciprocal sequences on x86 targets.
2684 2008-01-08 Richard Guenther <rguenther@suse.de>
2686 PR tree-optimization/34683
2687 * tree-flow-inline.h (var_ann): Remove overzealous asserts.
2689 2008-01-07 Jakub Jelinek <jakub@redhat.com>
2692 * config/darwin.c (darwin_mergeable_string_section): Don't use
2693 .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
2695 2008-01-07 Uros Bizjak <ubizjak@gmail.com>
2698 * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
2699 negxf2. Macroize expander using X87MODEF mode iterator. Change
2700 predicates of op0 and op1 to register_operand.
2701 (abs<mode>2): Rename from abssf2, absdf2 and negxf2. Macroize
2702 expander using X87MODEF mode iterator. Change predicates of
2703 op0 and op1 to register_operand.
2704 ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
2705 corresponding patterns and macroize using MODEF macro. Change
2706 predicates of op0 and op1 to register_operand and remove
2707 "m" constraint. Disparage "r" alternative with "!".
2708 ("*absneg<mode>2_i387"): Rename from corresponding patterns and
2709 macroize using X87MODEF macro. Change predicates of op0 and op1
2710 to register_operand and remove "m" constraint. Disparage "r"
2711 alternative with "!".
2712 (absneg splitter with memory operands): Remove.
2713 ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
2714 patterns and macroize using X87MODEF mode iterator.
2715 * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
2716 Change predicate of op1 to register_operand.
2717 * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
2718 for memory operands.
2720 2008-01-07 Nathan Froyd <froydnj@codesourcery.com>
2722 * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
2724 2008-01-07 Richard Guenther <rguenther@suse.de>
2726 * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
2729 2008-01-07 Richard Guenther <rguenther@suse.de>
2731 PR tree-optimization/34683
2732 * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
2733 VOPs of the needed size to save memory. Use VEC_quick_push
2734 to save compile-time.
2735 (vdefs_to_vec): Likewise.
2737 2008-01-07 Sa Liu <saliu@de.ibm.com>
2739 * config/spu/spu.md (divdf3): Genetate inline code for double
2740 division. The implementation doesn't handle INF or NAN, therefore it
2741 only applies when -ffinite-math-only is given.
2743 2008-01-06 Paolo Carlini <pcarlini@suse.de>
2746 * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
2747 * doc/cpp.texi ([Common Predefined Macros]): Document.
2749 2008-01-06 Uros Bizjak <ubizjak@gmail.com>
2751 * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
2752 order to use commutative addition instead of subtraction.
2754 2008-01-06 Andrew Pinski <andrew_pinski@playstation.sony.com>
2755 Mircea Namolaru <namolaru@il.ibm.com>
2756 Vladimir Yanovsky <yanov@il.ibm.com>
2757 Revital Eres <eres@il.ibm.com>
2759 PR tree-optimization/34263
2760 * tree-outof-ssa.c (process_single_block_loop_latch,
2761 contains_tree_r): New functions.
2762 (analyze_edges_for_bb): Call process_single_block_loop_latch
2763 function to empty single-basic-block latch block if possible.
2765 2008-01-05 Uros Bizjak <ubizjak@gmail.com>
2767 * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
2769 (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
2771 2008-01-05 Richard Sandiford <rsandifo@nildram.co.uk>
2773 * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
2775 2008-01-05 Richard Sandiford <rsandifo@nildram.co.uk>
2777 * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
2779 2008-01-05 Jakub Jelinek <jakub@redhat.com>
2781 PR tree-optimization/34618
2782 * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
2785 2008-01-05 Uros Bizjak <ubizjak@gmail.com>
2788 * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
2789 in the call to gen_rtx_NE. Remove unneeded VECTOR_MODE_P check.
2790 Update copyright year.
2792 * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
2793 Update copyright year.
2794 * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
2797 2008-01-05 Zhouyi Zhou <zhouzhouyi@FreeBSD.org>
2799 * tree-vrp.c (find_conditional_asserts): Remove redundant check that
2800 edge does not point to current bb before changing need_assert.
2802 2008-01-04 Richard Guenther <rguenther@suse.de>
2805 * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
2806 for verifying purposes if they are is_gimple_min_invariant.
2808 2008-01-04 Aldy Hernandez <aldyh@redhat.com>
2810 PR tree-optimization/34448
2811 PR tree-optimization/34465
2812 * gimplify.c (gimplify_init_constructor): Add new parameter
2813 notify_temp_creation. Use it.
2814 (gimplify_modify_expr_rhs): Take volatiles into account when
2815 optimizing constructors.
2816 Do not optimize constructors if gimplify_init_constructor will dump to
2818 * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
2819 * gcc.c-torture/compile/pr34448.c: New.
2821 2008-01-04 Jakub Jelinek <jakub@redhat.com>
2823 PR gcov-profile/34609
2824 * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
2825 return_slot if result is TREE_ADDRESSABLE.
2827 2008-01-04 Richard Sandiford <rsandifo@nildram.co.uk>
2829 * config/mips/mips.md (sqrt_condition): Tweak comment.
2830 (recip_condition): Likewise. Require TARGET_FLOAT64 for DFmode.
2832 2008-01-03 Tom Tromey <tromey@redhat.com>
2835 * c-common.c (c_type_hash): Handle VLAs.
2837 2008-01-03 Jan Hubicka <jh@suse.cz>
2839 PR tree-optimization/31081
2840 * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
2841 0 when inlining and not inlining to first basic block.
2842 (remap_decl): When var is initialized to 0, don't set default_def.
2843 (expand_call_inline): Set entry_bb.
2844 * tree-inline.h (copy_body_data): Add entry_bb.
2846 2008-01-03 Jakub Jelinek <jakub@redhat.com>
2849 * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
2852 PR tree-optimization/29484
2853 * tree-inline.c (inline_forbidden_p_2): New function.
2854 (inline_forbidden_p): Disallow inlining if some static var
2855 has an address of a local LABEL_DECL in its initializer.
2856 * doc/extend.texi (Labels as Values): Document &&foo behaviour
2859 2008-01-03 Sebastian Pop <sebastian.pop@amd.com>
2861 PR tree-optimization/34635
2862 * tree-data-ref.c (add_other_self_distances): Make sure that the
2863 evolution step is constant.
2865 2008-01-03 Jakub Jelinek <jakub@redhat.com>
2868 * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
2870 2008-01-02 Richard Sandiford <rsandifo@nildram.co.uk>
2872 * tree-sra.c (scalarize_init): Insert the generate_element_init
2873 statements after the generate_element_zero statements.
2875 2008-01-02 Richard Guenther <rguenther@suse.de>
2879 * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
2880 for very large number of operands instead of ICEing.
2882 2008-01-02 Arthur Norman <acn1@cam.ac.uk>
2885 * gcc/config/i386/i386.c (ix86_expand_prologue): Save red-zone
2886 while stack probing.
2888 2008-01-01 Douglas Gregor <doug.gregor@gmail.com>
2890 * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
2893 2008-01-01 Volker Reichelt <v.reichelt@netcologne.de>
2896 * tree-mudflap.c (mx_register_decls): Guard warning by
2897 !DECL_ARTIFICIAL check.
2899 2008-01-01 Jakub Jelinek <jakub@redhat.com>
2901 * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
2902 sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
2903 sse5_perm<mode>): Fix constraints.