Merge -r 127928:132243 from trunk
[official-gcc.git] / gcc / ChangeLog
blobfc2cc2698e95e4b86bf509b6af9539ed7ac08944
1 2008-01-10  Vladimir Makarov  <vmakarov@redhat.com>
3         * reload1.c (compute_use_by_pseudos): Permits spilled registers in
4         FROM.
5         (temp_pseudo_reg_arr): New variable.
6         (reload): Use instead temp_pseudo_reg_arr of pseudo_regs.  Move
7         freeing to the function end.  Don't clear spilled_pseudos for IRA.
8         Restore original insn chain for IRA.
9         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
10         (count_pseudo, count_spilled_pseudo): Check spilled pseudos.
11         (alter_reg): Set up spilled_pseudos.
12         (finish_spills): Set up pseudo_previous_regs only for spilled
13         pseudos.  Call reassign_pseudos once for all spilled pseudos,
14         pass more arguments.  Don't clear live_throughout and dead_or_set
15         for spilled pseudos.
17 2008-01-10  Vladimir Makarov  <vmakarov@redhat.com>
19         * reload1.c (compute_use_by_pseudos): Permits spilled registers in
20         FROM.
21         (temp_pseudo_reg_arr): New variable.
22         (reload): Use instead temp_pseudo_reg_arr of pseudo_regs.  Move
23         freeing to the function end.  Don't clear spilled_pseudos for IRA.
24         Restore original insn chain for IRA.
25         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
26         (count_pseudo, count_spilled_pseudo): Check spilled pseudos.
27         (alter_reg): Set up spilled_pseudos.
28         (finish_spills): Set up pseudo_previous_regs only for spilled
29         pseudos.  Call reassign_pseudos once for all spilled pseudos,
30         pass more arguments.  Don't clear live_throughout and dead_or_set
31         for spilled pseudos.
33         * global.c (reg_becomes_live, build_insn_chain): Don't ignore
34         spilled pseudos for IRA.
35         
36         * caller-save.c (calculate_local_save_info,
37         save_call_clobbered_regs): Ignore spilled pseudos for IRA.
38         
39         * toplev.c (backend_init_target): Call init_ira.
40         (backend_init): Move call of init_ira_once before
41         backend_init_target.
42         
43         * ira.h (init_ira, sort_insn_chain, mark_memory_move_deletion):
44         New function prototypes.
45         (retry_ira_color): Rename to reassign_pseudos.  Change
46         signature.
48         * ira-int.h (allocno): New member dont_reassign_p.
49         (ALLOCNO_DONT_REASSIGN_P): New macro.
50         (memory_move_cost): Change element type.
51         (register_move_cost): Change type.
52         (register_may_move_in_cost, register_may_move_out_cost,
53         reg_class_intersect): New arrays.
54         (important_class_nums): Fix element type.
55         (hard_reg_not_in_set_p): Make it static inline.
56         (init_register_move_cost, init_ira_costs): New function
57         prototypes.
58         (allocno_conflict_index): Remove.
59         (allocate_and_set_costs, allocate_and_copy_costs,
60         allocate_and_set_or_copy_costs): New static inline functions.
61         
62         * ira-build.c (compress_allocno_conflict_vec,
63         compress_conflict_vecs): New functions.
64         (allocno_conflict_index): Remove.
65         (allocno_conflict_check, curr_allocno_conflict_check_tick): New
66         variables.
67         (propagate_info_to_cap): Use allocate_and_copy_costs.
68         (check_and_add_conflicts): Don't call allocno_conflict_index.
69         (ira_flattening): Add some assertions.  Check that cost vectors
70         have been allocated.  Don't call allocno_conflict_index.  Call
71         compress_conflict_vecs.
73         * ira.c (memory_move_cost, register_move_cost): Change types.
74         (register_may_move_in_cost, register_may_move_out_cost,
75         strict_class_subset_p): New variables.
76         (setup_class_subset_and_move_costs): Rename to
77         setup_class_subset_and_memory_move_costs.  Remove
78         register_move_cost setup.  Don't consider no_unit_alloc_regs.  Add
79         strict_class_subset_p setup.
80         (setup_reg_class_intersect): Rename to
81         setup_reg_class_intersect_union.  Don't consider
82         no_unit_alloc_regs.  Add reg_class_union setup.
83         (hard_reg_not_in_set_p): Move to ira-int.h.
84         (setup_reg_subclasses): Use no_unit_alloc_regs instead of
85         fixed_reg_set.  Don't consider no_unit_alloc_regs.
86         (important_class_nums): Fix element type.
87         (setup_cover_classes): Use no_unit_alloc_regs instead of
88         fixed_reg_set.  Don't consider no_unit_alloc_regs.
89         (setup_class_translate): Ditto.
90         (reg_class_union): New variable.
91         (init_register_move_cost, free_register_move_costs): New
92         functions.
93         (init_ira_once): Initialize register_move_cost,
94         register_may_move_in_cost, register_may_move_out_cost.  Move some
95         code to init_ira.
96         (init_ira): New function.  Move some code from init_ira_once.
97         Call free_register_move_costs and init_ira_costs.
98         (calculate_allocation_cost): Check allocation of allocno hard reg
99         cost vector.
100         (basic_block_order_nums): New variable.
101         (chain_freq_compare, chain_bb_compare, sort_insn_chain): New
102         functions.
103         (ira): Call sort_insn_chain.
105         * ira-color.c (allocno_coalesced_p): New variable.
106         (update_copy_costs): Use allocate_and_set_or_copy_costs.
107         (assign_hard_reg): Clear and use
108         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
109         Use allocate_and_copy_costs.  Use allocno cover class cost if the
110         hard register cost vector is not allocated.
111         (get_coalesced_allocnos_best_class_and_freq): Use
112         reg_class_intersect instead of reg_class_subintersect.
113         (add_allocno_to_ordered_bucket): Use strict_class_subset_p.
114         (push_allocno_to_stack): Clear and use
115         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
116         (setup_allocno_left_conflicts_num): Don't setup
117         ALLOCNO_UPDATED_HARD_REG_COSTS and
118         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.  Clear and use
119         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
120         (put_allocno_into_bucket): Don't setup
121         ALLOCNO_UPDATED_HARD_REG_COSTS and
122         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
123         (coalesced_allocno_conflict_p): Clear and use
124         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
125         (coalesce_allocnos): Setup allocno_coalesced_p.
126         (color_allocnos): Add processing reg class NO_REGS.
127         (color_pass): Propagate assignment of spilled allocno not
128         mentioned in the subregion for the mixed algorithm.  Use
129         allocate_and_set_costs.
130         (move_spill_restore, mark_allocation_change): Check unallocated
131         hard reg cost vectors.
132         (setup_curr_costs): Don't setup ALLOCNO_UPDATED_HARD_REG_COSTS and
133         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.  Use
134         allocate_and_set_or_copy_costs.
135         (mark_memory_move_deletion, allocno_reload_assign,
136         pseudo_reg_compare, reassign_pseudos): New functions.
137         (retry_ira_color): Remove.
138         
139         * ira-conflicts.c (add_insn_allocno_copies): Use
140         allocate_and_set_costs.
141         (allocno_conflict_p): Simplify the code.
142         
143         * ira-costs.c: Rename reg_class_subunion to reg_class_union
144         everywhere.
145         (cost_classes, cost_classes_num, cost_class_nums,
146         max_struct_costs_size): New variables.
147         (copy_cost): Use init_register_move_cost instead of
148         init_move_cost.
149         (record_reg_classes): Ditto.  Use cost_classes and
150         cost_classes_num instead of important_classes and
151         important_classes_num.  Use register_may_move_{in,out}_cost
152         instead of may_move_{in,out}_cost.  Check reg class intersection
153         for alt_cost.
154         (record_address_regs): Use init_register_move_cost instead of
155         init_move_cost.  Use cost_classes and cost_classes_num instead of
156         important_classes and important_classes_num.  Use
157         register_may_move_in_cost instead of may_move_in_cost.
158         (scan_one_insn): Use cost_classes_num instead of
159         important_classes_num.
160         (print_costs): Use cost_classes and cost_classes_num instead of
161         important_classes and important_classes_num.
162         (find_allocno_class_costs): Initialize cost_classes and
163         cost_class_nums.  Use cost_classes and cost_classes_num instead of
164         important_classes and important_classes_num.
165         (process_bb_node_for_hard_reg_moves): Use allocate_and_set_costs.
166         (setup_allocno_cover_class_and_costs): Use cost_classes and
167         cost_classes_num instead of important_classes and
168         important_classes_num.
169         (init_ira_costs_once): Move some code to init_ira_costs.  Initiate
170         cost_classes.
171         (free_ira_costs: New function.  Move some code from
172         finish_ira_costs_once.
173         (init_ira_costs): New function.  Move some code from
174         init_ira_costs_once.  Use max_struct_costs_size instead of
175         struct_costs_size.  Call free_ira_costs.  Allocate cost_classes.
176         (finish_ira_costs_once): Move some code to finish_ira_costs.  Call
177         free_ira_costs.
178         (ira_costs): Use max_struct_costs_size instead of
179         struct_costs_size.  Use allocate_and_set_costs.
181         * ira-emit.c (modify_move_list): Remove allocation of hard reg
182         cost vectors.
184         * ira-lives.c (process_single_reg_class_operands): Add new
185         parameter freq.  Calculate costs basing on the frequency.
186         (process_bb_node_lives): Pass the frequency to
187         process_single_reg_class_operands.
188         
189 2007-12-17  Vladimir Makarov  <vmakarov@redhat.com>
191         * doc/invoke.texi (fira-algoirthm): Remove prioirity coloring.
192         Make mixed the default.
194         * flags.h (ira_algorithm): Remove IRA_ALGORITHM_PRIORITY.
196         * ira-color.c (priority_coloring):  Remove.
197         (do_coloring): Don't call priority_coloring.
199         * opts.c (common_handle_option): Remove priority coloring option.
201         * toplev.c (flag_ira_algorithm): Assign IRA_ALGORITHM_MIXED.
202         
203         * ira-build.c (check_and_add_conflicts, ira_flattening): Increase
204         threshold for internal_flag_ira_verbose.
205         
206 2007-12-17  Vladimir Makarov  <vmakarov@redhat.com>
208         * common.opt (fira-assign-after-call-split, fira-biased-coloring,
209         fira-split-around-calls): Remove.
210         (fdump-simple-rtl, fira-verbose): New options.
211         (fira, fira-coalesce): Initiate by 0.
213         * opts.c (common_handle_option):  Process flag_ira_verbose.
215         * flags.h (flag_ira_verbose): New external definition.
217         * toplev.h (flag_ira_assign_after_call_split,
218         flag_ira_biased_coloring, flag_ira_split_around_calls):  Remove.
220         * toplev.c (flag_ira_verbose): New external declaration.
221         (finalize): Call finish_ira_once.
223         * print-rtl.c (flag_simple):  Rename to flag_dump_simple_rtl.
225         * doc/invoke.texi (-fno-ira-assign-after-call-split,
226         -fira-biased-coloring, -fno-ira-split-around-calls):  Remove.
227         (-fdump-simple-rtl, -fira-verbose): New options.
229         * caller-save.c (insert_restore, insert_save): Use
230         adjust_address_nv instead of adjust_address.  Check the mode by
231         reg_save_code.
233         * ira-call.c: Remove file.
235         * ira-lives.c: New file.
237         * Makefile.in (ira-live.o): Add
238         (ira-call.o): Remove.
239         (IRA_INT_H): Add alloc-pool.h.
241         * ira.h (finish_ira_once): New external definition.
243         * ira-int.h (internal_flag_ira_verbose, alloc_pool allocno_pool,
244         copy_pool, allocno_live_range_pool, ira_loop_tree_height,
245         max_point, start_point_ranges, finish_point_ranges,
246         prohibited_mode_move_regs, important_class_nums,
247         ira_curr_regno_allocno_map, allocno_set_words): New external
248         definitions.
249         (loop_tree_node_t, allocno_live_range_t): New typedefs.  Use them
250         everywhere.
251         (ira_loop_tree_node): Rename to loop_tree_node.
252         (loop_tree_node): New member level.
253         (allocno_live_range): New structure.
254         (allocno): New members nrefs, live_ranges,
255         total_conflict_hard_regs, conflict_allocnos_num,
256         total_conflict_allocnos_num, mem_optimized_dest,
257         mem_optimized_dest_p, total_no_stack_reg_p.  Remove members
258         conflict_allocno_vec_active_size and original_memory_cost.  Rename
259         member curr_hard_reg_costs to updated_hard_reg_costs.
260         (ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
261         ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_CONFLICT_ALLOCNOS_NUM,
262         ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM, ALLOCNO_NREFS,
263         ALLOCNO_MEM_OPTIMIZED_DEST, ALLOCNO_MEM_OPTIMIZED_DEST_P,
264         ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_LIVE_RANGES): New access
265         macros.
266         (ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
267         ALLOCNO_ORIGINAL_MEMORY_COST): Remove.
268         (ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS): Rename to
269         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
270         (allocno_copy): New member loop_tree_node.
271         (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move from
272         ira-conflicts.c.
273         (SET_ALLOCNO_SET_BIT, CLEAR_ALLOCNO_SET_BIT,
274         TEST_ALLOCNO_SET_BIT): New macros.
275         (ira_reallocate, allocno_conflict_index, add_allocno_conflict,
276         create_allocno_live_range, finish_allocno_live_range,
277         add_allocno_copy_to_list, swap_allocno_copy_ends_if_necessary,
278         remove_allocno_copy_from_list, add_allocno_copy, ira_flattening,
279         finish_ira_costs_once, rebuild_start_finish_chains,
280         print_live_range_list, debug_live_range_list,
281         debug_allocno_live_ranges, debug_live_ranges,
282         create_allocno_live_ranges, finish_allocno_live_ranges,
283         allocno_conflict_p, loop_edge_freq): New external function
284         definitions.
285         (hard_reg_in_set_p, original_regno_call_crossed_p,
286         ira_max_regno_before, ira_max_regno_call_before): Remove.
287         (traverse_loop_tree): Add new parameter type.
288         (create_copy): Ditto.
289         (debug_conflicts, ira_emit, add_allocno_copy): Add parameter.
290         (debug_ira_call_data, split_around_calls, get_around_calls_regno):
291         Remove.
292         
293         * ira.c (setup_prohibited_mode_move_regs): New function.
294         (internal_flag_ira_verbose, allocno_pool, copy_pool,
295         allocno_live_range_pool, important_class_nums): New external
296         variables.
297         (IRA_NO_OBSTACK): Uncomment it.
298         (ira_reallocate): New function.
299         (setup_cover_classes): Set up important_class_nums.
300         (finish_ira_once): New function.
301         (prohibited_mode_move_regs,
302         prohibited_mode_move_regs_initialized_p): New global variables.
303         (setup_prohibited_mode_move_regs): New function.
304         (setup_reg_renumber): Remove parameters.
305         (setup_allocno_assignment_from_reg_renumber): Rename to
306         setup_allocno_assignment_flags.  Set up ALLOCNO_ASSIGNED_P.
307         (calculate_allocation_cost): Use ALLOCNO_UPDATED_MEMORY_COST.
308         (ira_max_regno_before, ira_max_regno_call_before): Remove.
309         (ira): Set up internal_flag_ira_verbose.  Call
310         setup_prohibited_mode_move_regs.  Create and destroy allocno,
311         copy, and live range pools.  Remove original_regno_call_crossed_p.
312         Report major passes.  Use argument for ira_emit.  Call
313         ira_flattening and df_analyze.  Remove live range splitting around
314         calls.
315         
316         * ira-build.c (setup_loop_tree_level, rebuild_regno_allocno_maps,
317         expand_calls, compress_calls, allocno_conflict_index,
318         add_to_allocno_conflict_vec, propagate_info_to_cap,
319         copy_allocno_live_range, copy_allocno_live_range_list,
320         finish_allocno, finish_copy,
321         propagate_info_to_loop_tree_node_caps, merge_ranges,
322         common_loop_tree_node_dominator, check_and_add_conflicts,
323         add_conflict_with_underlying_allocnos, ira_flattening): New
324         functions.
325         (check_coalesced_allocnos): Remove.
326         (ira_loop_tree_height): New external variable.
327         (form_loop_tree): Call setup_loop_tree_level.
328         (initiate_calls): Allocate a bit more.  (create_allocno): Use
329         pool_alloc.  Set up ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
330         ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_NREFS,
331         ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_MEM_OPTIMIZED_DEST,
332         ALLOCNO_MEM_OPTIMIZED_DEST_P, ALLOCNO_UPDATED_MEMORY_COST, and
333         ALLOCNO_LIVE_RANGES.  Rename
334         ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
335         ALLOCNO_CURR_HARD_REG_COSTS, and
336         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS to
337         ALLOCNO_CONFLICT_ALLOCNOS_NUM, ALLOCNO_UPDATED_HARD_REG_COSTS, and
338         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
339         (add_allocno_conflict): Make it external.  Use
340         add_to_allocno_conflict_vec.
341         (create_cap_allocno): Move part of code to propagate_info_to_cap.
342         (finish_allocnos): Use finish_allocno.
343         (add_allocno_copy_to_list, remove_allocno_copy_from_list,
344         swap_allocno_copy_ends_if_necessary, add_allocno_copy): Move from
345         ira-conflicts.c.  Make them external.
346         (create_copy): Use pool_alloc.  Add parameter loop_tree_node.
347         (finish_copies): Use finish_copy.
348         (ira_curr_regno_allocno_map): New external variable.
349         (traverse_loop_tree): Add parameter bb_first_p.
350         (create_insn_allocnos): Update ALLOCNO_NREFS.
351         (create_loop_tree_node_allocnos): Traverse loop tree nodes with
352         BBs first.  Update ALLOCNO_NREFS.
353         (create_loop_tree_node_caps): Move part of code to
354         propagate_info_to_loop_tree_node_cap.
355         (regno_top_level_allocno_map): New global variable.
356         (ira_build): Create caps before build conflicts.  Call
357         create_allocno_live_ranges.  Propagate info to caps.  Report
358         statistics.
359         (ira_destroy): Call finish_allocno_live_ranges.
361         * ira-conflicts.c (set_allocno_live, clear_allocno_live,
362         record_regno_conflict, mark_reg_store, mark_reg_clobber,
363         mark_reg_conflicts, mark_reg_death): Remove.
364         (add_insn_allocno_copies, add_copies): New functions.
365         (add_allocno_copy_to_list, remove_allocno_copy_from_list,
366         swap_allocno_copy_ends_if_necessary, add_allocno_copy): Remove.
367         (add_allocno_copies): Rename to add_insn_allocno_copies.  Use
368         ira_curr_regno_allocno_map and add_insn_allocno_copies.
369         (single_reg_class, single_reg_operand_class,
370         process_single_reg_class_operands, process_bb_node_for_conflicts):
371         Remove.
372         (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move to
373         ira-int.h.
374         (allocnos_live_bitmap, SET_ALLOCNO_CONFLICT_ROW,
375         CLEAR_ALLOCNO_CONFLICT_ROW, TEST_ALLOCNO_CONFLICT_ROW): Remove.
376         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, TEST_ALLOCNO_LIVE):
377         Use {SET, CLEAR, TEST}_ALLOCNO_SET_BIT.
378         (allocno_row_words, hard_regs_live, curr_bb_node,
379         curr_regno_allocno_map, curr_reg_pressure): Remove.
380         (CONFLICTP): Rename to CONFLICT_P.
381         (regs_set): Remove.
382         (propagate_allocno_info): Use ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
383         Set up ALLOCNO_CALLS_CROSSED_START.
384         (allocno_conflict_p): New function.
385         (allocno_reg_conflict_p): Use allocno_conflict_p.
386         (build_allocno_conflict_vects): Divide original and propagated
387         conflicts.
388         (print_hard_reg_set): New function.
389         (print_conflicts): Use print_hard_reg_set.  Set up mark for the
390         start of propagated conflicts.
391         (debug_conflicts): Add parameter.
392         (ira_build_conflicts): Call add_copies.  Set up
393         ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
395         * ira-costs.c (struct costs): Make cost allocated dynamically.
396         (struct_costs_size, temp_cots, op_costs, this_op_costs): New
397         variables.
398         (costs): Rename to total_costs.
399         (COSTS_OF_ALLOCNO): New macro.
400         (curr_regno_allocno_map): Remove.  Use ira_curr_regno_allocno_map
401         instead.
402         (record_reg_classes): Check NO_REGS in allocno_pref.
403         (record_address_regs): Use COSTS_OF_ALLOCNO.
404         (scan_one_insn): Ditto.
405         (print_costs): Ditto.
406         (find_allocno_class_costs): Ditto.  Pass additional argument to
407         traverse_loop_tree.  Set up NO_REGS if memory is cheaper.
408         (setup_allocno_cover_class_and_costs): Use
409         ALLOCNO_UPDATED_MEMORY_COST instead of
410         ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
411         instead of ALLOCNO_CURR_HARD_REG_COSTS, and
412         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
413         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS.  Pass additional argument to
414         traverse_loop_tree.
415         (init_ira_costs_once): Allocate init_cost, op_costs,
416         this_op_costs, temp_costs.
417         (finish_ira_costs_once): New function.
418         
419         * ira-color.c: Use ALLOCNO_UPDATED_MEMORY_COST instead of
420         ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
421         instead of ALLOCNO_CURR_HARD_REG_COSTS, and
422         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
423         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS.  Use
424         ALLOCNO_TOTAL_CONFLICT_HARD_REGS instead of
425         ALLOCNO_CONFLICT_HARD_REGS.
426         (processed_allocno_bitmap): Rename into
427         processed_coalesced_allocno_bitmap.
428         (allocno_cost_compare_func): Use ALLOCNO_UPDATED_MEMORY_COST
429         instead of ALLOCNO_MEMORY_COST.
430         (assign_hard_reg): Remove biased coloring.
431         (add_allocno_to_ordered_bucket): Check cover class first.
432         (loop_edge_freq): Make it external.
433         (setup_allocno_left_conflicts_num): Check that conflicting
434         allocnos of one class.
435         (allocno_conflict_p): Rename to coalesced_allocno_conflict_p.
436         (color_pass): Check pressure in the loop (not in subloops) for
437         mixed algorithm.
438         (allocno_priorities): New variable.
439         (start_allocno_priorities, finish_allocno_priorities): New
440         functions.
441         (allocno_priority_compare_func): Use allocno_priorities.
442         (priority_coloring): Call start_allocno_priorities and
443         finish_allocno_priorities.
444         (do_coloring): Pass additional argument to traverse_loop_tree.
445         
446         * ira-emit.c (struct move): Add member insn.
447         (create_move): Initialize member insn.
448         (generate_edge_moves): Set up ALLOCNO_MEM_OPTIMIZED_DEST and
449         ALLOCNO_MEM_OPTIMIZED_DEST_P.
450         (change_loop): Check prohibited_mode_move_regs.
451         (curr_jump_map, can_move_through_p): Remove.
452         (unify_moves): Don't move through jump.
453         (modify_move_list): Set up attributes for new allocno used for
454         breaking dependency loops.
455         (emit_move_list): Set up insn codes.
456         (update_costs, add_range_and_copies_from_move_list,
457         add_ranges_and_copies): New functions.
458         (ira_emit): Add a parameter.  Call add_ranges_and_copies.
459         
460 2007-10-09  Vladimir Makarov  <vmakarov@redhat.com>
462         * toplev.h (flag_ira_coalesce): New external variable.
464         * ira-int.h (allocno): New members first_coalesced_allocno,
465         next_coalesced_allocno.
466         (ALLOCNO_FIRST_COALESCED_ALLOCNO, ALLOCNO_NEXT_COALESCED_ALLOCNO):
467         New macros.
468         (reg_class_subintersect): New external variable.
470         * ira-color.c (processed_allocno_bitmap): New variable.
471         (allocno_cost_compare_func, print_coalesced_allocno): New
472         functions.
473         (assign_hard_reg): Process coalesced allocnos.
474         (get_coalesced_allocnos_best_class_and_freq): New function.
475         (add_allocno_to_ordered_bucket): Use the function.
476         (push_allocno_to_stack, push_allocnos_to_stack): Process coalesced
477         allocnos.
478         (remove_allocno_from_bucket_and_push, pop_allocnos_from_stack):
479         Use print_coalesced_allocno.
480         (setup_allocno_available_regs_num,
481         setup_allocno_left_conflicts_num): Process coalesced allocnos.
482         (copy_freq_compare_func, allocno_conflict_p, coalesce_allocnos):
483         New functions.
484         (color_allocnos): Allocate/free processed_allocno_bitmap.  Call
485         coalesce_allocnos.
486         (priority_coloring): Allocate/free processed_allocno_bitmap.
488         * ira-build.c (check_coalesced_allocnos): New function.
489         (create_allocno): Initiate next_coalesced_allocno,
490         first_coalesced_allocno.
491         (create_cap_allocno): Check  next_coalesced_allocno,
492         first_coalesced_allocno.
494         * common.opt (fira-coalesce): New option.
496         * ira.c (setup_reg_class_intersect): New function.
497         (reg_class_subintersect): New global variable.
498         (init_ira_once): Call setup_reg_class_intersect.
500         * doc/invoke.texi (-fira-coalescing): New option.
501         
502 2007-09-20  Vladimir Makarov  <vmakarov@redhat.com>
504         * ira-build.c (create_allocno): Initialize ALLOCNO_BEST_CLASS.
506         * ira-color.c (add_allocno_to_ordered_bucket): Use
507         ALLOCNO_BEST_CLASS.
509         * ira-costs.c (setup_allocno_cover_class_and_costs): Initialize
510         ALLOCNO_BEST_CLASS.
512         * ira-int.h (allocno): New member best_class.
513         (ALLOCNO_BEST_CLASS): New macro.
514         
515 2007-09-19  Vladimir Makarov  <vmakarov@redhat.com>
517         * ira-int.h (allocno): Remove calls_crosed.  Add
518         calls_crossed_start.
519         (ALLOCNO_CALLS_CROSSED): Remove.
520         (ALLOCNO_CALLS_CROSSED_START): Add.
521         (build_df): Remove.
522         (regno_calls, add_regno_call): New.
523         
524         * ira-build.c (initiate_calls, finish_calls, add_regno_call): New
525         functions.
526         (regno_calls, regno_calls_num): New globals.
527         (build_df): Remove.
528         (add_loop_to_tree): Use loop_outer.
529         (form_loop_tree): Ditto.
530         (initiate_allocnos, create_cap_allocno): Remove
531         ALLOCNO_CALLS_CROSSED.  Add ALLOCNO_CALLS_CROSSED_START.
532         (finish_allocnos): Remove ALLOCNO_CALLS_CROSSED.
533         (create_bb_allocnos, create_loop_allocnos): Use DF_LR_{IN,OUT}
534         instead of DF_UPWARD_LIVE_{IN,OUT}.
535         (ira_build): Remove adding df problems and call of
536         free_dominance_info.  Call initiate_calls.
537         (ira_destroy): Add free_dominance_info and finish_calls.  Remove
538         df_finish.
540         * ira-emit.c (change_regs): Return the result.
541         (generate_edge_moves): Use DF_LR_{IN,OUT} instead of
542         DF_UPWARD_LIVE_{IN,OUT}.
543         (change_loop): Call df_insn_rescan and df_note_rescan if there is
544         a change.
545         (can_move_through_p): Use hard_reg_set_equal_p instead of
546         GO_IF_HARD_REG_EQUAL.
548         * ira-costs.c (copy_cost, record_reg_classes,
549         record_address_regs): Call init_move_cost if it is necessary.
550         (tune_allocno_costs_and_cover_classes): Use regno_calls and
551         ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
553         * ira-conflicts.c (n_regs_set): Remove.
554         (regs_set): Make it a vector.
555         (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
556         (process_bb_node_for_conflicts): Use DF_LR_IN instead of
557         DF_UPWARD_LIVE_IN.  Call add_regno_call.  Initialize
558         ALLOCNO_CALLS_CROSSED_START.  Remove ALLOCNO_CALLS_CROSSED.
559         (build_conflict_bit_table): Initialize and finalize regs_set.
560         (propagate_allocno_info): Remove ALLOCNO_CALLS_CROSSED.
561         Initialzie ALLOCNO_CALLS_CROSSED_START.
562         
563         * ira-color.c (setup_allocno_available_regs_num,
564         setup_allocno_left_conflicts_num): New functions.
565         (update_allocno_avaialable_regs): Remove.
566         (sorted_allocnos, allocno_stack_varray): Move upper.
567         (assign_hard_reg): Use hard_reg_set_subset_p instead of
568         GO_IF_HARD_REG_SUBSET.
569         (loop_edge_freq): Use DF_LR_{IN,OUT} instead of
570         DF_UPWARD_LIVE_{IN,OUT}.
571         (put_allocno_into_bucket): Call setup_allocno_available_regs_num
572         and setup_allocno_left_conflicts_num.
573         (print_loop_title): Use loop_depth.
574         (allocno_priority_compare_func): Remove REG_N_REFS and
575         REG_LIVE_LENGTH.
576         (retry_ira_color): Use SET_REGNO.  Use ALLOCNO_CALLS_CROSSED_NUM
577         instead of ALLOCNO_CALLS_CROSSED.
578         (collect_pseudo_call_clobbered_regs):  Use regno_calls and
579         ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
581         * ira-call.c (init_ira_call_data): Add argument to
582         post_order_compute.
583         (n_regs_set): Remove.
584         (regs_set): Make it a vector.
585         (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
586         (mark_referenced_regs): Check null x.
587         (put_save_restore_and_calculate_local_info): Initialize and
588         finalize regs_set.  Use DF_LR_{IN,OUT} instead of
589         DF_UPWARD_LIVE_{IN,OUT}.  Use loop_outer.
590         (do_init_nothing): Remove.
591         (save_trans_fun, save_con_fun_0, restore_trans_fun,
592         restore_con_fun_0): Remove 1st parameter.
593         (save_con_fun_n, restore_con_fun_n): Ditto.  Use
594         df_simple_dataflow instead of df_analyze_problem.
595         (put_save_restore): Use DF_LR_IN instead of DF_UPWARD_LIVE_IN.
596         Call mark_all_referenced_regs for all insn.  Use bitmap progress.
597         (get_move_insn): New function.
598         (put_save_restore_and_calculate_local_info, put_save_restore): Use
599         the function.
601         * ira.c (insn_contains_asm_1, insn_contains_asm,
602         compute_regs_asm_clobbered, expand_reg_info): New functions.
603         (setup_class_subset_and_move_costs): Use hard_reg_set_subset_p
604         instead of GO_IF_HARD_REG_SUBSET.
605         (setup_reg_subclasses, setup_class_translate): Ditto. Use
606         hard_reg_set_equal_p instead of GO_IF_HARD_REG_EQUAL.
607         (setup_eliminable_regset): Call compute_regs_asm_clobbered.  Use
608         df_set_regs_ever_live instead of regs_ever_live.
609         (setup_reg_renumber): Check reg_equiv_const and
610         reg_equiv_invariant_p.
611         (ira): Remove no_new_pseudos. Add df-problems and analyze.  Call
612         regstat_init_n_sets_and_refs and regstat_compute_ri.  Remove
613         delete_unreachable_blocks.  Use expand_reg_info.  Move
614         setup_preferred_alternate_classes upper.  Remove life_analysis.
615         Prepare df-insfrastructure for reload.
617         * regclass.c (setup_reg_classes): Don't use reg_pref_buffer.
619         * function.[ch] (get_call_invalidated_used_regs): Change 1st
620         parameter type.
621         
622         * gengtype.c (main): Add HARD_REG_SET.
624         * alias.c (value_addr_p): New function.
625         (nonoverlapping_memrefs_p): Use it.
627         * caller-save.c (init_caller_save): Use DF_LR_TOP for IRA instead
628         of global_live_at_start.
629         
630 2007-05-04  Vladimir Makarov  <vmakarov@redhat.com>
632         * ira-conflicts.c: Change pseudo to allocno.
633         * ira-color.c: Ditto.
634         * ira-emit.c: Ditto.
635         * ira-build.c: Ditto.
636         * ira.c: Ditto.
637         (important_classes_num, important_classes): New variables.
638         (setup_cover_classes): Set up the variable values.
639         * ira-costs.c: Ditto.
640         (record_reg_classes, record_address_regs, scan_one_insn,
641         find_pseudo_class_costs):  Process only important classes.
642         * ira-call.c: Ditto.  Add comments about placement optimization.
643         * ira-int.h: Ditto.
644         (allocno) Use one bit field for boolean members.
645         (important_classes_num, important_classes): New external
646         definitions.
648 2007-03-16  Vladimir Makarov  <vmakarov@redhat.com>
650         * flags.h (ira_algorithm): Add IRA_ALGORITHM_MIXED.
652         * opts.c (common_handle_option): Set up IRA_ALGORITHM_MIXED from
653         the option argument.
654         
655         * common.opt (fira-assign-after-call-split, fira-propagate-cost,
656         fira-split-around-calls): New options.
657         (fira-ipra): Switch off by default.
658         
659         * doc/invoke.texi (-fira-algorithm): Add mixed algorithm.
660         (-fno-ira-ipra): Rename to -fira-ipra.
661         (-fno-ira-assign-after-call-split, -fira-propagate-cost,
662         -fno-ira-split-around-calls): Add new options.
663         
664         * ira-conflicts.c (curr_reg_pressure): New variable.
665         (set_pseudo_live, clear_pseudo_live, mark_reg_store,
666         mark_reg_death): Update reg pressure.
667         (add_pseudo_copies): Decrease cost for copy with dead pseudo.
668         (process_bb_node_for_conflicts): Propagate reg pressure.
669         (build_conflict_bit_table): Call process_bb_node_for_conflicts in
670         preorder.
671         (ira_build_conflicts): Add new coloring algorithm.
672         (ira_build_conflicts): Add flag_ira_split_around_calls.
674         * ira-emit.c (change_loop): Print allocation on the region
675         borders.  Use pseudo_cap_member instead of regno.
676         (modify_move_list): Add parameter to create pseudo.
677         (ira_emit): Use pseudo_cap_member instead of regno.
678         
679         * ira-build.c (create_loop_tree_nodes): Set up initial reg
680         pressure.
681         (create_pseudo): Add parameter.  Use the parameter value instead
682         of regno.
683         (print_expanded_pseudo): Use pseudo_cap_member instead of regno.
684         (create_cap_pseudo, create_insn_pseudos, create_bb_pseudos,
685         create_loop_pseudos): Add argument to create_pseudo call.
686         (create_pseudos, ira_build): Process IRA_ALGORITHM_MIXED.
687         (create_loop_tree_node_caps):  Create cap pseudo for all pseudos
688         not having father pseudo.
689         
690         * final.c (rest_of_handle_final): Process INCOMING_REGNO.
692         * toplev.h (flag_ira_assign_after_call_split,
693         flag_ira_propagate_cost, flag_ira_split_around_calls): New flags.
695         * caller-save.c (save_call_clobbered_regs): Move declaration
696         this_insn_sets to the function start.
697         
698         * ira-int.h (ira_loop_tree_node): Add reg_pressure.
699         (pseudo): More comments for regno and cap_member
700         (original_regno_call_crossed_p, ira_max_regno_before,
701         ira_max_regno_call_before): New external variables.
702         (create_pseudo): Add parameter.
703         (reassign_conflict_pseudos, debug_ira_call_data,
704         split_around_calls, get_around_calls_regno): New function
705         prototypes.
707         * ira-color.c (assign_hard_reg): Set best_hard_regno and
708         conflict_regs earlier.  Check register availability earlier.
709         Ignore conflict and copy cost for PSEUDO_MAY_BE_SPILLED_P.
710         (calculate_pseudo_spill_cost): Use pseudo_cap instead of regno.
711         Check father pseudo instead of subloop pseudos.
712         (pop_pseudos_from_stack): Set up PSEUDO_ASSIGNED_P for NO_REGS
713         pseudo.
714         (print_loop_title): Print reg pressure.
715         (color_pass): Use PSEUDO_CAP_MEMBER instead of regno.  Add mixed
716         coloring algorithm.
717         (move_spill_restore): Use PSEUDO_CAP_MEMBER instead of regno.  Use
718         subloop pseudos instead of father pseudo for cost calculation.
719         (setup_curr_costs, reassign_conflict_pseudos): New functions.
720         (retry_ira_color): Don't allocate call used registers when
721         flag_caller_saves or flag_ira_split_around_calls.  Call
722         setup_curr_cost.  Print about spilling pseudo split around calls.
723         (reuse_stack_slot): Choose the slot with minimal memory-memory
724         costs.
726         * ira.c (setup_reg_renumber): Add 2 parameters.  Use cap_number
727         instead of regno.  Initialize caller_save_needed.  Make assertion
728         stricter.
729         (setup_pseudo_assignment_from_reg_renumber): New function.
730         (calculate_allocation_cost): Add assertion.
731         (print_redundant_copies): Use cap_number instead of regno.
732         (original_regno_call_crossed_p, ira_max_regno_before,
733         ira_max_regno_call_before): New global variables.
734         (ira): Process IRA_ALGORITHM_MIXED.  Set up
735         ira_max_regno_call_before and ira_max_regno_before.  New arguments
736         for setup_reg_renumber.  Reassign if pseudo changed its class.
737         Split pseudos around the call if necessary.  Reassign if a pseudo
738         is split.
740         * ira.h: New year for Copyright.
742         * ira-costs.c (reg_pref): Rename to pseudo_pref.
743         (reg_pref_buffer): rename to pseudo_pref_buffer.
744         (find_pseudo_class_costs): Initialize best_cost and best_class.
745         Process IRA_ALGORITHM_MIXED.  Find best cover class for regno.
746         (process_bb_node_for_hard_reg_moves): Process IRA_ALGORITHM_MIXED.
748         * Makefile.in (ira-call.o): Add new file.
750         * reload1.c (calculate_needs_all_insns): Remove unnecessary
751         memory-memory move.
753         * ira-call.c: New file.
754         
755 2007-02-09  Vladimir Makarov  <vmakarov@redhat.com>
757         * common.opt (fipra): Rename to fira-ipra.  Make it default.
758         (fira-move-spills, fira-share-save-slots, fira-share-spill-slots):
759         New.
760         * toplev.h (flag_ipra): Rename to flag_ira_ipra.
761         (flag_ira_move_spills, flag_ira_share_save_slots,
762         flag_ira_share_spill_slots): New external definitions.
763         * doc/invoke.texi (-fipra): Rename to -fno-ira-ipra. 
764         (-fno-ira-move-spills, -fno-ira-share-save-slots,
765         -fno-ira-share-spill-slots): New options.
766         * function.c (get_call_invalidated_used_regs): Rename flag_ipra to
767         flag_ira_ipra.
768         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Ditto.
769         * caller-save.c (setup_save_areas): Use flag_ira_share_save_slots.
770         Rename flag_ipra to flag_ira_ipra.
771         (flag_ira_share_save_slots): Use flag_ira_move_spills.
772         * ira-color.c (assign_hard_reg): Skip pseudos with different cover
773         class.
774         (reuse_stack_slot): Use flag_ira_share_spill_slots.
775         * config/arm/arm.h (IRA_COVER_CLASSES): New macro.
776         
777 2007-02-31  Vladimir Makarov  <vmakarov@redhat.com>
779         * reload.h (debug_save_data): New definition.
780         
781         * caller-save.c (struct bb_info): New.
782         (BB_INFO, BB_INFO_BY_INDEX): New macros.
783         (calculate_local_save_info, set_up_bb_rts_numbers, rpost_cmp,
784         calculate_save_in_out, calculate_save_here,
785         make_global_save_analysis, print_hard_reg_set_and_mode,
786         print_hard_reg_set, print_save_data, debug_save_data,
787         set_hard_reg_saved): New functions.
788         (save_call_clobbered_regs): Make global save analysis and use it
789         to put save/restore code.
790         (insert_one_insn): Check CODE_LABEL.
792 2007-01-19  Vladimir Makarov  <vmakarov@redhat.com>
794         * toplev.h (flag_ipra): New external definition.
796         * common.opt (fipra): New option.
798         * doc/invoke.texi (-fipra); Document the option.
800         * cgraph.h (cgraph_node): New member function_used_regs.
802         * cgraph.c (cgraph_create_node): Initialize function_used_regs.
804         * final.c (update_regs_ever_live): New function.
805         (rest_of_handle_final): Set up function_used_regs and
806         call_used_regs.
808         * ira-build.c (ira_build): Clear function call_used_regs.
810         * function.h: Add hard-reg-set.h header.
811         (emit_status): New member call_used_regs.
812         (get_call_invalidated_used_regs): New definition.
814         * function.c (get_call, get_call_invalidated_used_regs): New
815         functions.
817         * Makefile.in (FUNCTION_H): Add hard-reg-set.h.
818         (caller-save.o): Add dependence on output.h and ira.h
820         * regrename.c (copyprop_hardreg_forward_1): Use function
821         get_call_invalidated_used_regs.
823         * ira-conflicts.c (process_bb_node_for_conflicts): Ditto.
825         * postreload-gcse.c (record_opr_changes,
826         reg_set_between_after_reload_p, reg_used_between_after_reload_p):
827         Ditto.
829         * postreload.c (reload_combine, reload_cse_move2add): Ditto.
831         * rtlanal.c (reg_set_between_p): Ditto.
833         * flow.c (propagate_one_insn): Ditto.
835         * df-scan.c (df_insn_refs_record): Ditto.
837         * gcse.c (compute_hash_table_work, compute_store_table): Ditto.
839         * cselib.c (cselib_process_insn): Ditto.
841         * loop-iv.c (simplify_using_assignment): Ditto.
843         * sched-deps.c (sched_analyze): Ditto.
845         * combine.c (record_dead_and_set_regs): Ditto.
847         * resource.c (mark_set_resources, mark_set_resources): Ditto.
849         * var-tracking.c (var-tracking.c): Ditto.
851         * reload1.c (reload): Ditto.
853         * cse.c (invalidate_for_call): Ditto.  Add parameter.
854         (cse_insn): Pass the parameter.
856         * ira.h (try_to_migrate): Remove the definition.
857         (collect_pseudo_call_clobbered_regs): New external definition.
859         * ira-color.c (collect_pseudo_call_clobbered_regs): New function.
861         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Add cost
862         calculation when IPRA is used.
864         * caller-save.c: Include headers output.h and ira.h.
865         (saved_hard_reg): New structure.
866         (hard_reg_map, hard_reg_map, all_saved_regs): New variables.
867         (all_saved_regs, new_saved_hard_reg, finish_saved_hard_regs,
868         saved_hard_reg_compare_func): New functions.
869         (setup_save_areas): Add code for sharing stack slots.
870         (save_call_clobbered_regs): Use function
871         get_call_invalidated_used_regs.
872         
873 2007-01-12  Vladimir Makarov  <vmakarov@redhat.com>
875         * doc/tm.texi (IRA_HARD_REGNO_ADD_COST_MULTIPLIER): New macro.
877         * ira-conflicts.c (add_pseudo_copies): Add copy between output and
878         died operand pseudos.
880         * ira.c (setup_cover_classes, setup_class_translate): Define and
881         call only when IRA_COVER_CLASSES is defined.
882         (no_alloc_regs): Rename to no_unit_alloc_regs.
883         (setup_eliminable_regset): Set up no_alloc_regs.
885         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Modify cost
886         if IRA_HARD_REGNO_ADD_COST_MULTIPLIER is defined.
888         * config/s390/s390.h (IRA_COVER_CLASSES,
889         IRA_HARD_REGNO_ADD_COST_MULTIPLIER(regno)): Define.
890         
891 2006-12-22  Vladimir Makarov  <vmakarov@redhat.com>
893         * rtl.h (setup_reg_classes): New function prototype.
894         
895         * regclass.c (setup_reg_classes): New function.
897         * global.c (global_alloc): Dump information about register
898         assigning.
900         * ira-int.h (ira_build): Change prototype signature.
902         * ira-color.c (pseudo_compare_func): Rename to
903         pseudo_priority_compare_func.
904         (priority_coloring): Dump information about register
905         assigning.
907         * ira-build.c (ira_build): Return true if we have loops for the
908         allocation.
910         * ira.c (setup_preferred_alternate_classes): New function.
911         (ira): Use it instead of regclass.  Rebuild only if we have loops.
913 2006-12-15  Vladimir Makarov  <vmakarov@redhat.com>
915         * ira.h, ira-int.h, ira.c, ira-build.c, ira-costs.c
916         ira-conflicts.c, ira-color.c, ira-emit.c: New files.
918         * flags.h (ira_algorithm): New enumeration.
919         (flag_ira_algorithm): New external variable declaration.
921         * tree-pass.h (pass_ira): New external variable declaration.
923         * toplev.c (ira.h): New include.
924         (flag_ira_algorithm): New global variable.
925         (backend_init): Call init_ira_once.
927         * toplev.h (flag_ira, flag_ira_biased_coloring): New external
928         variable declarations.
930         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
931         may_move_out_cost): New external variable declarations.
932         
933         * caller-save.c (no_caller_save_reg_set): New global variable.
934         (init_caller_save): Set up no_caller_save_reg_set.
935         
936         * global.c (eliminable_regset): Make it external.
937         (gate_handle_global_alloc): New function.
938         (pass_global_alloc): Add the gate function.
940         * opts.c (decode_options):  Print the warning for -fira.
941         (common_handle_option): Process -fira-algorithm option.
943         * timevar.def (TV_IRA): New pass.
945         * hard-reg-set.h (no_caller_save_reg_set): New external variable
946         declaration.
948         * regmove.c (regmove_optimize): Don't do replacement of output
949         operands by input operands.
950         (rest_of_handle_regmove): Don't do CFG cleanup for IRA.
952         * local-alloc.c (update_equiv_regs): Make it external.  Return
953         true if jump label rebuilding should be done.
954         (gate_handle_local_alloc): New function.
955         (pass_local_alloc): Add the gate function.
957         * alias.c (stack_addr_p): New function.
958         (nonoverlapping_memrefs_p): Add code for IRA.
960         * common.opt (fira, fira-algorithm, fira-biased-coloring): New
961         options.
963         * regclass.c (contains_reg_of_mode, move_cost, may_move_in_cost,
964         may_move_out_cost): Make the variables external.
965         
966         * rtl.h (eliminable_regset): New external variable declaration.
967         (update_equiv_regs): New external function definition.
969         * Makefile.in (IRA_INT_H): New definition.
970         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
971         ira-conflicts.o, ira-color.o, and ira-emit.o.
972         (reload1.o, toplev.o): Add dependence on ira.h.
973         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
974         ira-emit.o): New entries.
976         * passes.c (pass_ira): New pass.
978         * reload1.c (alter_reg): Add a new parameter.
979         (pseudo_reg_compare): New function.
980         (reload): Sort pseudos for IRA.  Call alter_reg with the
981         additional parameter.
982         (count_spilled_pseudo): New variable freq.  Use it.
983         (alter_reg): Add code for IRA.
984         (eliminate_regs_1, finish_spills, emit_input_reload_insns,
985         delete_output_reload): Use additional parameter for alter_reg.
986         (finish_spills, emit_input_reload_insns, delete_output_reload):
987         Call mark_allocation_change.
988         (finish_spills): Call retry_ira_color.
989         
990         * doc/invoke.texi: Describe new options -fira,
991         -fira-biased-coloring, and -fira-algorithm.
992         
993         * doc/passes.texi: Decribe IRA.
995         * doc/tm.texi:  Decribe macro IRA_COVER_CLASSES.
996         
997         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
999         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
1001         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
1003         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
1004         
1005         Richard Henderson  <rth@redhat.com>
1007         * tree-pass.h (pass_lower_subreg): New external definition.
1008         * toplev.h (flag_lower_subreg): New external definition.
1009         * rtl.def (CONCATN): New rtl expression.
1010         * dwarf2out.c (concatn_loc_descriptor): New function.
1011         (loc_descriptor): Process CONCATN.
1012         * timevar.def (TV_LOWER_SUBREG): New definition.
1013         * emit-rtl.c (gen_reg_rtx_offset): New function.
1014         (gen_lowpart_common): Process CONCATN.
1015         * simplify-rtx.c (simplify_subreg): Process CONCATN.
1016         * common.opt (flower-subreg): New options.
1017         * rtl.h (gen_reg_rtx_offset): New external definition.
1018         * Makefile.in (OBJS-common): Add lower-subreg.o.
1019         (lower-subreg.o): New entry.
1020         * passes.c (pass_lower_subreg): Add new pass.
1021         * lower-subreg.c: New file.
1022         
1023 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
1025         * config/i386/cygwin.asm: (__alloca): Correct calling
1026         convention and alignment.
1027         (__chkstk): Force 8 byte stack alignment.
1029 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
1030             Richard Guenther  <rguenther@suse.de>
1032         PR tree-optimization/33992
1033         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
1034         the zero we compare against.
1036 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
1038         PR libfortran/35063
1039         * gthr-win32.h (__gthread_mutex_destroy_function): New function
1040         to CloseHandle after unlocking to prevent accumulation of handle
1041         count.
1043 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1045         PR middle_end/34150
1046         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
1047         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
1048         and update LABEL_NUSES during and after reload.
1050 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
1052         PR middle-end/34627
1053         * combine.c (simplify_if_then_else): Make sure the comparison is
1054         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
1056 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
1058         PR bootstrap/35051
1059         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
1060         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
1061         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
1062         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
1063         * tree.h (get_type_static_bounds): Likewise.
1065 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1067         * doc/invoke.texi (Option Summary, C++ Dialect Options)
1068         (Objective-C and Objective-C++ Dialect Options, Warning Options):
1069         Make -Wfoo language annotations match what the compiler outputs.
1071 2008-02-08  Sa Liu  <saliu@de.ibm.com>
1073         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu 
1074         intrinsics spu_convts, spu_convtu, spu_convtf.
1075         * testsuite/gcc.target/spu/intrinsics-3.c: New. Test error messages.
1077 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
1079         * doc/extend.texi (Function Attributes) <noinline>: Mention
1080         asm ("") as method to keep calls.
1082 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1084         PR other/32754
1085         * doc/options.texi (Options): Replace references to opts.sh with
1086         optc-gen.awk.
1087         * opts-common.c: Likewise.
1088         * optc-gen.awk: Likewise.
1089         
1090 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
1092         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
1094 2008-02-07  Richard Henderson  <rth@redhat.com>
1096         PR rtl-opt/33410
1097         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
1098         EXPR_LIST for the REG_EQUAL instead of a comparison with a 
1099         funny mode.
1101 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
1103         PR tree-optimization/35085
1104         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
1105         for operand entry oe2 in addition to operand entry oe3 in order to
1106         expose more opportunities for vectorizer sum reduction.
1108 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1110         PR other/35107
1111         * Makefile.in (LIBS): Remove $(GMPLIBS).
1112         (cc1-dummy, cc1): Add $(GMPLIBS).
1114 2008-02-06  Jan Hubicka  <jh@suse.cz>
1116         PR target/23322
1117         * i386.md (moddf_integer): Do not produce partial memory stalls for
1118         targets where it hurts.
1120 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
1122         PR target/35083
1123         * optabs.c (expand_float): Do not check for decimal modes when
1124         expanding unsigned integer through signed conversion.
1126 2008-02-06  Nick Clifton  <nickc@redhat.com>
1128         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
1129         inside the clobber with a match_operand and duplicated operand
1130         number in the constraint.
1131         (ineqbranchsi): Delete redundant comment.
1133 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
1135         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add 
1136         builtin_define ("__USE_INIT_FINI__").
1137         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
1138         -msx multilibs.
1139         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
1141 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1143         PR documentation/30330
1144         * doc/invoke.texi (C++ Dialect Options)
1145         (Objective-C and Objective-C++ Dialect Options, Warning Options):
1146         For each warning option -Wfoo that allows -Wno-foo, ensure both
1147         -Wfoo and -Wno-foo are listed in the option index.  Fix index
1148         entry of -Wswitch-default, index -Wnormalized= including the
1149         `=', and -Wlarger-than-@var{len} including @var{len}.
1151 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
1153         * config/i386/i386.md (floatunssisf2): Use
1154         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
1155         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
1156         Macroize expander using MODEF mode iterator.
1158 2008-02-05  Diego Novillo  <dnovillo@google.com>
1160         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
1162         PR 33738
1163         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
1165 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1167         PR other/35070
1168         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
1170 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
1172         PR target/35084
1173         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
1174         to indicate if a message should be generated.
1175         (init_cumulative_args): Updated.
1176         (function_value_32): Likewise.
1178 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
1180         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
1182 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
1184         PR target/35083
1185         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
1186         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
1188 2008-02-04  Diego Novillo  <dnovillo@google.com>
1190         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
1192         PR 33738
1193         * tree-vrp.c (vrp_evaluate_conditional): With
1194         -Wtype-limits, emit a warning when comparing against a
1195         constant outside the natural range of OP0's type.
1197 2008-02-04  Richard Guenther  <rguenther@suse.de>
1199         PR middle-end/33631
1200         * expr.c (count_type_elements): Give for unions instead of
1201         guessing.
1203 2008-02-04  Richard Guenther  <rguenther@suse.de>
1205         PR middle-end/35043
1206         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
1207         to TYPE_DOMAINs base type instead of using bitsizetype here.
1209 2008-02-03  Jason Merrill  <jason@redhat.com>
1211         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
1213 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1215         PR other/29972
1216         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
1217         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
1218         (RS/6000 and PowerPC Options): Fix typos and markup.
1219         * doc/passes.texi (Tree-SSA passes): Likewise.
1221 2008-02-02  Michael Matz  <matz@suse.de>
1223         PR target/35045
1224         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
1225         from record_last_reg_set_info.
1226         (record_last_reg_set_info): Take an RTX argument, iterate over all
1227         constituent hardregs.
1228         (record_last_set_info, record_opr_changes): Change calls to
1229         new signature or to record_last_reg_set_info_regno.
1231 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
1233         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
1235 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
1237         PR rtl-optimization/34773
1238         * reg-notes.def (EQUAL): Mention significance of combination of
1239         REG_EQUAL and REG_RETVAL.
1240         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
1241         insn that has a REG_RETVAL.
1243 2008-02-01  Roger Sayle  <roger@eyesopen.com>
1245         PR bootstrap/33781
1246         * configure.ac (--enable-fixed-point): Disable unless explicitly
1247         requested on IRIX.
1248         * configure: Regenerate.
1250 2008-02-01  Richard Guenther  <rguenther@suse.de>
1252         PR other/35042
1253         * invoke.texi (-finline-limit): Remove no longer true parts
1254         of the documentation.  Note that there is no default value.
1256 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
1257             Mark Mitchell  <mark@codesourcery.com>
1258             Ben Elliston  <bje@au.ibm.com>
1260         PR c/29326
1261         * doc/extend.texi (Other Builtins): Document.
1263 2008-01-31  Tom Browder <tom.browder@gmail.com>
1265         * doc/c-tree.texi (Types): Fix grammar.
1266         (Expression trees): Ditto.
1267         * doc/passes.texi (Tree-SSA passes): Ditto.
1268         
1269         * doc/configterms.texi (Configure Terms): Fix typo.
1270         * doc/cpp.texi (Common Predefined Macros): Ditto.
1271         * doc/md.texi (Machine Constraints): Ditto.
1272         
1273         * doc/makefile.texi (Makefile): Add comma.
1275 2008-01-31  Tom Browder  <tom.browder@gmail.com>
1276             Gerald Pfeifer  <gerald@pfeifer.com>
1277         
1278         * doc/sourcebuild.texi (Front End): Remove references to CVS
1279         and CVSROOT/modules.
1280         (Texinfo Manuals): Replace reference to CVS by one to SVN.
1281         (Back End): Remove reference to CVS.
1283 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
1285         PR target/34900
1286         * config/mips/mips.c (gen_load_const_gp): New function, taking a
1287         comment from...
1288         (mips16_gp_pseudo_reg): ...here.
1289         * config/mips/mips.md (load_const_gp): Replace with...
1290         (load_const_gp_<mode>): ...this :P-based insn.
1292 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1294         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
1295         options. Minor fixes.
1296         (-std): Move reference to standards closer to where language
1297         standards are first mentioned.
1298         
1299 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
1301         PR rtl-optimization/34995
1302         * reload.c (alternative_allows_const_pool_ref): Take an rtx
1303         parameter and return a bool.  If the rtx parameter is nonnull,
1304         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
1305         (find_reloads): Update call accordingly.  Pass the new operand
1306         if it needed no address reloads, otherwise pass null.
1308 2008-01-30  Richard Henderson  <rth@redhat.com>
1310         PR c/34993
1311         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
1312         for unbounded arrays.
1314 2008-01-30  Silvius Rus  <rus@google.com>
1316         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
1318 2008-01-30  Jan Hubicka  <jh@suse.cz>
1320         PR target/34982
1321         * i386.c (init_cumulative_args): Use real function declaration when
1322         calling locally.
1324 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
1326         PR rtl-optimization/34998
1327         * global.c (build_insn_chain): Treat non-subreg_lowpart
1328         SUBREGs of pseudos as clobbering all the words covered by the
1329         SUBREG, not just all the bytes.
1330         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
1331         original df_ref rather than an extract parameter.
1332         (global_conflicts): Update call accordingly.
1334 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
1336         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
1337         the overflow check to make it easier to read.
1338         (__fixtfdi): Change the type of the ll member in union
1339         long_double to UDItype_x.
1341 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
1343         PR middle-end/34969
1344         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
1345         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
1346         * tree-inline.c (fold_marked_statements): Call
1347         cgraph_update_edges_for_call_stmt if folding a call statement.
1348         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
1349         debug_generic_stmt calls, reset it back afterwards.
1351         PR c/35017
1352         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
1353         static decls.
1354         * c-typeck.c (build_external_ref): Don't pedwarn about
1355         static vars in current function's scope.
1357 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
1359         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
1361 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
1363         PR c/35002
1364         * ipa-struct-reorg.c: Fix spelling.
1365         * params.def: Ditto.
1367 2008-01-29  Richard Guenther  <rguenther@suse.de>
1369         PR middle-end/35006
1370         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
1371         field.
1372         * tree-inline.c (remap_type): Increment remapping_type_depth
1373         around remapping types.
1374         (copy_body_r): Only add referenced variables if they are referenced
1375         from code, not types.
1377 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
1379         PR c++/34055
1380         PR c++/34103
1381         PR c++/34219
1382         PR c++/34606
1383         PR c++/34753
1384         PR c++/34754
1385         PR c++/34755
1386         PR c++/34919
1387         PR c++/34961
1388         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
1389         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
1391 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
1393         PR target/34412
1394         * config/avr/avr.c (expand_prologue): Use correct QI mode frame 
1395         pointer for tiny stack.
1397 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
1399         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
1401 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
1403         * config/vx-common.h: Fix typo in comment.
1405 2008-01-28  Ian Lance Taylor  <iant@google.com>
1407         PR c++/34862
1408         PR c++/33407
1409         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
1410         coalesce pointers if they have different DECL_NO_TBAA_P values.
1411         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
1412         between variables with different DECL_NO_TBAA_P values.
1414 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
1416         PR 31535
1417         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
1418         are not legitimate small data references on SPE targets.
1420 2008-01-28  David Daney  <ddaney@avtrex.com>
1422         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
1424 2008-01-28  David Daney  <ddaney@avtrex.com>
1426         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
1428 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
1430         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
1431         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
1432         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
1433         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
1434         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
1435         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
1436         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
1437         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
1439 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
1441         * basic-block.h (condjump_equiv_p): Fix comment.
1443 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
1445         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
1446         print_generic_stmt_indented): Fix comment.
1448 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
1450         * configure.ac (__stack_chk_fail): Add detecion for availability
1451         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
1452         * configure: Regenerate.
1454 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
1456         PR middle-end/34688
1457         * final.c (output_addr_const): Handle TRUNCATE.
1459 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
1461         PR target/34711
1462         * tree-ssa-loop-ivopts.c (comp_cost): New type.
1463         (zero_cost, infinite_cost): New constants.
1464         (struct cost_pair): Change type of cost to comp_cost.
1465         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
1466         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
1467         New functions.
1468         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
1469         split_address_cost, ptr_difference_cost, difference_cost,
1470         get_computation_cost_at, get_computation_cost,
1471         determine_use_iv_cost_generic, determine_use_iv_cost_address,
1472         determine_use_iv_cost_condition, determine_use_iv_costs,
1473         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
1474         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
1475         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
1476         Change type of cost to comp_cost.
1477         (determine_iv_cost): Increase cost of non-original ivs, instead
1478         of decreasing the cost of original ones.
1479         (get_address_cost): Indicate the complexity of the addressing mode 
1480         in comp_cost.
1481         (try_add_cand_for): Prefer using ivs not specific to some object.
1482         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
1484 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
1485             Janis Johnson  <janis187@us.ibm.com>
1487         PR target/34814
1488         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
1489         (TARGET_INSTANTIATE_DECLS): Likewise.
1490         * target.h (expand_to_rtl_hook): New target hook.
1491         (instantiate_decls): Likewise.
1492         * function.c (instantiate_decl): Make non-static.  Rename to...
1493         (instantiate_decl_rtl): ... this.
1494         (instantiate_expr): Use instantiate_decl_rtl.
1495         (instantiate_decls_1): Likewise.
1496         (instantiate_decls): Likewise.
1497         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
1498         * function.h (instantiate_decl_rtl): Add prototype.
1499         * cfgexpand.c (target.h): New include.
1500         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
1501         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
1502         (TARGET_INSTANTIATE_DECLS): Likewise.
1503         (TARGET_INITIALIZER): New target hooks added.
1504         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
1505         New prototype.
1506         * config/rs6000/rs6000.c (tree-flow.h): New include.
1507         (machine_function): Add sdmode_stack_slot field.
1508         (rs6000_alloc_sdmode_stack_slot): New function.
1509         (rs6000_instantiate_decls): Likewise.
1510         (rs6000_secondary_memory_needed_rtx): Likewise.
1511         (rs6000_check_sdmode): Likewise.
1512         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
1513         (TARGET_INSTANTIATE_DECLS): Likewise.
1514         (rs6000_hard_regno_mode_ok): Allow SDmode.
1515         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
1516         (rs6000_emit_move): Handle SDmode.
1517         (function_arg_advance): Likewise.
1518         (function_arg): Likewise.
1519         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
1520         SDmode var args for 32-bit compiles.
1521         (rs6000_secondary_reload_class): Handle SDmode.
1522         (rs6000_output_function_epilogue): Likewise.
1523         (rs6000_function_value): Simplify if statement.
1524         (rs6000_libcall_value): Likewise.
1525         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
1526         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
1527         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
1528         (movsd_hardfloat): New define_insn.
1529         (movsd_softfloat): Likewise.
1530         (movsd_store): Likewise.
1531         (movsd_load): Likewise.
1532         (extendsddd2): Likewise.
1533         (extendsdtd2): Likewise.
1534         (truncddsd2): Likewise.
1535         (movdd_hardfloat64): Fixup comment.
1536         (UNSPEC_MOVSD_LOAD): New constant.
1537         (UNSPEC_MOVSD_STORE): Likewise.
1539 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
1541         PR c++/34965
1542         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
1543         TRUTH_XOR_EXPR.
1544         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
1545         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
1546         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
1547         and TRUTH_XOR_EXPR.
1549 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
1551         PR target/34794
1552         * config.gcc: Separate AIX 5.3 from AIX 6.1.
1553         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
1554         __LONGDOUBLE128 too.
1555         * config/rs6000/aix61.h: New file.
1557 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
1559         PR rtl-optimization/34959
1560         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
1561         popcount and parity rtxes the same mode as their operand.
1562         Truncate or extend the result to the return value's mode
1563         if necessary.
1565 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
1567         PR target/34981
1568         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
1569         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
1570         to GOT_VERSION_REGNUM.
1571         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
1572         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
1573         * config/mips/mips.c (mips_emit_call_insn): New function.
1574         (mips_call_tls_get_addr): Call mips_expand_call directly.
1575         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
1576         emit_call_insn.
1577         (mips16_build_call_stub): Likewise.  Return the call insn or null.
1578         (mips_expand_call): Update the call to mips16_build_call_stub
1579         accordingly and a remove redundant condition.  Assert that MIPS16
1580         stubs do not use lazy binding.  Use mips_emit_call_insn and return
1581         the call insn.
1582         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
1583         TARGET_USE_GOT.
1584         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
1585         (mips_avoid_hazard): Remove hazard_set handling.
1586         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
1587         (UNSPEC_RESTORE_GP): ...this.
1588         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
1589         (FAKE_CALL_REGNO): Rename to...
1590         (GOT_VERSION_REGNUM): ...this.
1591         (type): Add "ghost" value.  Add an associated insn reservation.
1592         (hazard_set): Remove.
1593         (exception_receiver): Rename to...
1594         (restore_gp): ...this and update the unspec identifier accordingly.
1595         (exception_receiver, nonlocal_got_receiver): New expanders.
1596         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
1597         FAKE_CALL_REGNO.  Remove hazard_set attribute.
1598         (set_got_version, update_got_version): New patterns.
1600 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
1602         PR target/34970
1603         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
1605 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
1607         PR other/31955
1608         * doc/install.texi2html: Generate gcc-vers.texi.
1610 2008-01-25  DJ Delorie  <dj@redhat.com>
1612         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
1614 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
1616         * config/c4x: Remove directory.
1617         * config.gcc (crx-*, mt-*): Mark obsolete.
1618         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
1619         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
1620         sh-*-rtemscoff*): Remove cases.
1621         * defaults.h (C4X_FLOAT_FORMAT): Remove.
1622         * real.c (encode_c4x_single, decode_c4x_single,
1623         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
1624         c4x_extended_format): Remove.
1625         * real.h (c4x_single_format, c4x_extended_format): Remove.
1626         * doc/extend.texi (interrupt, naked): Remove mention of attributes
1627         on C4x.
1628         (Pragmas): Remove comment about c4x pragmas.
1629         * doc/install.texi (c4x): Remove target-specific instructions.
1630         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
1631         * doc/md.texi (Machine Constraints): Remove C4x documentation.
1632         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
1633         refer to C4x source files as examples.
1634         (C4X_FLOAT_FORMAT): Remove documentation.
1636 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
1638         * config/bfin/bfin.c (override_options): Reorder tests so that
1639         flag_pic gets enabled for -msep-data.
1641 2008-01-25  Richard Guenther  <rguenther@suse.de>
1643         PR middle-end/32244
1644         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
1645         to its bitfield precision if required.
1647 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
1649         PR middle-end/33880
1650         * tree-nested.c (walk_omp_for): New function.
1651         (convert_nonlocal_reference, convert_local_reference): Call
1652         walk_omp_for on OMP_FOR.
1653         (convert_call_expr): Call walk_body on OMP_FOR's
1654         OMP_FOR_PRE_INIT_BODY.
1656 2008-01-25  Richard Guenther  <rguenther@suse.de>
1658         PR tree-optimization/34966
1659         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
1660         default defs and PHI_NODEs we have to insert after the
1661         defining statement.
1663 2008-01-24  Nick Clifton  <nickc@redhat.com>
1665         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
1666         Provide a default definition.
1667         (LIBGCC2_UNITS_PER_WORD): Likewise.
1669         * config/stormy16/stormy16.c: Include df.h for the prototype
1670         for df_regs_ever_live_p.
1671         (xstormy16_expand_builtin_va_start): Convert the stack offset
1672         into a component_ref and then use POINTER_PLUS_EXPR to add it
1673         to the incoming_virtual_args_rtx.
1674         (xstormy16_gimplify_va_arg_expr): Rename to
1675         xstormy16_gimplify_va_arg_expr.
1676         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
1677         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
1678         xstormy16_gimplify_va_arg_expr.
1679         Fix up some formatting issues.
1681         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
1682         Move to predicates.md.
1683         (xs_hi_general_operand): Likewise.
1684         (xs_hi_nonmemory_operand): Likewise.
1685         * config/stormy16/predicates.md:
1686         (xstormy16_carry_plus_operand): New predicate.
1687         (xs_hi_general_operand): New predicate.
1688         (xs_hi_nonmemory_operand): New predicate.
1689         * config/stormy16/stormy16-protos.h:
1690         (xstormy16_carry_plus_operand): Delete prototype.
1691         (xs_hi_general_operand): Likewise.
1692         (xs_hi_nonmemory_operand): Likewise.
1694         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
1695         modifiers as they are no longer needed and they can trigger
1696         reload spill failures.
1698         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
1699         with a match_operand in order to help reload.
1701         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
1702         constraint with 'e' for the 8th alternative as this version of
1703         the mov.w instruction only accepts the lower 8 registers.
1705 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
1707         PR target/34856
1708         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
1709         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
1710         vector elements.
1712 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
1714         PR middle-end/33333
1715         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
1717 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
1719         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
1720         New functions.
1721         (remove_structure): Update allocations list before removing structure.
1722         
1723 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
1725         * ipa-struct-reorg.c (is_safe_cond_expr, 
1726         create_new_stmts_for_cond_expr): Use integer_zerop function,
1727         that recognize not only zero-pointer, but zero-integer too.
1729 2008-01-25  Ben Elliston  <bje@au.ibm.com>
1731         PR other/22232
1732         * fixproto: Escape "." in sed expression that strips leading "./".
1734 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
1736         PR driver/34904
1737         * gcc.c (SWITCH_OK): Removed.
1738         (SWITCH_LIVE): Changed to bit.
1739         (SWITCH_FALSE): Likewise.
1740         (SWITCH_IGNORE): Likewise.
1741         (switchstr): Change live_cond to unsigned int.
1742         (process_command): Replace SWITCH_OK with 0.
1743         (do_self_spec): Likewise.
1744         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
1745         (give_switch): Likewise.
1746         (used_arg): Likewise.
1747         (do_spec_1): Set the SWITCH_IGNORE bit.
1748         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
1749         bits.  Set the SWITCH_LIVE bit.
1751 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1753         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
1755 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1757         PR tree-optimization/34472
1758         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
1759         parameter to a "bool *" and set *DATA to false if there is
1760         an unsafe access.  Do not delete the structure here.
1761         (check_cond_exprs): Delete it here instead.
1762         (check_cond_exprs, exclude_cold_structs): Do not increase
1763         I when removing a structure.
1765 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
1767         PR target/34856
1768         * config/i386/i386.c (ix86_expand_vector_init): Consider only
1769         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
1771 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
1773         PR middle-end/34934
1774         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
1775         a fixed vector for stack.
1777 2008-01-24  Ben Elliston  <bje@au.ibm.com>
1779         PR c++/25701
1780         * doc/gcc.texi (Software development): Add a direntry for g++.
1781         
1782 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
1784         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
1785         stale and straggling -fforce-addr comments above.
1787         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
1788         define.
1789         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
1790         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
1792 2008-01-23  Michael Matz  <matz@suse.de>
1794         PR debug/34895
1795         * dwarf2out.c (force_type_die): Use modified_type_die instead of
1796         gen_type_die.
1798 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
1800         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
1801         malloc result type.
1803 2008-01-23 Anatoly Sokolov <aesok@post.ru>
1805         * config/avr/avr.c (avr_current_arch): New variable.
1806         (avr_arch_types): Add 'avr31' and 'avr51' entries.
1807         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
1808         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
1809         (avr_override_options): Init 'avr_current_arch'. 
1810         (base_arch_s): Move from here...
1811         * config/avr/avr.h (base_arch_s): ... here. Add new members 
1812         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename 
1813         'mega' to 'have_jmp_call'.
1814         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__", 
1815         "__AVR_HAVE_RAMPZ__",   "__AVR_HAVE_ELPM__" and  "__AVR_HAVE_ELPMX__"
1816         macros.
1817         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51' 
1818         architectures.
1819         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, 
1820         MULTILIB_MATCHES): (Ditto.).
1822 2008-01-23  Richard Guenther  <rguenther@suse.de>
1824         PR middle-end/31529
1825         * cgraphunit.c (cgraph_reset_node): Always mark the node
1826         not reachable if it is not queued already.
1828 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
1830         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
1831         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
1832         (cputype_selected): New static variable.
1833         (bfin_handle_option): Set it if -mcpu is used.
1834         (override_option): Select default set of workarounds if no cpu type
1835         selected on the command line.
1836         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
1838         From  Michael Frysinger  <michael.frysinger@analog.com>
1839         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
1840         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
1842         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
1843         for bf547, bf523, bf524, and bf526.
1844         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
1845         bf526.
1846         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1847         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
1848         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
1849         __ADSPBF547__ and __ADSPBF54x__ for bf547.
1850         * doc/invoke.texi (Blackfin Options): Document that
1851         -mcpu now accept bf547, bf523, bf524, and bf526.
1853 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
1855         PR rtl-optimization/34628
1856         * combine.c (try_combine): Stop and undo after the first combination
1857         if an autoincrement side-effect on the first insn has effectively
1858         been lost.
1860 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
1862         PR target/34529
1863         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
1864         Offset addresses are not valid for Altivec or paired float modes.
1866 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
1868         PR c++/34607
1869         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
1870         if DECL_INITIAL (decl) is error_mark_node.
1872         PR c++/34914
1873         * c-common.c (handle_vector_size_attribute): Only allow
1874         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
1875         the same way as pointer, array etc. types.
1876         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
1878         PR c++/34917
1879         * tree.c (build_type_attribute_qual_variant): Call
1880         build_qualified_type if attributes are equal, but quals are not.
1882 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1884         PR 32102
1885         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
1886         * flags.h (warn_strict_aliasing): Remove.
1887         (warn_strict_overflow): Remove.
1888         * opts.c (warn_strict_aliasing): Remove.
1889         (warn_strict_overflow): Remove.
1890         * c-opts.c (c_common_handle_option): -Wall only sets
1891         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
1892         (c_common_post_options): Give default values to -Wstrict-aliasing
1893         and -Wstrict-overflow if they are uninitialized.
1894         * common.opt (Wstrict-aliasing): Specify Var and Init.
1895         (Wstrict-overflow): Likewise.
1897 2008-01-22  Kenneth Zadeck <zadeck@naturalbridge.com>
1899         PR rtl-optimization/26854
1900         PR rtl-optimization/34400
1901         PR rtl-optimization/34884
1902         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
1903         DF_RD->gen.
1904         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
1905         (df_rd_bb_info.expanded_lr_out): Deleted
1906         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
1907         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
1908         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
1909         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
1910         Removed code to allocate, initialize or free expanded_lr_out.
1911         (df_rd_bb_local_compute_process_def): Restructured to make more
1912         understandable.
1913         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
1914         sets if the sets are being trimmed.
1916 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
1918         PR bootstrap/32287
1919         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
1920         (as_vers): Likewise.
1921         * configure: Regenerated.
1923 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1925         PR middle-end/33092
1926         * tree-pass.h (pass_build_alias): New pass.
1927         * tree-ssa-alias.c (gate_build_alias): New.
1928         (pass_build_alias): New.
1929         * passes.c (init_optimization_passes): Add pass_build_alias after
1930         pass_create_structure_vars.
1932 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
1934         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
1935         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
1936         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
1937         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
1938         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
1939         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
1940         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
1941         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
1942         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
1943         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
1944         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
1945         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
1946         * config/s390/s390.md (FP_ALL): New mode iterator.
1947         (_d): New mode attribute.
1948         ("*signbit<mode>2>"): Changed mode of first operand.
1949         ("isinf<mode>2"): Changed mode of first operand.
1950         ("*TDC_insn"): Adaptation for DFP modes.
1952 2008-01-22  Ben Elliston  <bje@au.ibm.com>
1954         * tree.c (check_qualified_type): Improve function description.
1956 2008-01-21  Jason Merrill  <jason@redhat.com>
1958         PR c++/34196
1959         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
1960         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
1961         if it is set.
1963 2008-01-21  DJ Delorie  <dj@redhat.com>
1965         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
1966         return zero.
1968 2008-01-21  Richard Guenther  <rguenther@suse.de>
1970         PR middle-end/34856
1971         * tree-cfg.c (verify_expr): Allow all invariant expressions
1972         instead of just constant class ones as reference argument.
1973         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
1974         like any other constant.
1975         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
1977 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
1979         * regmove.c (fixup_match_1): Update call crossed frequencies.
1981 2008-01-21  Richard Guenther  <rguenther@suse.de>
1983         PR c/34885
1984         * tree-inline.c (setup_one_parameter): Deal with mismatched
1985         types using a VIEW_CONVERT_EXPR.
1987 2008-01-21  Alon Dayan  <alond@il.ibm.com>
1988             Olga Golovanevsky  <olga@il.ibm.com>
1989         
1990         PR tree-optimization/34701
1991         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
1992         when the structure size is not a power of 2.
1994 2008-01-20  Kenneth Zadeck <zadeck@naturalbridge.com>
1996         * doc/install.texi: Add doc for --enable-checking=df.
1997         
1998 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
2000         PR rtl-optimization/34808
2001         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
2003 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
2005         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
2006         input.
2008 2008-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
2010         PR rtl-optimization/26854
2011         PR rtl-optimization/34400
2012         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
2013         DF_RD->gen.
2014         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
2015         (df_rd_bb_info.expanded_lr_out): New.
2016         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
2017         * loop_iv.c (iv_analysis_loop_init): Ditto.
2018         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
2019         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
2020         Added code to allocate, initialize or free expanded_lr_out.
2021         (df_rd_bb_local_compute_process_def): Restructured to make
2022         more understandable.
2023         (df_rd_confluence_n): Add code to do nothing with fake edges and
2024         code to no apply invalidate_by_call sets if the sets are being trimmed.
2025         (df_lr_local_finalize): Renamed to df_lr_finalize.
2026         (df_live_local_finalize): Renamed to df_live_finalize.
2028 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
2030         PR target/34831
2031         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
2032         deciding whether to use reciprocal instructions.
2034 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
2036         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
2037         dwarf2out_note_section_used if cold_text_section is NULL.
2039 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
2041         PR gcov-profile/34610
2042         * tree-cfg.c (make_edges): Mark both outgoing edges from
2043         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
2044         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
2045         from OMP_FOR and OMP_CONTINUE outgoing edges.
2047         * tree-profile.c (tree_profiling): Return early if
2048         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
2049         at the end.
2050         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
2051         from cfun to child_cfun.
2052         * function.h (struct function): Add after_tree_profile bit.
2054 2008-01-19 Anatoly Sokolov <aesok@post.ru>
2056         * config/avr/avr.S (_exit): Disable interrupt.
2058 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
2059             Steven Bosscher  <stevenb.gcc@gmail.com>
2061         PR rtl-optimization/26854
2062         PR rtl-optimization/34400
2063         * df-problems.c (df_live_scratch): New scratch bitmap.
2064         (df_live_alloc): Allocate df_live_scratch when doing df_live.
2065         (df_live_reset): Clear the proper bitmaps.
2066         (df_live_bb_local_compute): Only process the artificial defs once
2067         since the order is not important.
2068         (df_live_init): Init the df_live sets only with the variables
2069         found live by df_lr.
2070         (df_live_transfer_function): Use the df_lr sets to prune the
2071         df_live sets as they are being computed.  
2072         (df_live_free): Free df_live_scratch.
2074 2008-01-18  Ian Lance Taylor  <iant@google.com>
2076         * common.opt: Add fmerge-debug-strings.
2077         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
2078         flag_merge_debug_strings rather than flag_merge_constants.
2079         * doc/invoke.texi (Option Summary): Mention
2080         -fmerge-debug-strings.
2081         (Debugging Options): Document -fmerge-debug-strings.
2083 2008-01-18  Ian Lance Taylor  <iant@google.com>
2085         PR c++/33407
2086         * tree.h (DECL_IS_OPERATOR_NEW): Define.
2087         (struct tree_function_decl): Add new field operator_new_flag.
2088         * tree-inline.c (expand_call_inline): When inlining a call to
2089         operator new, force the return value to go into a variable, and
2090         set DECL_NO_TBAA_P on that variable.
2091         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
2093 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
2095         PR debug/34484
2096         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
2097         DWARF2_DEBUGGING_INFO.
2098         (dwarf2out_note_section_used): Ditto.  Add prototype.
2099         (have_multiple_function_sections, text_section_used,
2100         cold_text_section_used, *cold_text_sections): Move declarations
2101         before their uses.
2103 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
2105         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
2106         field and add signal_ra.
2107         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
2108         assignments to frame state pc.  Move end of stack check after
2109         MD_FALLBACK_FRAME_STATE_FOR.
2110         (uw_update_context_1): Use frame state signal_regs if set, instead
2111         of checking signal_frame flag.
2112         (uw_update_context): Use frame state signal_ra if set.
2113         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
2114         * config/xtensa/linux-unwind.h: New file.
2116 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
2118         * modulo-sched.c (get_sched_window): Fix comment typo.
2120 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
2122         PR tree-optimization/34648
2123         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
2125 2008-01-17  Anatoly Sokolov <aesok@post.ru>
2127         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
2128         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
2130 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
2132         PR rtl-optimization/34400
2133         * df-core.c (df_worklist_dataflow_overeager,
2134         df_worklist_dataflow_doublequeue): New functions.
2135         (df_worklist_dataflow): Two different worklist solvers.
2136         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
2137         New param.
2139 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
2141         PR testsuite/34821
2142         * doc/invoke.texi: Document the dependence on pthread for fopenmp
2143         and ftree-parallelize-loops.
2145 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
2147         PR rtl-optimization/34826
2148         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
2150 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
2152         * global.c (find_reg): Mark the eh regs as used if necessary.
2153         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
2154         * ra.h (struct allocno): no_eh_reg field added.  Changed
2155         no_stack_reg type to bitfield.
2157 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
2159         * tree.c (substitute_in_expr): Add missing 'break'.
2161 2008-01-17  Richard Guenther  <rguenther@suse.de>
2163         PR tree-optimization/34825
2164         * tree-ssa-math-opts.c (is_division_by): Do not recognize
2165         x / x as division to handle.
2167 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2169         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
2170         "-pthread" is specified.
2171         * pa-hpux11.h (LIB_SPEC): Likewise.
2173 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
2174             Peter Bergner  <bergner@vnet.ibm.com>
2176         PR rtl-optimization/33796
2177         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
2179 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2181         PR libgfortran/34699
2182         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
2183         static links.
2184         * pa-hpux10.h (LINK_SPEC): Likewise.
2185         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
2187 2008-01-16  Richard Guenther  <rguenther@suse.de>
2189         PR middle-end/32628
2190         * fold-const.c (fold_convert_const_int_from_int): Do not
2191         set overflow if that occured only because of a sign extension
2192         change when converting from/to a sizetype with the same
2193         precision and signedness.
2195 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
2197         PR debug/34249
2198         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
2199         location address to the correct place.  Update copyright year.
2201 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
2203         * lambda-code.c (lambda_transform_legal_p): Handle the case of
2204         no dependences in the dependence_relations vector.
2206 2008-01-16  Jan Hubicka  <jh@suse.cz>
2208         PR rtl-optimization/31396
2209         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
2210         * cfg.c (dump_reg_info): Print it.
2211         * regs.h (struct reg_info_t): add freq_calls_crossed.
2212         (REG_FREQ_CALLS_CROSSED): New macro.
2213         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
2214         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
2215         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
2216         regmove_optimize): Update call crossed frequencies.
2217         * local-alloc.c (struct qty): Add freq_calls_crossed.
2218         (alloc_qty): Copute freq_calls_crossed.
2219         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
2220         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
2221         * ra.h (struct allocno): Add freq_calls_crossed.
2223 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
2225         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
2226         libgomp when compiling with ftree-parallelize-loops.
2227         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
2229 2008-01-16  Richard Guenther  <rguenther@suse.de>
2231         PR tree-optimization/34769
2232         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
2233         * tree.c (int_cst_value): Instead make this function more
2234         permissive in what it accepts as valid input.  Document this
2235         function always sign-extends the value.
2237 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
2238             Richard Guenther  <rguenther@suse.de>
2240         PR c/34668
2241         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
2242         (gimple_fold_indirect_ref_rhs): ... this.
2243         (gimple_fold_indirect_ref): New function with foldings
2244         that preserve lvalueness.
2245         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
2246         * tree-flow.h (gimple_fold_indirect_ref): Declare.
2247         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
2248         to fold an INDIRECT_REF, fall back to the old use of
2249         fold_indirect_ref_1.
2251 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
2253         * tree-data-ref.c (subscript_dependence_tester_1): Call 
2254         free_conflict_function.
2255         (compute_self_dependence): Same.
2257 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
2259         PR debug/34249
2260         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
2261         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
2262         function global.
2263         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
2264         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
2265         for DWARF2_UNWIND_INFO targets.
2267 2008-01-16  Richard Guenther  <rguenther@suse.de>
2269         PR c/34768
2270         * c-typeck.c (common_pointer_type): Do not merge inconsistent
2271         type qualifiers for function types.
2273 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
2275         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
2276         loop_iterator li from previous commit.
2278 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
2280         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
2282 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
2284         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
2285         (parallelize_loops): Don't parallelize irreducible components.
2287 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2289         PR c++/24924
2290         * c-opts (c_common_post_options): Do not enable CPP
2291         flag_pedantic_errors by default.
2292         
2293 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
2295         PR rtl-optimization/31944
2296         * cse.c (remove_pseudo_from_table): New function.
2297         (merge_equiv_classes): Use above function to remove pseudo-registers.
2298         (invalidate): Likewise.
2300 2008-01-13  Richard Guenther  <rguenther@suse.de>
2302         PR middle-end/34601
2303         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
2304         instead of TYPE_MODE to deal with calls from expand_one_error_var.
2306 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
2308         * gcse.c (cprop_jump): Call validate_unshare_change instead of
2309         validate_change to unshare the source of the PC set.
2311 2008-01-12  Jan Hubicka  <jh@suse.cz>
2313         PR middle-end/32135
2314         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
2315         references above array bounds.  This might trigger bounds checks for
2316         pointers to arrays.
2318 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
2320         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
2321         new_replaceable_dependencies.
2323 2008-01-12  Doug Kwan  <dougkwan@google.com>
2325         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
2326         instead of OPT_Wreturn_type in warning due to ignored return type
2327         qualifiers.
2328         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
2329         options included in -Wextra.
2330         * c.opt: New option -Wignored_qualifiers.
2331         * doc/invoke.texi (Warning Options, -Wextra): Add new option
2332         -Wignore_qualifiers.
2333         (-Wignored-qualifiers): Document.
2334         (-Wreturn-type): Remove description of functionality now handled
2335         by -Wignored-qualifiers.
2337 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
2339         PR ada/33788
2340         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
2341         NOP_EXPR if it is between integral types with the same precision.
2343 2008-01-12  Jan Hubicka  <jh@suse.cz>
2345         PR other/28023
2346         * invoke.texi (max-inline-recursive-depth): Fix default value.
2348 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
2350         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
2351         correct type.
2353 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
2354         
2355         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
2356         
2357 2008-01-11  James E. Wilson  <wilson@specifix.com>
2359         PR target/26015
2360         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
2362 2008-01-11  Anatoly Sokolov <aesok@post.ru>
2364         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't 
2365         save/restore frame pointer register and don't use 'call-prologues' 
2366         optimization in function with "OS_task" attribute.
2368 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
2370         PR middle-end/31309
2371         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
2372         when copying to memory.
2374 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
2376         PR rtl-optimization/30905
2377         * cfgcleanup.c: Include dce.h
2378         (crossjumps_occured): New global variable.
2379         (try_crossjump_bb): Exit loop after finding a fallthru edge.
2380         If something changed, set crossjumps_occured to true.
2381         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
2382         Don't add/remove fake edges to exit here...
2383         (cleanup_cfg): ...but do it here, when crossjumping.
2384         Run a fast DCE when successful crossjumps occured in the latest
2385         iteration of try_optimize_cfg.
2387 2008-01-11  Richard Guenther  <rguenther@suse.de>
2389         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
2390         (struct vn_unary_op_s): Likewise.
2391         (vn_reference_insert): Free old reference on hash collision.
2393 2008-01-10  Raksit Ashok  <raksit@google.com>
2395         PR rtl-optimization/27971
2396         * combine.c (find_split_point): Split PLUS expressions which are
2397         inside a MEM rtx, and whose first operand is complex.
2399 2008-01-10  DJ Delorie  <dj@redhat.com>
2401         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
2402         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
2403         (m32c_hard_regno_ok): Call the underlying function.
2405 2008-01-10  Richard Guenther  <rguenther@suse.de>
2407         PR middle-end/34683
2408         * tree-cfg.c (tree_merge_blocks): Do not go through the
2409         full-blown folding and stmt updating path if we just deal
2410         with virtual operands.
2411         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
2412         test for abnormal SSA_NAMEs.
2414 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2416         PR middle-end/34641
2417         * reload.c (push_reload): Add assertions.  All constants from
2418         reg_equiv_constant should have been used for replacing the respective
2419         pseudo earlier.
2420         (find_reloads_address): Invoke find_reloads_address_part for
2421         constant taken from the reg_equiv_constant array.
2423 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
2425         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
2426         field (valnum) the first in the struct.  Replace bools with
2427         unit bit fields.
2429 2008-01-10  Richard Guenther  <rguenther@suse.de>
2431         PR tree-optimization/34651
2432         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
2433         types and ordering for masking and converting.
2435 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
2437         PR tree-optimization/34017
2438         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
2439         also for PHI_NODE expressions.
2441 2008-01-09  Jan Hubicka  <jh@suse.cz>
2443         PR tree-optimization/34708
2444         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
2445         based on number of case labels.
2446         (init_inline_once): Remove switch_cost.
2447         * tree-inline.h (eni_weights_d): Remove switch_cost.
2449 2008-01-09  Richard Guenther  <rguenther@suse.de>
2450         Andrew Pinski  <andrew_pinski@playstation.sony.com>
2452         PR middle-end/30132
2453         * gimplify.c (gimplify_cond_expr): Do not create an addressable
2454         temporary if an rvalue is ok or an lvalue is not required.
2456 2008-01-09  Richard Guenther  <rguenther@suse.de>
2458         PR middle-end/34458
2459         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
2460         adjust return type.
2462 2008-01-09  Richard Guenther  <rguenther@suse.de>
2464         PR middle-end/34679
2465         * tree.c (host_integerp): Check for sizetype only if the
2466         type is an integer type.
2468 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
2470         PR debug/26364
2471         * opts.c (decode_options): Disable inlining of functions called
2472         once if not in unit-at-a-time mode.
2474 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
2476         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
2478 2008-01-08  Richard Guenther  <rguenther@suse.de>
2480         PR middle-end/31863
2481         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
2482         out early if the result will be unused.
2484 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
2486         PR target/34709
2487         Revert:
2489         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
2490         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
2491         for TARGET_RECIP.       
2492         
2493 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
2494         
2495         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
2496         for vectorization tuned.
2497         
2498 2008-01-08  Richard Guenther  <rguenther@suse.de>
2500         PR tree-optimization/34683
2501         * tree-ssa-operands.c (operand_build_cmp): Export.
2502         * tree-ssa-operands.h (operand_build_cmp): Declare.
2503         * tree-vn.c (vuses_compare): Remove.
2504         (sort_vuses): Use operand_build_cmp.
2505         (sort_vuses_heap): Likewise.
2506         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
2507         to re-use old VEC if available.  Do not sort already sorted VUSEs.
2508         (vdefs_to_vec): Do not sort already sorted VDEFs.
2510 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
2512         PR middle-end/34694
2513         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
2515 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
2517         PR target/34702
2518         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
2519         limitations of reciprocal sequences on x86 targets.
2521 2008-01-08  Richard Guenther  <rguenther@suse.de>
2523         PR tree-optimization/34683
2524         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
2526 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
2528         PR target/34622
2529         * config/darwin.c (darwin_mergeable_string_section): Don't use
2530         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
2532 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
2534         PR target/34682
2535         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
2536         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
2537         predicates of op0 and op1 to register_operand.
2538         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
2539         expander using X87MODEF mode iterator.  Change predicates of
2540         op0 and op1 to register_operand.
2541         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
2542         corresponding patterns and macroize using MODEF macro.  Change
2543         predicates of op0 and op1 to register_operand and remove
2544         "m" constraint. Disparage "r" alternative with "!".
2545         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
2546         macroize using X87MODEF macro.  Change predicates of op0 and op1
2547         to register_operand and remove "m" constraint.  Disparage "r"
2548         alternative with "!".
2549         (absneg splitter with memory operands): Remove.
2550         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
2551         patterns and macroize using X87MODEF mode iterator.
2552         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
2553         Change predicate of op1 to register_operand.
2554         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
2555         for memory operands.
2557 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
2559         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
2561 2008-01-07  Richard Guenther  <rguenther@suse.de>
2563         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
2564         fields.
2566 2008-01-07  Richard Guenther  <rguenther@suse.de>
2568         PR tree-optimization/34683
2569         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
2570         VOPs of the needed size to save memory.  Use VEC_quick_push
2571         to save compile-time.
2572         (vdefs_to_vec): Likewise.
2574 2008-01-07  Sa Liu  <saliu@de.ibm.com>
2576         * config/spu/spu.md (divdf3): Genetate inline code for double
2577         division.  The implementation doesn't handle INF or NAN, therefore it
2578         only applies when -ffinite-math-only is given.
2580 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
2582         PR libstdc++/34680
2583         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
2584         * doc/cpp.texi ([Common Predefined Macros]): Document.
2586 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
2588         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
2589         order to use commutative addition instead of subtraction.
2591 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2592             Mircea Namolaru  <namolaru@il.ibm.com>
2593             Vladimir Yanovsky  <yanov@il.ibm.com>
2594             Revital Eres  <eres@il.ibm.com>
2596         PR tree-optimization/34263
2597         * tree-outof-ssa.c (process_single_block_loop_latch,
2598         contains_tree_r): New functions.
2599         (analyze_edges_for_bb): Call process_single_block_loop_latch
2600         function to empty single-basic-block latch block if possible.
2602 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
2604         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
2605         for TARGET_RECIP.
2606         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
2608 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
2610         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
2612 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
2614         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
2616 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
2618         PR tree-optimization/34618
2619         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
2620         flag from T.
2622 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
2624         PR target/34673
2625         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
2626         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
2627         Update copyright year.
2629         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
2630         Update copyright year.
2631         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
2632         using NR fixup.
2634 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
2636         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
2637         edge does not point to current bb before changing need_assert.
2639 2008-01-04  Richard Guenther  <rguenther@suse.de>
2641         PR middle-end/34029
2642         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
2643         for verifying purposes if they are is_gimple_min_invariant.
2645 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
2647         PR tree-optimization/34448
2648         PR tree-optimization/34465
2649         * gimplify.c (gimplify_init_constructor): Add new parameter
2650         notify_temp_creation.  Use it.
2651         (gimplify_modify_expr_rhs): Take volatiles into account when
2652         optimizing constructors.
2653         Do not optimize constructors if gimplify_init_constructor will dump to
2654         memory.
2655         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
2656         * gcc.c-torture/compile/pr34448.c: New.
2658 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
2660         PR gcov-profile/34609
2661         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
2662         return_slot if result is TREE_ADDRESSABLE.
2664 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
2666         * config/mips/mips.md (sqrt_condition): Tweak comment.
2667         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
2669 2008-01-03  Tom Tromey  <tromey@redhat.com>
2671         PR c/34457
2672         * c-common.c (c_type_hash): Handle VLAs.
2674 2008-01-03  Jan Hubicka  <jh@suse.cz>
2676         PR tree-optimization/31081
2677         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
2678         0 when inlining and not inlining to first basic block.
2679         (remap_decl): When var is initialized to 0, don't set default_def.
2680         (expand_call_inline): Set entry_bb.
2681         * tree-inline.h (copy_body_data): Add entry_bb.
2683 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
2685         PR c++/34619
2686         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
2687         before returning.
2689         PR tree-optimization/29484
2690         * tree-inline.c (inline_forbidden_p_2): New function.
2691         (inline_forbidden_p): Disallow inlining if some static var
2692         has an address of a local LABEL_DECL in its initializer.
2693         * doc/extend.texi (Labels as Values): Document &&foo behaviour
2694         vs. inlining.
2696 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
2698         PR tree-optimization/34635
2699         * tree-data-ref.c (add_other_self_distances): Make sure that the
2700         evolution step is constant.
2702 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
2704         PR middle-end/34608
2705         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
2707 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
2709         * tree-sra.c (scalarize_init): Insert the generate_element_init
2710         statements after the generate_element_zero statements.
2712 2008-01-02  Richard Guenther  <rguenther@suse.de>
2714         PR middle-end/34093
2715         PR middle-end/31976
2716         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
2717         for very large number of operands instead of ICEing.
2719 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
2721         PR target/34013
2722         * gcc/config/i386/i386.c (ix86_expand_prologue): Save red-zone
2723         while stack probing.
2725 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
2727         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
2728         in C++0x mode.
2730 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
2732         PR libmudflap/26442
2733         * tree-mudflap.c (mx_register_decls): Guard warning by
2734         !DECL_ARTIFICIAL check.
2736 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
2738         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
2739         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
2740         sse5_perm<mode>): Fix constraints.