2008-03-03 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / ChangeLog
blob00f2d927ffcfa355bc062a5977b25601133a5b2d
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.
15         
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
21         frequency.
22         (init_ira_costs): Use bigger initial cost value.
23         
24         * ira-int.h: Ditto.
25         (allocno): New members somewhere_renamed_p and
26         excess_pressure_points_num.
27         (ALLOCNO_SOMEWHERE_RENAMED_P, ALLOCNO_EXCESS_PRESSURE_POINTS_NUM):
28         New macros.
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.
35         
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
41         variables.
42         (coalesced_pseudo_reg_compare, calculate_spill_cost,
43         sort_regnos_for_alter_reg, better_spill_reload_regno_p): New
44         functions.
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.
49         
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
59         ALLOCNO_MEMORY_COST.
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
69         reg_class_union.
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.
93         
94         * doc/invoke.texi (ira-max-loops-num): Describe.
95         
96 2008-02-20  Vladimir Makarov  <vmakarov@redhat.com>
98         * ira.h, ira-emit.c: Add year 2008 to the copyright.
99         
100         * ira-int.h: Ditto.
101         (struct copy): Rename move_insn to insn.
102         (initiate_ira_assign, finish_ira_assign, debug_allocno_copies):
103         New function prototypes.
104         
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.
110         
111         * ira-conflicts.c: Add year 2008 to the copyright.  Rename member
112         move_insn of the copies to insn.
114         * ira.c: Ditto.
115         (setup_reg_class_intersect_union): Fix reg_class_union for cover
116         classes.
117         (ira): Call initiate_ira_assign and finish_ira_assign.  Remove
118         setting reload_completed up.
119         
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
125         REG_N_REFS.
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):
132         New functions.
133         (allocno_update_cost_check, update_cost_check): New static
134         variables.
135         (update_copy_costs): Increment update_cost_check.  Call
136         update_copy_costs_1.
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
143         finish_cost_update.
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.
152         
153         * postreload.c (gate_handle_postreload): Don't do post reload
154         optimizations unless the reload is completed.
155         
156         * cfgloopanal.c (estimate_reg_pressure_cost): Return zero if we
157         use regional RA.
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.
163         
164 2008-01-10  Vladimir Makarov  <vmakarov@redhat.com>
166         * reload1.c (compute_use_by_pseudos): Permits spilled registers in
167         FROM.
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
178         for spilled pseudos.
180 2008-01-10  Vladimir Makarov  <vmakarov@redhat.com>
182         * reload1.c (compute_use_by_pseudos): Permits spilled registers in
183         FROM.
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
194         for spilled pseudos.
196         * global.c (reg_becomes_live, build_insn_chain): Don't ignore
197         spilled pseudos for IRA.
198         
199         * caller-save.c (calculate_local_save_info,
200         save_call_clobbered_regs): Ignore spilled pseudos for IRA.
201         
202         * toplev.c (backend_init_target): Call init_ira.
203         (backend_init): Move call of init_ira_once before
204         backend_init_target.
205         
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
209         signature.
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
220         prototypes.
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.
224         
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
229         variables.
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
255         functions.
256         (init_ira_once): Initialize register_move_cost,
257         register_may_move_in_cost, register_may_move_out_cost.  Move some
258         code to init_ira.
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
262         cost vector.
263         (basic_block_order_nums): New variable.
264         (chain_freq_compare, chain_bb_compare, sort_insn_chain): New
265         functions.
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.
301         
302         * ira-conflicts.c (add_insn_allocno_copies): Use
303         allocate_and_set_costs.
304         (allocno_conflict_p): Simplify the code.
305         
306         * ira-costs.c: Rename reg_class_subunion to reg_class_union
307         everywhere.
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
311         init_move_cost.
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
316         for alt_cost.
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
333         cost_classes.
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
340         free_ira_costs.
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
345         cost vectors.
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.
351         
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.
365         
366         * ira-build.c (check_and_add_conflicts, ira_flattening): Increase
367         threshold for internal_flag_ira_verbose.
368         
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
394         reg_save_code.
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
411         definitions.
412         (loop_tree_node_t, allocno_live_range_t): New typedefs.  Use them
413         everywhere.
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
428         macros.
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
435         ira-conflicts.c.
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
447         definitions.
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):
454         Remove.
455         
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
459         variables.
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
477         calls.
478         
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
487         functions.
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
521         statistics.
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):
534         Remove.
535         (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move to
536         ira-int.h.
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.
544         (regs_set): Remove.
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
550         conflicts.
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
560         variables.
561         (costs): Rename to total_costs.
562         (COSTS_OF_ALLOCNO): New macro.
563         (curr_regno_allocno_map): Remove.  Use ira_curr_regno_allocno_map
564         instead.
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
577         traverse_loop_tree.
578         (init_ira_costs_once): Allocate init_cost, op_costs,
579         this_op_costs, temp_costs.
580         (finish_ira_costs_once): New function.
581         
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
600         mixed algorithm.
601         (allocno_priorities): New variable.
602         (start_allocno_priorities, finish_allocno_priorities): New
603         functions.
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.
608         
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.
622         
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):
630         New macros.
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
635         functions.
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
640         allocnos.
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):
646         New functions.
647         (color_allocnos): Allocate/free processed_allocno_bitmap.  Call
648         coalesce_allocnos.
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.
664         
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
670         ALLOCNO_BEST_CLASS.
672         * ira-costs.c (setup_allocno_cover_class_and_costs): Initialize
673         ALLOCNO_BEST_CLASS.
675         * ira-int.h (allocno): New member best_class.
676         (ALLOCNO_BEST_CLASS): New macro.
677         
678 2007-09-19  Vladimir Makarov  <vmakarov@redhat.com>
680         * ira-int.h (allocno): Remove calls_crosed.  Add
681         calls_crossed_start.
682         (ALLOCNO_CALLS_CROSSED): Remove.
683         (ALLOCNO_CALLS_CROSSED_START): Add.
684         (build_df): Remove.
685         (regno_calls, add_regno_call): New.
686         
687         * ira-build.c (initiate_calls, finish_calls, add_regno_call): New
688         functions.
689         (regno_calls, regno_calls_num): New globals.
690         (build_df): Remove.
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
701         df_finish.
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
707         a change.
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.
725         
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
738         REG_LIVE_LENGTH.
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
745         post_order_compute.
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
762         the function.
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
783         parameter type.
784         
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.
792         
793 2007-05-04  Vladimir Makarov  <vmakarov@redhat.com>
795         * ira-conflicts.c: Change pseudo to allocno.
796         * ira-color.c: Ditto.
797         * ira-emit.c: Ditto.
798         * ira-build.c: Ditto.
799         * ira.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.
806         * ira-int.h: Ditto.
807         (allocno) Use one bit field for boolean members.
808         (important_classes_num, important_classes): New external
809         definitions.
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
816         the option argument.
817         
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.
821         
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.
826         
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
833         preorder.
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.
841         
842         * ira-build.c (create_loop_tree_nodes): Set up initial reg
843         pressure.
844         (create_pseudo): Add parameter.  Use the parameter value instead
845         of regno.
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.
852         
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.
860         
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
868         prototypes.
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
876         pseudo.
877         (print_loop_title): Print reg pressure.
878         (color_pass): Use PSEUDO_CAP_MEMBER instead of regno.  Add mixed
879         coloring algorithm.
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
887         costs.
889         * ira.c (setup_reg_renumber): Add 2 parameters.  Use cap_number
890         instead of regno.  Initialize caller_save_needed.  Make assertion
891         stricter.
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
901         is split.
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
914         memory-memory move.
916         * ira-call.c: New file.
917         
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):
922         New.
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
930         flag_ira_ipra.
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
936         class.
937         (reuse_stack_slot): Use flag_ira_share_spill_slots.
938         * config/arm/arm.h (IRA_COVER_CLASSES): New macro.
939         
940 2007-02-31  Vladimir Makarov  <vmakarov@redhat.com>
942         * reload.h (debug_save_data): New definition.
943         
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
969         call_used_regs.
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
978         functions.
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):
990         Ditto.
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.
1035         
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.
1053         
1054 2006-12-22  Vladimir Makarov  <vmakarov@redhat.com>
1056         * rtl.h (setup_reg_classes): New function prototype.
1057         
1058         * regclass.c (setup_reg_classes): New function.
1060         * global.c (global_alloc): Dump information about register
1061         assigning.
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
1068         assigning.
1070         * ira-build.c (ira_build): Return true if we have loops for the
1071         allocation.
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.
1095         
1096         * caller-save.c (no_caller_save_reg_set): New global variable.
1097         (init_caller_save): Set up no_caller_save_reg_set.
1098         
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
1109         declaration.
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
1124         options.
1126         * regclass.c (contains_reg_of_mode, move_cost, may_move_in_cost,
1127         may_move_out_cost): Make the variables external.
1128         
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.
1152         
1153         * doc/invoke.texi: Describe new options -fira,
1154         -fira-biased-coloring, and -fira-algorithm.
1155         
1156         * doc/passes.texi: Decribe IRA.
1158         * doc/tm.texi:  Decribe macro IRA_COVER_CLASSES.
1159         
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.
1167         
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.
1185         
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>
1201         PR libfortran/35063
1202         * gthr-win32.h (__gthread_mutex_destroy_function): New function
1203         to CloseHandle after unlocking to prevent accumulation of handle
1204         count.
1206 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1208         PR middle_end/34150
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>
1215         PR middle-end/34627
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>
1221         PR bootstrap/35051
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>
1247         PR other/32754
1248         * doc/options.texi (Options): Replace references to opts.sh with
1249         optc-gen.awk.
1250         * opts-common.c: Likewise.
1251         * optc-gen.awk: Likewise.
1252         
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>
1259         PR rtl-opt/33410
1260         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
1261         EXPR_LIST for the REG_EQUAL instead of a comparison with a 
1262         funny mode.
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>
1273         PR other/35107
1274         * Makefile.in (LIBS): Remove $(GMPLIBS).
1275         (cc1-dummy, cc1): Add $(GMPLIBS).
1277 2008-02-06  Jan Hubicka  <jh@suse.cz>
1279         PR target/23322
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>
1285         PR target/35083
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
1301         -msx multilibs.
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
1325         PR 33738
1326         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
1328 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1330         PR other/35070
1331         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
1333 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
1335         PR target/35084
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>
1347         PR target/35083
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
1355         PR 33738
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>
1362         PR middle-end/33631
1363         * expr.c (count_type_elements): Give for unions instead of
1364         guessing.
1366 2008-02-04  Richard Guenther  <rguenther@suse.de>
1368         PR middle-end/35043
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>
1378         PR other/29972
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>
1386         PR target/35045
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>
1408         PR bootstrap/33781
1409         * configure.ac (--enable-fixed-point): Disable unless explicitly
1410         requested on IRIX.
1411         * configure: Regenerate.
1413 2008-02-01  Richard Guenther  <rguenther@suse.de>
1415         PR other/35042
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>
1423         PR c/29326
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.
1431         
1432         * doc/configterms.texi (Configure Terms): Fix typo.
1433         * doc/cpp.texi (Common Predefined Macros): Ditto.
1434         * doc/md.texi (Machine Constraints): Ditto.
1435         
1436         * doc/makefile.texi (Makefile): Add comma.
1438 2008-01-31  Tom Browder  <tom.browder@gmail.com>
1439             Gerald Pfeifer  <gerald@pfeifer.com>
1440         
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>
1448         PR target/34900
1449         * config/mips/mips.c (gen_load_const_gp): New function, taking a
1450         comment from...
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.
1461         
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>
1473         PR c/34993
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>
1483         PR target/34982
1484         * i386.c (init_cumulative_args): Use real function declaration when
1485         calling locally.
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>
1506         PR middle-end/34969
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.
1514         PR c/35017
1515         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
1516         static decls.
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>
1526         PR c/35002
1527         * ipa-struct-reorg.c: Fix spelling.
1528         * params.def: Ditto.
1530 2008-01-29  Richard Guenther  <rguenther@suse.de>
1532         PR middle-end/35006
1533         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
1534         field.
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>
1542         PR c++/34055
1543         PR c++/34103
1544         PR c++/34219
1545         PR c++/34606
1546         PR c++/34753
1547         PR c++/34754
1548         PR c++/34755
1549         PR c++/34919
1550         PR c++/34961
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>
1556         PR target/34412
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>
1570         PR c++/34862
1571         PR c++/33407
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>
1579         PR 31535
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>
1619         PR middle-end/34688
1620         * final.c (output_addr_const): Handle TRUNCATE.
1622 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
1624         PR target/34711
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):
1630         New functions.
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 
1643         in comp_cost.
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>
1650         PR target/34814
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):
1668         New prototype.
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>
1704         PR c++/34965
1705         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
1706         TRUTH_XOR_EXPR.
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
1710         and TRUTH_XOR_EXPR.
1712 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
1714         PR target/34794
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
1726         if necessary.
1728 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
1730         PR target/34981
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
1739         emit_call_insn.
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
1744         the call insn.
1745         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
1746         TARGET_USE_GOT.
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>
1765         PR target/34970
1766         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
1768 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
1770         PR other/31955
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
1790         on C4x.
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>
1806         PR middle-end/32244
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>
1812         PR middle-end/33880
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
1824         defining statement.
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>
1870         PR target/34856
1871         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
1872         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
1873         vector elements.
1875 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
1877         PR middle-end/33333
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):
1883         New functions.
1884         (remove_structure): Update allocations list before removing structure.
1885         
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>
1894         PR other/22232
1895         * fixproto: Escape "." in sed expression that strips leading "./".
1897 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
1899         PR driver/34904
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>
1930         PR target/34856
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>
1936         PR middle-end/34934
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>
1942         PR c++/25701
1943         * doc/gcc.texi (Software development): Add a direntry for g++.
1944         
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
1951         define.
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>
1957         PR debug/34895
1958         * dwarf2out.c (force_type_die): Use modified_type_die instead of
1959         gen_type_die.
1961 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
1963         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
1964         malloc result type.
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__"
1979         macros.
1980         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51' 
1981         architectures.
1982         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, 
1983         MULTILIB_MATCHES): (Ditto.).
1985 2008-01-23  Richard Guenther  <rguenther@suse.de>
1987         PR middle-end/31529
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
2008         bf526.
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
2021         been lost.
2023 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
2025         PR target/34529
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>
2031         PR c++/34607
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.
2035         PR c++/34914
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.
2041         PR c++/34917
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>
2047         PR 32102
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
2066         DF_RD->gen.
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
2075         understandable.
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>
2081         PR bootstrap/32287
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>
2088         PR middle-end/33092
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>
2121         PR c++/34196
2122         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
2123         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
2124         if it is set.
2126 2008-01-21  DJ Delorie  <dj@redhat.com>
2128         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
2129         return zero.
2131 2008-01-21  Richard Guenther  <rguenther@suse.de>
2133         PR middle-end/34856
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>
2146         PR c/34885
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>
2152         
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.
2160         
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
2169         input.
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
2176         DF_RD->gen.
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>
2193         PR target/34831
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
2212         at the end.
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>
2248         PR c++/33407
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>
2258         PR debug/34484
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
2264         before their uses.
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):
2300         New param.
2302 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
2304         PR testsuite/34821
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
2346         static links.
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>
2352         PR middle-end/32628
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>
2360         PR debug/34249
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>
2403         PR c/34668
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>
2422         PR debug/34249
2423         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
2424         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
2425         function global.
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>
2432         PR c/34768
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>
2452         PR c++/24924
2453         * c-opts (c_common_post_options): Do not enable CPP
2454         flag_pedantic_errors by default.
2455         
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>
2465         PR middle-end/34601
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>
2476         PR middle-end/32135
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
2479         pointers to arrays.
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
2490         qualifiers.
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>
2502         PR ada/33788
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>
2508         PR other/28023
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
2514         correct type.
2516 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
2517         
2518         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
2519         
2520 2008-01-11  James E. Wilson  <wilson@specifix.com>
2522         PR target/26015
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>
2533         PR middle-end/31309
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>
2570         PR middle-end/34683
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>
2579         PR middle-end/34641
2580         * reload.c (push_reload): Add assertions.  All constants from
2581         reg_equiv_constant should have been used for replacing the respective
2582         pseudo earlier.
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
2590         unit bit fields.
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>
2615         PR middle-end/30132
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>
2621         PR middle-end/34458
2622         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
2623         adjust return type.
2625 2008-01-09  Richard Guenther  <rguenther@suse.de>
2627         PR middle-end/34679
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>
2633         PR debug/26364
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>
2643         PR middle-end/31863
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>
2649         PR target/34709
2650         Revert:
2652         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
2653         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
2654         for TARGET_RECIP.       
2655         
2656 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
2657         
2658         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
2659         for vectorization tuned.
2660         
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>
2675         PR middle-end/34694
2676         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
2678 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
2680         PR target/34702
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>
2691         PR target/34622
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>
2697         PR target/34682
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
2727         fields.
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>
2745         PR libstdc++/34680
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
2768         for TARGET_RECIP.
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
2783         flag from T.
2785 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
2787         PR target/34673
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
2795         using NR fixup.
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>
2804         PR middle-end/34029
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
2817         memory.
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>
2834         PR c/34457
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>
2848         PR c++/34619
2849         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
2850         before returning.
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
2857         vs. inlining.
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>
2867         PR middle-end/34608
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>
2877         PR middle-end/34093
2878         PR middle-end/31976
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>
2884         PR target/34013
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
2891         in C++0x mode.
2893 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
2895         PR libmudflap/26442
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.