2008-05-08 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / ChangeLog
blob97c3091af53b1bb11f711fa9c8c78c2d68645a55
1 2008-05-08  Vladimir Makarov  <vmakarov@redhat.com>
3         * ira-int.h (loop_tree_node): New members subloops and
4         subloop_next.
5         
6         * ira-conflicts.c (propagate_modified_regnos): Check that it is a
7         loop node.
8         (ira_build_conflicts): Use TRUE for traverse_loop_tree.
9         
10         * ira-color.c (color_pass): Check that it is a
11         loop node.  Use subloops and subloop_next for traversing.
12         (move_spill_restore): Ditto.
13         (coalesced_pseudo_reg_freq_compare,
14         coalesced_pseudo_reg_slot_compare, pseudo_reg_compare): Don't
15         discard const.
16         
17         * ira-lives.c (create_allocno_live_ranges): Use TRUE for
18         traverse_loop_tree.
19         
20         * ira-emit.c (ira_emit): Ditto.
22         * ira-build.c (add_loop_to_tree): Set up subloops and
23         subloop_next.
24         (setup_loop_tree_level): Use subloops and subloop_next for
25         traversing.
26         (form_loop_tree): Initialize subloops and subloop_next.
27         (traverse_loop_tree): Change 1st parameter semantics.  Rewrite the
28         function.
29         (create_loop_tree_node_caps): Check that it is a loop node.
30         (check_and_add_conflicts): Check allocno loop nodes.
31         (add_conflict_with_underlying_allocnos): Use subloops and
32         subloop_next for traversing.
33         
34         * ira.c (chain_freq_compare, chain_bb_compare): Don't discard
35         const.
36         (ira): Call regstat functions second time only if new pseudos are
37         created.
39         * ira-costs.c (find_allocno_class_costs): Use TRUE for
40         traverse_loop_tree.
41         (setup_allocno_cover_class_and_costs): Ditto.
43 2008-05-06  Vladimir Makarov  <vmakarov@redhat.com>
45         PR rtl-optimization/36028
46         * caller-save.c (setup_save_areas): Adjust reused stack slot.
48 2008-05-05  Kaz Kojima  <kkojima@gcc.gnu.org>
50         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
51         STACK_REGS is defined.
53 2008-05-05  Vladimir Makarov  <vmakarov@redhat.com>
55         * ira-color.c (allocno_assign_compare_func): Remove.
56         (ira_fast_allocation): Rewrite.
58 2008-05-02  Vladimir Makarov  <vmakarov@redhat.com>
60         * ira-conflicts.c (print_conflicts): Exclude non-allocatable hard
61         regs and hard regs from different cover classes.
62         (ira_build_conflicts): Build conflicts only for optimization mode.
64         * cfgloopanal.c (estimate_reg_pressure_cost): Decrease cost only
65         for optimization mode.
67         * caller-save.c (caller-save.c, calculate_local_save_info,
68         save_call_clobbered_regs): Do save/restore placement optimization
69         and sharing stack slots only for optimization mode.
71         * ira-int.h (set_allocno_cover_class, ira_fast_allocation): New
72         prototypes.
74         * ira-color.c (assign_hard_reg): Clear conflicting_regs.
75         (allocno_assign_compare_func, allocno_assign_compare_func): New
76         functions.
78         * global.c (build_insn_chain): Add spilled pseudos only in
79         optimization mode.
81         * ira-emit.c (modify_move_list): Use set_allocno_cover_class.
83         * alias.c (nonoverlapping_memrefs_p): Check addresses only in
84         optimization mode.
86         * ira-build.c (create_allocno): Initialize
87         ALLOCNO_CONFLICT_HARD_REGS and ALLOCNO_TOTAL_CONFLICT_HARD_REGS by
88         non-allocatable hard reg set.
89         (set_allocno_cover_class): New function.
90         (create_cap_allocno): Use set_allocno_cover_class.
91         (ira_build): Call create_loop_tree_node_caps,
92         propagate_info_to_loop_tree_node_caps, and
93         propagate_info_to_loop_tree_node_caps only in optimization mode.
94         * ira.c (setup_reg_renumber): Add optimize to ira_assert.
95         (ira): Call find_reg_equiv_invariant_const, ira_color,
96         sort_insn_chain, and fix_reg_equiv_init only in optimization mode.
97         Call ira_fast_allocation for -O0.  Use right argument for reload.
99         * ira-costs.c (find_allocno_class_costs): Use important_classes
100         only for optimization mode.
101         (setup_allocno_cover_class_and_costs): Use
102         set_allocno_cover_class.  Initialize cost vectors only in
103         optimization mode.  Call process_bb_node_for_hard_reg_moves only
104         in optimization mode.
106         * reload1.c (compute_use_by_pseudos): Add optimize to ira_assert.
107         (reload): Sort pseudo-registers only optimization mode.  Restore
108         original order for insn chain only in optimization mode.
109         (calculate_needs_all_insns): Call mark_memory_move_deletion only
110         in optimization mode.
111         (count_pseudo, count_spilled_pseudo): Check spilled pseudos only
112         in optimization mode.
113         (alter_reg): Share stack slots only in optimization mode.
114         (finish_spills): Check spilled pseudos only in optimization mode.
115         (emit_input_reload_insns, delete_output_reload): Call
116         mark_allocation_change only in optimization mode.
117         
118 2008-05-01  Vladimir Makarov  <vmakarov@redhat.com>
120         * ira-int.h (IRA_BB_NODE_BY_INDEX, IRA_LOOP_NODE_BY_INDEX): Use
121         gcc_unreachable instead of exit.
122         (struct allocno): New members min, max, and conflict_id.
123         (ALLOCNO_MIN, ALLOCNO_MAX, ALLOCNO_CONFLICT_ID): New macros.
124         (conflict_id_allocno_map):
125         (SET_ALLOCNO_SET_BIT, CLEAR_ALLOCNO_SET_BIT,
126         TEST_ALLOCNO_SET_BIT): Add two new parameters.  Add versions for
127         checking.
128         (allocno_set_iterator): Add new member start_val.
129         (allocno_set_iter_init): Add two new parameters.  Set up
130         start_val.
131         (allocno_set_iter_cond): Use start_val.
132         (FOR_EACH_ALLOCNO_IN_SET): Add two new parameters.
133         (allocno_set_words): Remove.
134         (allocno_conflict_iterator): Add new member base_conflict_id.
135         (allocno_conflict_iter_init): Set up base_conflict_id.  Use
136         ALLOCNO_MIN and ALLOCNO_MAX.
137         (allocno_conflict_iter_cond): Use conflict_id_allocno_map and
138         base_conflict_id.
140         * ira-lives.c: Include sparseset.h.
141         (allocno_set_words, SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE,
142         TEST_ALLOCNO_LIVE, allocnos_live_bitmap): Remove.
143         (allocnos_live): Define as sparseset.
144         (make_regno_born, clear_allocno_live, mark_reg_store,
145         mark_reg_death, process_single_reg_class_operands,
146         process_bb_node_lives, create_allocno_live_ranges): Don't use
147         allocnos_live_bitmap.  Use allocnos_live as sparseset.
149         * Makefile.in (ira-conflicts.o, ira-lives.o): Add sparseset.h
151         * ira-conflicts.c: Add sparseset.h header.
152         (mirror_conflicts): Remove.
153         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, TEST_ALLOCNO_LIVE): Remove.
154         (allocnos_live): Remove.
155         (CONFLICT_P): Remove
156         (CONFLICT_ALLOCNO_P): New.
157         (build_conflict_bit_table): Use sparseset.  Use FOR_EACH_ALLOCNO.
158         Allocate bits for [min..max] range.  Report conflict bit table
159         sizes.  Setup conflicts for both allocnos.
160         (DEF_VEC_P, DEF_VEC_ALLOC_P): Definitions for copy vectors.
161         (remove_conflict_allocno_copies): Use CONFLICT_ALLOCNO_P.  Rename
162         conflict_allocno_copy_varray to conflict_allocno_copy_vec and make
163         it VEC.
164         (build_allocno_conflicts): Use two new arguments for
165         FOR_EACH_ALLOCNO_IN_SET.  Use conflict_id_allocno_map.  Modify
166         calculation of ALLOCNO_CONFLICT_ALLOCNO_ARRAY_SIZE.  Use two new
167         arguments for SET_ALLOCNO_SET_BIT.
168         (ira_build_conflicts): Don't call mirror_conflicts.
170         * ira-color.c (varray.h): Remove.
171         (DEF_VEC_P, DEF_VEC_ALLOC_P): Definitions for
172         allocno vectors.
173         (allocno_stack_varray): Rename to allocno_stack_vec.  Make it a
174         VEC.
175         (assign_hard_reg, push_allocno_to_stack, pop_allocnos_from_stack,
176         ira_color): Use allocno_stack_vec as VEC.
177         
178         * ira-build.c (setup_min_max_allocno_live_range_point,
179         allocno_range_compare_func, sort_conflict_id_allocno_map,
180         setup_min_max_conflict_allocno_ids): New function.
181         (conflict_id_allocno_map, conflict_id_allocno_map_vec): New global
182         variable.
183         (DEF_VEC_P, DEF_VEC_ALLOC_P): Definitions for allocno vectors.
184         (allocno_varray): Rename to allocno_vec and make it a VEC.
185         (initiate_allocnos): Initiate conflict_id_allocno_map_vec.  Use
186         allocno_vec as a VEC.
187         (create_allocno): Initiate min, max, and conflict_id_allocno.
188         Update conflict_id_allocno_map.  Use allocno_vec as a VEC.
189         (allocate_allocno_conflict_bit_vec): Use ALLOCNO_MIN and
190         ALLOCNO_MAX.
191         (add_to_allocno_conflicts): Ditto.
192         (remove_wrong_conflicts): Ditto.  Use conflict_id_allocno_map.
193         (change_allocno_conflicts): Ditto.  Use add_to_allocno_conflicts
194         instead of SET_ALLOCNO_SET_BIT.
195         (finish_allocnos): Free conflict_id_allocno_map_vec.  Use
196         allocno_vec as a VEC.
197         (DEF_VEC_P, DEF_VEC_ALLOC_P): Definitions for copy vectors.
198         (copy_varray): Rename to copy_vec and make it a VEC.
199         (initiate_copies, create_copy, finish_copies): Use copy_vec as
200         a VEC.
201         (ira_build): Call setup_min_max_allocno_live_range_point,
202         sort_conflict_id_allocno_map, and
203         setup_min_max_conflict_allocno_ids.
204         
205         * ira-emit.c (move_t): New typedef.
206         (DEF_VEC_P, DEF_VEC_ALLOC_P): Definitions for move vectors.
207         (move_varray): Rename it to move_vec and make it a VEC.
208         (emit_move_list, add_range_and_copies_from_move_list): Use move_t.
209         (traverse_moves, ira_emit): Ditto.  Use move_vec as a VEC.
210         (modify_move_list): Ditto.  Set up conflict_id, min, and max for
211         the new allocno.
212         
213 2008-04-10  Vladimir Makarov  <vmakarov@redhat.com>
215         * reload1.c (substitute, gen_reload_chain_without_interm_reg_p):
216         New functions.
217         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
219 2008-04-09  Vladimir Makarov  <vmakarov@redhat.com>
221         * ira.c (ira): Move allocate_initial_values after initializing reg
222         info.
224 2008-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
226         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
228 2008-04-08  Vladimir Makarov  <vmakarov@redhat.com>
230         * ira-color.c (assign_hard_reg): Add debug printing.
231         
232         * ira-lives.c (mark_reg_store, mark_reg_death,
233         process_bb_node_lives): Ignore hard regno of class NO_REGS.
235         * ira.c: Fix typos in comments.
237 2008-04-07  Vladimir Makarov  <vmakarov@redhat.com>
239         * cfgloopanal.c (estimate_reg_pressure_cost): Decrease register
240         pressure cost for IRA regional allocation.
242         * ira.c:  Add IRA overview.
244 2008-04-06  Vladimir Makarov  <vmakarov@redhat.com>
246         * ira-int.h (reg_class_intersect, reg_class_union): Add comments.
247         
248         * hard-reg-set.h (reg_class_subclasses): New external definition.
250         * ira.c (setup_reg_class_intersect_union): Define for classes
251         containing no hard registers available for allocation.
253         * regclass.c (reg_class_subclasses): Make it external.
255         * config/sh/sh.h (IRA_COVER_CLASSES): Add TARGET_REGS.
256         
257 2008-04-05  Vladimir Makarov  <vmakarov@redhat.com>
259         * toplev.c (backend_init_target): Move init_ira after
260         init_fake_stack_mems.
262         * config/sh/sh.c (sh_secondary_reload): Remove check of x on null.
264 2008-04-04  Bernd Schmidt  <bernd.schmidt@analog.com>
266         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
268 2008-04-04  Kaz Kojima  <kkojima@gcc.gnu.org>
270         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
271         * config/sh/sh.c (sh_secondary_reload): Return NO_REGS for
272         null rtl.
273         * config/sh/sh.md (movsicc_true+3): Check if emit returns
274         a barrier.
275         * final.c (update_regs_ever_live): Check null rtl.
276         
277 2008-04-04  Vladimir Makarov  <vmakarov@redhat.com>
279         * reload1.c: Remove spaces before [.
280         
281         * ira-conflicts.c, ira-int.h, ira-color.c, ira-lives.c,
282         ira-emit.c, ira-build.c, ira.c, ira.h, ira-costs.c: Ditto.  Use
283         GPL3.
284         
285         * caller-save.c: Ditto.
286         (set_up_bb_rts_numbers, rpost_cmp): Remove.
287         (save_trans_fun, save_con_fun_0, save_con_fun_n): New functions.
288         (struct bb_info): Remove member rts_number.
289         (calculate_local_save_info): Setup empty_save_in_p for abnormal
290         edges.
291         (all_blocks): New variable.
292         (calculate_save_in_out): Use df_simple_dataflow.
293         (make_global_save_analysis): Allocate/setup/free all_blocks.
294                 
295 2008-04-04  Vladimir Makarov  <vmakarov@redhat.com>
297         * ira-costs.c: Use GPL3 in the header.
298         (find_allocno_class_costs): Use all important
299         classes on the 1st iteration.
301 2008-04-03  Vladimir Makarov  <vmakarov@redhat.com>
303         PR rtl-optimization/35817
304         * ira-costs.c (ira-costs.c): Check have_regs_of_mode.
306 2008-04-02  Vladimir Makarov  <vmakarov@redhat.com>
308         * ira-color.c (start_allocno_priorities): Permit zero allocno
309         nref.
311 2008-03-31  Vladimir Makarov  <vmakarov@redhat.com>
313         * ira-color.c (push_allocnos_to_stack): Don't use double.  Use
314         const as the secondary heuristic.
316         * ira-emit.c (set_allocno_reg): Change cap reg too.  Process all
317         loop parents.
318         
319         * doc/invoke.texi (-fira-coalescing): Change to -fira-coalesce.
321         * toplev.h (flag_lower_subreg): Remove.
323         * global.c (build_insn_chain): Remove the prototype.
325         * alias.c (value_addr_p): Change comment.
327         * emit-rtl.c (gen_lowpart_common): Remove CONCATN.
329         * simplify-rtx.c (simplify_subreg): Ditto.
331         * common.opt (flower-subreg): Remove.
333         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Fix last
334         merge.
336 2008-03-29  Vladimir Makarov  <vmakarov@redhat.com>
338         * ira-lives (process_single_reg_class_operands): Fix typo in
339         setting up cover_class.
341 2008-03-28  Vladimir Makarov  <vmakarov@redhat.com>
343         * ira-conflicts.c, global.c, regmove.c, function.c,
344         ira-emit.c, alias.c, reload1.c: Add comments, fix comments.
346         * reload.h: Add 2008 to the Copyright.
347         
348         * caller-save.c: Add comments.
349         (reg_save_code, reg_restore_code, initiate_saved_hard_regs,
350         new_saved_hard_reg, finish_saved_hard_regs,
351         saved_hard_reg_compare_func, calculate_local_save_info,
352         set_up_bb_rts_numbers, rpost_cmp, calculate_save_in_out,
353         calculate_save_here, make_global_save_analysis,
354         print_hard_reg_set_and_mode, print_hard_reg_set, print_save_data,
355         set_hard_reg_saved, add_stored_regs): Add prototypes.
356         
357         * df-scan.c (df_get_call_refs): Use
358         get_call_invalidated_used_regs.
360         * ira-int.h: Add comments.
361         (loop_tree_node): Rename inner to children.
362         (ira_allocate_regset, ira_free_regset): Remove.
363         (reassign_conflict_allocnos): Remove one parameter.
365         * ira-color.c: Add comments.
366         (setup_curr_costs): Rename to update_curr_costs.
367         (allocno_cost_compare_func, print_coalesced_allocno,
368         allocno_reload_assign): Add prototypes.
369         (reassign_conflict_allocnos): Remove one parameter.
371         * ira-lives.c: Add comments.
372         (make_regno_dead, make_regno_born_and_dead,
373         create_start_finish_chains, print_allocno_live_ranges,
374         print_live_ranges): Add protoypes.
376         * ira-build.c: Add comments.
377         (copy_allocno_live_range_list): Make it static.
379         * ira.c: Add comments.
380         (setup_cover_classes): Rename to
381         setup_cover_and_important_classes.
382         (free_register_move_costs, chain_freq_compare, chain_bb_compare,
383         ira): New prototypes.
384         (mode_inner_mode, setup_inner_mode, ira_allocate_regset,
385         ira_free_regset): Remove.
387         * ira.h: Add comments.
388         (SECONDARY_INPUT_RELOAD_CLASS,
389         SECONDARY_OUTPUT_RELOAD_CLASS, HAVE_SECONDARY_RELOADS,
390         MEMORY_MOVE_COST, reg_equiv_memory_loc_varray, reg_equiv_constant,
391         reg_equiv_memory_loc, reg_equiv_address, reg_equiv_mem, ira):
392         Remove.
393         
394         * ira-costs.c: Add comments.
395         (find_allocno_class_costs): Make common class a cover class.
396         
397 2008-03-20  Vladimir Makarov  <vmakarov@redhat.com>
399         * ira-int.h (allocno): Rename conflict_allocno_vec and
400         conflict_allocno_vec_size into conflict_allocno_array and
401         conflict_allocno_array_size.  Remove conflict_allocnos_num.
402         Rename total_conflict_allocnos_num into conflict_allocnos_num New
403         members child_renamed_p and conflict_vec_p.
404         (ALLOCNO_CONFLICT_ALLOCNO_VEC): Rename to
405         ALLOCNO_CONFLICT_ALLOCNO_ARRAY.
406         (ALLOCNO_CONFLICT_ALLOCNO_VEC_SIZE): Rename to
407         ALLOCNO_CONFLICT_ALLOCNO_ARRAY_SIZE.
408         (ALLOCNO_CHILD_RENAMED_P, ALLOCNO_CONFLICT_VEC_P): New macros.
409         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Change to
410         FOR_EACH_ALLOCNO_IN_SET.
411         (allocno_set_iterator): New typedef.
412         (allocno_set_iter_init, allocno_set_iter_cond,
413         allocno_set_iter_next): New functions.
414         (conflict_vector_profitable_p, allocate_allocno_conflict_vec): New
415         prototypes.
416         (allocno_iterator): New typedef.
417         (allocno_iter_init, allocno_iter_cond): New functions.
418         (FOR_EACH_ALLOCNO): New macro.
419         (copy_iterator): New typedef.
420         (copy_iter_init, copy_iter_cond): New functions.
421         (FOR_EACH_COPY): New macro.
422         (allocno_conflict_iterator): New typedef.
423         (allocno_conflict_iter_init, allocno_conflict_iter_cond,
424         allocno_conflict_iter_next): New functions.
425         (conflict_vector_profitable_p, allocate_allocno_conflict_vec): New
426         prototypes.
427         (FOR_EACH_ALLOCNO_CONFLICT): New macro.
429         * ira-conflicts.c (conflicts): Change type.
430         (CONFLICT_P): Use one more index for conflicts.
431         (build_conflict_bit_table): Change allocation and initialization
432         of conflicts.
433         (mirror_conflicts): Rewrite.
434         (remove_conflict_allocno_copies): Use FOR_EACH_ALLOCNO.
435         (build_allocno_conflict_vects): Rename to build_allocno_conflicts.
436         Rewrite it.
437         (print_conflicts): Use FOR_EACH_ALLOCNO, don't print star.
438         (ira_build_conflicts): Use FOR_EACH_ALLOCNO.
440         * ira-color.c (assign_hard_reg): Use FOR_EACH_ALLOCNO_CONFLICT.
441         Use min_full_cost for finding register profitability.
442         (push_allocno_to_stack): Use FOR_EACH_ALLOCNO_CONFLICT.
443         (setup_allocno_left_conflicts_num, coalesced_allocno_conflict_p):
444         Ditto.
445         (move_spill_restore): Use FOR_EACH_ALLOCNO.
446         (reassign_conflict_allocnos): Ditto.  Use
447         FOR_EACH_ALLOCNO_CONFLICT.
448         (sort_regnos_for_alter_reg): Use FOR_EACH_ALLOCNO.
449         (reassign_pseudos): Use FOR_EACH_ALLOCNO_CONFLICT.
451         * ira-lives.c (make_regno_born, clear_allocno_live,
452         mark_reg_death, process_single_reg_class_operands,
453         process_bb_node_lives): Use FOR_EACH_ALLOCNO_IN_SET.
454         (create_start_finish_chains, print_live_ranges): Use
455         FOR_EACH_ALLOCNO.
457         * ira-emit.c (set_allocno_reg): Set up ALLOCNO_CHILD_RENAMED_P.
458         (set_allocno_somewhere_renamed_p): Use
459         ALLOCNO_CONFLICT_ALLOCNO_ARRAY.
460         (ira_emit): Use FOR_EACH_ALLOCNO.
462         * ira.c (setup_reg_renumber, setup_allocno_assignment_flags,
463         calculate_allocation_cost, check_allocation,
464         print_redundant_copies, setup_preferred_alternate_classes): Use
465         FOR_EACH_ALLOCNO.
467         * ira-costs.c (print_costs, setup_allocno_cover_class_and_costs,
468         ira_costs, tune_allocno_costs_and_cover_classes): Use
469         FOR_EACH_ALLOCNO.
471         * ira-build.c (check_allocno_conflict_vec): Remove.
472         (add_to_allocno_conflict_vec): Rename to
473         allocate_allocno_conflicts.  Rewrite.
474         (allocate_allocno_conflict_bit_vec, allocate_allocno_conflicts,
475         remove_wrong_conflicts, change_allocno_conflicts): New functions.
476         (rebuild_regno_allocno_maps): Use FOR_EACH_ALLOCNO.
477         (create_allocno): Initialize ALLOCNO_CHILD_RENAMED_P and
478         ALLOCNO_CONFLICT_VEC_P.
479         (conflict_vector_profitable_p): New function.
480         (compress_allocno_conflict_vec): Use
481         ALLOCNO_CONFLICT_ALLOCNO_ARRAY and don't use
482         ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM.
483         (compress_conflict_vecs): Use FOR_EACH_ALLOCNO.  Check
484         ALLOCNO_CONFLICT_VEC_P.
485         (propagate_info_to_cap): Use FOR_EACH_ALLOCNO_CONFLICT.
486         (finish_allocnos): Use FOR_EACH_ALLOCNO.
487         (finish_copies): Use FOR_EACH_COPY.
488         (check_and_add_conflicts): Change second parameter.  Use
489         add_to_allocno_conflicts instead of add_to_allocno_conflict_vec.
490         (temp_change_bit_vec): New variable.
491         (ira_flattening): Use FOR_EACH_ALLOCNO and FOR_EACH_COPY.  Use
492         remove_wrong_conflicts, change_allocno_conflicts.  Allocate and
493         free temp_change_bit_vec.  Nullify `allocnos' elements for removed
494         allocnos.  Check ALLOCNO_CHILD_RENAMED_P for removing obsolete
495         conflicts.  Don't compress and enumerate allocnos and copies.
496         Nullify `copies' elements for removed copies.  Use
497         add_to_allocno_conflicts instead of add_to_allocno_conflict_vec.
498         (ira_build): Use FOR_EACH_ALLOCNO.
499         
500 2008-03-18  Vladimir Makarov  <vmakarov@redhat.com>
502         * common.opt (fira-algorithm): Fix description
504         * ira-int.h (allocno): Remove best_class.
505         (ALLOCNO_BEST_CLASS): Remove.
506         (strict_class_subset_p): Remove.
507         
508         * ira-color.c (get_coalesced_allocnos_best_class_and_freq): Rename
509         to get_coalesced_allocnos_attributes.  Change prototype.
510         Calculate available regs.
511         (bucket_allocno_compare_func, sort_bucket): New functions.
512         (sorted_allocnos_for_spilling): New variable.
513         (assign_hard_reg): Don't add prohibited_class_mode_regs to
514         conflicting_regs.  Use it in loop for finding the best hard
515         register.
516         (add_allocno_to_ordered_bucket): Use bucket_allocno_compare_func.
517         (push_only_colorable): Call sort_bucket.
518         (push_allocnos_to_stack): Use sorted_allocnos_for_spilling instead
519         of sorted_allocnos.
520         (put_allocno_into_bucket): Use add_allocno_to_bucket instead of
521         add_allocno_to_ordered_bucket.
522         (initiate_ira_assign): Allocate sorted_allocnos_for_spilling.
523         (finish_ira_assign): Free sorted_allocnos_for_spilling.
525         * ira-emit.c (modify_move_list): Remove setting ALLOCNO_BEST_CLASS
526         up.
527         
528         * ira-build.c (create_allocno, create_cap_allocno): Ditto.
529         
530         * ira.c (strict_class_subset_p): Remove.
531         (setup_class_subset_and_memory_move_costs): Remove setting
532         strict_class_subset_p up.
533         
534         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove
535         setting ALLOCNO_BEST_CLASS up.
536         
537 2008-03-12  Vladimir Makarov  <vmakarov@redhat.com>
539         * ira-int.h (allocno_pool, copy_pool, allocno_live_range_pool):
540         Remove external definitions.
541         (free_allocno_updated_costs, allocate_cost_vector,
542         free_cost_vector): New prototypes.
543         (allocate_and_set_costs, allocate_and_copy_costs,
544         allocate_and_set_or_copy_costs): Change prototypes.  Use
545         allocate_cost_vector instead of ira_allocate.
547         * ira-conflicts.c (add_insn_allocno_copies): Pass register class
548         to allocate_and_set_costs.
550         * ira-color.c (update_copy_costs_1): Pass register class to
551         allocate_and_set_or_copy_costs.
552         (assign_hard_reg): Pass register class to allocate_and_copy_costs.
553         Free updated costs.
554         (pop_allocnos_from_stack, color_allocnos): Check updated costs.
555         (color_pass): Pass register class to allocate_and_set_costs.  Free
556         updated costs.
557         (move_spill_restore): Check reg equivalences.
558         (setup_curr_costs): Pass register class to
559         allocate_and_set_or_copy_costs.
560         (reassign_conflict_allocnos, allocno_reload_assign): Check updated
561         costs.
562         (calculate_spill_cost): Use REG_N_REFS after checking regno.
564         * ira-lives.c (process_single_reg_class_operands): Pass register
565         class to allocate_and_set_costs.
567         * ira-build.c (allocno_pool, allocno_live_range_pool): New
568         variables.
569         (initiate_allocnos): Initiate the pools.
570         (free_allocno_updated_costs): New function.
571         (finish_allocno): Use free_cost_vector.  Free the pools.
572         (copy_pool): New variable.
573         (initiate_copies): Initiate the pool.
574         (cost_vector_pool): New variable.
575         (initiate_cost_vectors, allocate_cost_vector, free_cost_vector,
576         finish_cost_vectors): New functions.
577         (ira_flattening): Call free_allocno_updated_costs.  Check updated
578         costs.
579         (ira_build): Call initiate_cost_vectors.
580         (ira_destroy): Call finish_cost_vectors.
582         * ira.c (find_reg_equiv_invariant_const): Check read only memory.
583         (setup_reg_renumber, setup_allocno_assignment_flags): Call
584         free_allocno_updated_costs.
585         (ira): Remove initializations and freeing allocno_pool, copy_pool,
586         and allocno_live_range_pool.  Call generate_setjmp_warnings.
588         * ira-costs.c (process_bb_node_for_hard_reg_moves,
589         tune_allocno_costs_and_cover_classes): Pass register class to
590         allocate_and_set_costs.
592         * caller-save.c (save_slots_num, save_slots): New variables.
593         (init_save_areas): Initiate save_slots_num.
594         (setup_save_areas): Use stack slots from the previous reload
595         iteration independetly what slot was used on the previous pass.
596         
597 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
599         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
600         Remove commutativity hint.
602 2008-03-06  Vladimir Makarov  <vmakarov@redhat.com>
604         * ira.h (sort_regnos_for_alter_reg): Add parameter.
605         
606         * reload1.c (reload): Pass additional argument to
607         sort_regnos_for_alter_reg.
609         * ira-int.h (reg_equiv_len): New global variable.
611         * ira-emit.c (change_loop): Add assertion.
613         * ira.c (reg_equiv_len): New global variable.
614         (setup_reg_renumber): Use reg_equiv_len in assertion.
615         (ira): Initialize reg_equiv_len and spilled_reg_stack_slots.
617         * ira-color.c (coalesced_pseudo_reg_compare): Rename to
618         coalesced_pseudo_reg_freq_compare.
619         (coalesced_pseudo_reg_slot_compare,
620         setup_coalesced_allocno_costs_and_nums,
621         collect_spilled_coalesced_allocnos, coalesce_spill_slots): New
622         functions.
623         (coalesced_allocno_conflict_p): Add new parameter.  Use live
624         ranges to find conflicts for the reload.
625         (coalesce_allocnos): Don't coalesce allocnos with equivalences.
626         (color_pass): Check reg_quiv_len.
627         (regno_max_ref_width): New variable.
628         (sort_regnos_for_alter_reg): Add secondary coalescing spilled
629         allocnos.  Assign stack slot numbers.  Use costs instead of
630         frequencies.
631         (mark_allocation_change): Set up allocno hard regno.
632         (allocno_reload_assign): Ditto.
633         (reuse_stack_slot): Use stack slot numbers.
634         (mark_new_stack_slot): Set up allocno slot number.
636         * doc/passes.texi: Add more info about IRA.
637         
638 2008-03-03  Vladimir Makarov  <vmakarov@redhat.com>
640         * ira-conflicts.c (allocno_conflict_p): Rename to
641         allocno_live_ranges_intersect_p.
642         (allocno_reg_conflict_p): Rename to
643         pseudo_live_ranges_intersect_p.
645         * ira-lives.c (high_pressure_start_point): New variable.
646         (update_allocno_pressure_excess_length): New function.
647         (make_regno_dead): Call it.
648         (set_allocno_live): Udpate high_pressure_start_point.
649         (clear_allocno_live, mark_reg_store, mark_reg_death): Ditto.
650         (process_bb_node_lives): Initialize high_pressure_start_point.
651         Consider only allocatable hard regs for liveness.
652         
653         * ira-costs.c (record_reg_classes): Multiply cost by frequency.
654         Use half frequency when memory is allowed.  Remove check for
655         prefferred small register classes of pseudo-registers.
656         (scan_one_insn): Continue processing operands for moves of
657         pseudo-registers with equivalence.  Don't multiply cost by
658         frequency.
659         (init_ira_costs): Use bigger initial cost value.
660         
661         * ira-int.h: Ditto.
662         (allocno): New members somewhere_renamed_p and
663         excess_pressure_points_num.
664         (ALLOCNO_SOMEWHERE_RENAMED_P, ALLOCNO_EXCESS_PRESSURE_POINTS_NUM):
665         New macros.
666         (allocno_reg_conflict_p): Rename to
667         pseudo_live_ranges_intersect_p.
668         (allocno_conflict_p): Rename to allocno_live_ranges_intersect_p.
670         * ira.h (sort_regnos_for_alter_reg, better_spill_reload_regno_p):
671         New function prototypes.
672         
673         * ira-color.c (merge_allocnos): Remove mode check.
674         (coalesce_allocnos): Add parameter and modify to use it for
675         coalescing spilled allocnos.
676         (color_allocnos): Pass parameter to coalesce_allocnos.
677         (regno_coalesced_allocno_freq, regno_coalesced_allocno_num): New
678         variables.
679         (coalesced_pseudo_reg_compare, calculate_spill_cost,
680         sort_regnos_for_alter_reg, better_spill_reload_regno_p): New
681         functions.
682         (mark_allocation_change, allocno_reload_assign, reassign_pseudos
683         ): Use ALLOCNO_MEMORY_COST instead of ALLOCNO_UPDATED_MEMORY_COST.
684         (reuse_stack_slot): Use pseudo_live_ranges_intersect_p instead of
685         allocno_reg_conflict_p.
686         
687         * ira-emit.c (set_allocno_somewhere_renamed_p): New function.
688         (renamed_regno_bitmap): New static variable.
689         (change_loop): Check register pressure for creating new pseudo.
690         Set up ALLOCNO_SOMEWHERE_RENAMED_P and renamed_regno_bitmap.
691         (ira_emit): Allocate/deallocate renamed_regno_bitmap.
692         Call set_allocno_somewhere_renamed_p.
694         * ira-build.c (ira_loops): Move to ira.c.
695         (create_allocno): Initialize ALLOCNO_SOMEWHERE_RENAMED_P and
696         ALLOCNO_MEMORY_COST.
697         (create_cap_allocno): Set up ALLOCNO_MEMORY_COST.
698         (check_and_add_conflicts): Use allocno_live_ranges_intersect_p
699         instead of allocno_conflict_p.
700         (ira_flattening): Check conflicts of allocno renamed somewhere
701         locally.  Update ALLOCNO_EXCESS_PRESSURE_POINTS_NUM.
702         (ira_build): Move code for finding loops to ira.c.
703         (ira_destroy): Move code for freeing loops to ira.c.
705         * ira.c (setup_reg_class_intersect_union): Fix calculation of
706         reg_class_union.
707         (calculate_allocation_cost): Use ALLOCNO_MEMORY_COST instead of
708         ALLOCNO_UPDATED_MEMORY_COST.
709         (ira_loops): Move from ira-build.c.
710         (ira): Move code for finding and freeing loops from ira-build.c.
711         Don't use regional RA when there are too many loops.
713         * reload1.c (pseudo_reg_compare): Remove.
714         (reload): Use sort_regnos_for_alter_reg.
715         (hard_regno_to_pseudo_regno): New variable.
716         (count_pseudo): Set up hard_regno_to_pseudo_regno.
717         (order_regs_for_reload): Initialize hard_regno_to_pseudo_regno.
718         (count_spilled_pseudo): Update hard_regno_to_pseudo_regno.
719         (find_reg): Use better_spill_reload_regno_p.  Check
720         hard_regno_to_pseudo_regno.
722         * cfgloopanal.c: Include params.h.
723         (estimate_reg_pressure_cost): Check number of loops.
725         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
727         * params.h (IRA_MAX_LOOPS_NUM): New macro.
729         * Makefile.in (cfgloopanal.o): Add PARAMS_H.
730         
731         * doc/invoke.texi (ira-max-loops-num): Describe.
732         
733 2008-02-20  Vladimir Makarov  <vmakarov@redhat.com>
735         * ira.h, ira-emit.c: Add year 2008 to the copyright.
736         
737         * ira-int.h: Ditto.
738         (struct copy): Rename move_insn to insn.
739         (initiate_ira_assign, finish_ira_assign, debug_allocno_copies):
740         New function prototypes.
741         
742         * ira-build.c: Add year 2008 to the copyright.  Rename member
743         move_insn of the copies to insn.
744         (find_allocno_copy): New function.
745         (propagate_info_to_cap, add_allocno_copy): Use it.
746         (print_allocno_copies, debug_allocno_copies): New functions.
747         
748         * ira-conflicts.c: Add year 2008 to the copyright.  Rename member
749         move_insn of the copies to insn.
751         * ira.c: Ditto.
752         (setup_reg_class_intersect_union): Fix reg_class_union for cover
753         classes.
754         (ira): Call initiate_ira_assign and finish_ira_assign.  Remove
755         setting reload_completed up.
756         
757         * ira-costs.c: Add year 2008 to the copyright.
758         (ira_costs): Check modes of registers.
760         * ira-lives.c: Add year 2008 to the copyright.
761         (mark_reg_store, mark_reg_death, process_bb_node_lives): Don't use
762         REG_N_REFS.
763         (process_single_reg_class_operands): Check that the hard reg
764         belongs to the cover class.
766         * ira-color.c: Add year 2008 to the copyright.  Rename member
767         move_insn of the copies to insn.
768         (initiate_cost_update, finish_cost_update, update_copy_costs_1):
769         New functions.
770         (allocno_update_cost_check, update_cost_check): New static
771         variables.
772         (update_copy_costs): Increment update_cost_check.  Call
773         update_copy_costs_1.
774         (coalesce_allocnos): Don't coalesce already assigned allocnos or
775         copies with null insn.
776         (color_pass): Check loop tree node of the subloop allocno.
777         (finish_allocno_priorities): Remove.
778         (do_coloring): Move allocation/deallocation of
779         consideration_allocno_bitmap into initiate_cost_update and
780         finish_cost_update.
781         (reassign_conflict_allocnos): Remove allocation/deallocation of
782         sorted_allocnos.  Remove call of finish_allocno_priorities.
783         (reassign_pseudos): Remove allocation/deallocation of
784         consideration_allocno_bitmap and sorted_allocnos.  Remove call of
785         finish_allocno_priorities.
786         (initiate_ira_assign, finish_ira_assign): New fucntions.
787         (ira_color): Remove allocation/deallocation of sorted_allocnos.
788         Call initiate_ira_assign and finish_ira_assign.
789         
790         * postreload.c (gate_handle_postreload): Don't do post reload
791         optimizations unless the reload is completed.
792         
793         * cfgloopanal.c (estimate_reg_pressure_cost): Return zero if we
794         use regional RA.
796         * recog.c (peep2_free_reg_search_ofs): New static variable.
797         (peep2_find_free_register): Remove search_ofs.  Use
798         peep2_free_reg_search_ofs instead of it.
799         (peephole2_optimize): Reset peep2_free_reg_search_ofs.
800         
801 2008-01-10  Vladimir Makarov  <vmakarov@redhat.com>
803         * reload1.c (compute_use_by_pseudos): Permits spilled registers in
804         FROM.
805         (temp_pseudo_reg_arr): New variable.
806         (reload): Use instead temp_pseudo_reg_arr of pseudo_regs.  Move
807         freeing to the function end.  Don't clear spilled_pseudos for IRA.
808         Restore original insn chain for IRA.
809         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
810         (count_pseudo, count_spilled_pseudo): Check spilled pseudos.
811         (alter_reg): Set up spilled_pseudos.
812         (finish_spills): Set up pseudo_previous_regs only for spilled
813         pseudos.  Call reassign_pseudos once for all spilled pseudos,
814         pass more arguments.  Don't clear live_throughout and dead_or_set
815         for spilled pseudos.
817 2008-01-10  Vladimir Makarov  <vmakarov@redhat.com>
819         * reload1.c (compute_use_by_pseudos): Permits spilled registers in
820         FROM.
821         (temp_pseudo_reg_arr): New variable.
822         (reload): Use instead temp_pseudo_reg_arr of pseudo_regs.  Move
823         freeing to the function end.  Don't clear spilled_pseudos for IRA.
824         Restore original insn chain for IRA.
825         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
826         (count_pseudo, count_spilled_pseudo): Check spilled pseudos.
827         (alter_reg): Set up spilled_pseudos.
828         (finish_spills): Set up pseudo_previous_regs only for spilled
829         pseudos.  Call reassign_pseudos once for all spilled pseudos,
830         pass more arguments.  Don't clear live_throughout and dead_or_set
831         for spilled pseudos.
833         * global.c (reg_becomes_live, build_insn_chain): Don't ignore
834         spilled pseudos for IRA.
835         
836         * caller-save.c (calculate_local_save_info,
837         save_call_clobbered_regs): Ignore spilled pseudos for IRA.
838         
839         * toplev.c (backend_init_target): Call init_ira.
840         (backend_init): Move call of init_ira_once before
841         backend_init_target.
842         
843         * ira.h (init_ira, sort_insn_chain, mark_memory_move_deletion):
844         New function prototypes.
845         (retry_ira_color): Rename to reassign_pseudos.  Change
846         signature.
848         * ira-int.h (allocno): New member dont_reassign_p.
849         (ALLOCNO_DONT_REASSIGN_P): New macro.
850         (memory_move_cost): Change element type.
851         (register_move_cost): Change type.
852         (register_may_move_in_cost, register_may_move_out_cost,
853         reg_class_intersect): New arrays.
854         (important_class_nums): Fix element type.
855         (hard_reg_not_in_set_p): Make it static inline.
856         (init_register_move_cost, init_ira_costs): New function
857         prototypes.
858         (allocno_conflict_index): Remove.
859         (allocate_and_set_costs, allocate_and_copy_costs,
860         allocate_and_set_or_copy_costs): New static inline functions.
861         
862         * ira-build.c (compress_allocno_conflict_vec,
863         compress_conflict_vecs): New functions.
864         (allocno_conflict_index): Remove.
865         (allocno_conflict_check, curr_allocno_conflict_check_tick): New
866         variables.
867         (propagate_info_to_cap): Use allocate_and_copy_costs.
868         (check_and_add_conflicts): Don't call allocno_conflict_index.
869         (ira_flattening): Add some assertions.  Check that cost vectors
870         have been allocated.  Don't call allocno_conflict_index.  Call
871         compress_conflict_vecs.
873         * ira.c (memory_move_cost, register_move_cost): Change types.
874         (register_may_move_in_cost, register_may_move_out_cost,
875         strict_class_subset_p): New variables.
876         (setup_class_subset_and_move_costs): Rename to
877         setup_class_subset_and_memory_move_costs.  Remove
878         register_move_cost setup.  Don't consider no_unit_alloc_regs.  Add
879         strict_class_subset_p setup.
880         (setup_reg_class_intersect): Rename to
881         setup_reg_class_intersect_union.  Don't consider
882         no_unit_alloc_regs.  Add reg_class_union setup.
883         (hard_reg_not_in_set_p): Move to ira-int.h.
884         (setup_reg_subclasses): Use no_unit_alloc_regs instead of
885         fixed_reg_set.  Don't consider no_unit_alloc_regs.
886         (important_class_nums): Fix element type.
887         (setup_cover_classes): Use no_unit_alloc_regs instead of
888         fixed_reg_set.  Don't consider no_unit_alloc_regs.
889         (setup_class_translate): Ditto.
890         (reg_class_union): New variable.
891         (init_register_move_cost, free_register_move_costs): New
892         functions.
893         (init_ira_once): Initialize register_move_cost,
894         register_may_move_in_cost, register_may_move_out_cost.  Move some
895         code to init_ira.
896         (init_ira): New function.  Move some code from init_ira_once.
897         Call free_register_move_costs and init_ira_costs.
898         (calculate_allocation_cost): Check allocation of allocno hard reg
899         cost vector.
900         (basic_block_order_nums): New variable.
901         (chain_freq_compare, chain_bb_compare, sort_insn_chain): New
902         functions.
903         (ira): Call sort_insn_chain.
905         * ira-color.c (allocno_coalesced_p): New variable.
906         (update_copy_costs): Use allocate_and_set_or_copy_costs.
907         (assign_hard_reg): Clear and use
908         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
909         Use allocate_and_copy_costs.  Use allocno cover class cost if the
910         hard register cost vector is not allocated.
911         (get_coalesced_allocnos_best_class_and_freq): Use
912         reg_class_intersect instead of reg_class_subintersect.
913         (add_allocno_to_ordered_bucket): Use strict_class_subset_p.
914         (push_allocno_to_stack): Clear and use
915         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
916         (setup_allocno_left_conflicts_num): Don't setup
917         ALLOCNO_UPDATED_HARD_REG_COSTS and
918         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.  Clear and use
919         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
920         (put_allocno_into_bucket): Don't setup
921         ALLOCNO_UPDATED_HARD_REG_COSTS and
922         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
923         (coalesced_allocno_conflict_p): Clear and use
924         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
925         (coalesce_allocnos): Setup allocno_coalesced_p.
926         (color_allocnos): Add processing reg class NO_REGS.
927         (color_pass): Propagate assignment of spilled allocno not
928         mentioned in the subregion for the mixed algorithm.  Use
929         allocate_and_set_costs.
930         (move_spill_restore, mark_allocation_change): Check unallocated
931         hard reg cost vectors.
932         (setup_curr_costs): Don't setup ALLOCNO_UPDATED_HARD_REG_COSTS and
933         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.  Use
934         allocate_and_set_or_copy_costs.
935         (mark_memory_move_deletion, allocno_reload_assign,
936         pseudo_reg_compare, reassign_pseudos): New functions.
937         (retry_ira_color): Remove.
938         
939         * ira-conflicts.c (add_insn_allocno_copies): Use
940         allocate_and_set_costs.
941         (allocno_conflict_p): Simplify the code.
942         
943         * ira-costs.c: Rename reg_class_subunion to reg_class_union
944         everywhere.
945         (cost_classes, cost_classes_num, cost_class_nums,
946         max_struct_costs_size): New variables.
947         (copy_cost): Use init_register_move_cost instead of
948         init_move_cost.
949         (record_reg_classes): Ditto.  Use cost_classes and
950         cost_classes_num instead of important_classes and
951         important_classes_num.  Use register_may_move_{in,out}_cost
952         instead of may_move_{in,out}_cost.  Check reg class intersection
953         for alt_cost.
954         (record_address_regs): Use init_register_move_cost instead of
955         init_move_cost.  Use cost_classes and cost_classes_num instead of
956         important_classes and important_classes_num.  Use
957         register_may_move_in_cost instead of may_move_in_cost.
958         (scan_one_insn): Use cost_classes_num instead of
959         important_classes_num.
960         (print_costs): Use cost_classes and cost_classes_num instead of
961         important_classes and important_classes_num.
962         (find_allocno_class_costs): Initialize cost_classes and
963         cost_class_nums.  Use cost_classes and cost_classes_num instead of
964         important_classes and important_classes_num.
965         (process_bb_node_for_hard_reg_moves): Use allocate_and_set_costs.
966         (setup_allocno_cover_class_and_costs): Use cost_classes and
967         cost_classes_num instead of important_classes and
968         important_classes_num.
969         (init_ira_costs_once): Move some code to init_ira_costs.  Initiate
970         cost_classes.
971         (free_ira_costs: New function.  Move some code from
972         finish_ira_costs_once.
973         (init_ira_costs): New function.  Move some code from
974         init_ira_costs_once.  Use max_struct_costs_size instead of
975         struct_costs_size.  Call free_ira_costs.  Allocate cost_classes.
976         (finish_ira_costs_once): Move some code to finish_ira_costs.  Call
977         free_ira_costs.
978         (ira_costs): Use max_struct_costs_size instead of
979         struct_costs_size.  Use allocate_and_set_costs.
981         * ira-emit.c (modify_move_list): Remove allocation of hard reg
982         cost vectors.
984         * ira-lives.c (process_single_reg_class_operands): Add new
985         parameter freq.  Calculate costs basing on the frequency.
986         (process_bb_node_lives): Pass the frequency to
987         process_single_reg_class_operands.
988         
989 2007-12-17  Vladimir Makarov  <vmakarov@redhat.com>
991         * doc/invoke.texi (fira-algoirthm): Remove prioirity coloring.
992         Make mixed the default.
994         * flags.h (ira_algorithm): Remove IRA_ALGORITHM_PRIORITY.
996         * ira-color.c (priority_coloring):  Remove.
997         (do_coloring): Don't call priority_coloring.
999         * opts.c (common_handle_option): Remove priority coloring option.
1001         * toplev.c (flag_ira_algorithm): Assign IRA_ALGORITHM_MIXED.
1002         
1003         * ira-build.c (check_and_add_conflicts, ira_flattening): Increase
1004         threshold for internal_flag_ira_verbose.
1005         
1006 2007-12-17  Vladimir Makarov  <vmakarov@redhat.com>
1008         * common.opt (fira-assign-after-call-split, fira-biased-coloring,
1009         fira-split-around-calls): Remove.
1010         (fdump-simple-rtl, fira-verbose): New options.
1011         (fira, fira-coalesce): Initiate by 0.
1013         * opts.c (common_handle_option):  Process flag_ira_verbose.
1015         * flags.h (flag_ira_verbose): New external definition.
1017         * toplev.h (flag_ira_assign_after_call_split,
1018         flag_ira_biased_coloring, flag_ira_split_around_calls):  Remove.
1020         * toplev.c (flag_ira_verbose): New external declaration.
1021         (finalize): Call finish_ira_once.
1023         * print-rtl.c (flag_simple):  Rename to flag_dump_simple_rtl.
1025         * doc/invoke.texi (-fno-ira-assign-after-call-split,
1026         -fira-biased-coloring, -fno-ira-split-around-calls):  Remove.
1027         (-fdump-simple-rtl, -fira-verbose): New options.
1029         * caller-save.c (insert_restore, insert_save): Use
1030         adjust_address_nv instead of adjust_address.  Check the mode by
1031         reg_save_code.
1033         * ira-call.c: Remove file.
1035         * ira-lives.c: New file.
1037         * Makefile.in (ira-live.o): Add
1038         (ira-call.o): Remove.
1039         (IRA_INT_H): Add alloc-pool.h.
1041         * ira.h (finish_ira_once): New external definition.
1043         * ira-int.h (internal_flag_ira_verbose, alloc_pool allocno_pool,
1044         copy_pool, allocno_live_range_pool, ira_loop_tree_height,
1045         max_point, start_point_ranges, finish_point_ranges,
1046         prohibited_mode_move_regs, important_class_nums,
1047         ira_curr_regno_allocno_map, allocno_set_words): New external
1048         definitions.
1049         (loop_tree_node_t, allocno_live_range_t): New typedefs.  Use them
1050         everywhere.
1051         (ira_loop_tree_node): Rename to loop_tree_node.
1052         (loop_tree_node): New member level.
1053         (allocno_live_range): New structure.
1054         (allocno): New members nrefs, live_ranges,
1055         total_conflict_hard_regs, conflict_allocnos_num,
1056         total_conflict_allocnos_num, mem_optimized_dest,
1057         mem_optimized_dest_p, total_no_stack_reg_p.  Remove members
1058         conflict_allocno_vec_active_size and original_memory_cost.  Rename
1059         member curr_hard_reg_costs to updated_hard_reg_costs.
1060         (ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
1061         ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_CONFLICT_ALLOCNOS_NUM,
1062         ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM, ALLOCNO_NREFS,
1063         ALLOCNO_MEM_OPTIMIZED_DEST, ALLOCNO_MEM_OPTIMIZED_DEST_P,
1064         ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_LIVE_RANGES): New access
1065         macros.
1066         (ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
1067         ALLOCNO_ORIGINAL_MEMORY_COST): Remove.
1068         (ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS): Rename to
1069         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
1070         (allocno_copy): New member loop_tree_node.
1071         (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move from
1072         ira-conflicts.c.
1073         (SET_ALLOCNO_SET_BIT, CLEAR_ALLOCNO_SET_BIT,
1074         TEST_ALLOCNO_SET_BIT): New macros.
1075         (ira_reallocate, allocno_conflict_index, add_allocno_conflict,
1076         create_allocno_live_range, finish_allocno_live_range,
1077         add_allocno_copy_to_list, swap_allocno_copy_ends_if_necessary,
1078         remove_allocno_copy_from_list, add_allocno_copy, ira_flattening,
1079         finish_ira_costs_once, rebuild_start_finish_chains,
1080         print_live_range_list, debug_live_range_list,
1081         debug_allocno_live_ranges, debug_live_ranges,
1082         create_allocno_live_ranges, finish_allocno_live_ranges,
1083         allocno_conflict_p, loop_edge_freq): New external function
1084         definitions.
1085         (hard_reg_in_set_p, original_regno_call_crossed_p,
1086         ira_max_regno_before, ira_max_regno_call_before): Remove.
1087         (traverse_loop_tree): Add new parameter type.
1088         (create_copy): Ditto.
1089         (debug_conflicts, ira_emit, add_allocno_copy): Add parameter.
1090         (debug_ira_call_data, split_around_calls, get_around_calls_regno):
1091         Remove.
1092         
1093         * ira.c (setup_prohibited_mode_move_regs): New function.
1094         (internal_flag_ira_verbose, allocno_pool, copy_pool,
1095         allocno_live_range_pool, important_class_nums): New external
1096         variables.
1097         (IRA_NO_OBSTACK): Uncomment it.
1098         (ira_reallocate): New function.
1099         (setup_cover_classes): Set up important_class_nums.
1100         (finish_ira_once): New function.
1101         (prohibited_mode_move_regs,
1102         prohibited_mode_move_regs_initialized_p): New global variables.
1103         (setup_prohibited_mode_move_regs): New function.
1104         (setup_reg_renumber): Remove parameters.
1105         (setup_allocno_assignment_from_reg_renumber): Rename to
1106         setup_allocno_assignment_flags.  Set up ALLOCNO_ASSIGNED_P.
1107         (calculate_allocation_cost): Use ALLOCNO_UPDATED_MEMORY_COST.
1108         (ira_max_regno_before, ira_max_regno_call_before): Remove.
1109         (ira): Set up internal_flag_ira_verbose.  Call
1110         setup_prohibited_mode_move_regs.  Create and destroy allocno,
1111         copy, and live range pools.  Remove original_regno_call_crossed_p.
1112         Report major passes.  Use argument for ira_emit.  Call
1113         ira_flattening and df_analyze.  Remove live range splitting around
1114         calls.
1115         
1116         * ira-build.c (setup_loop_tree_level, rebuild_regno_allocno_maps,
1117         expand_calls, compress_calls, allocno_conflict_index,
1118         add_to_allocno_conflict_vec, propagate_info_to_cap,
1119         copy_allocno_live_range, copy_allocno_live_range_list,
1120         finish_allocno, finish_copy,
1121         propagate_info_to_loop_tree_node_caps, merge_ranges,
1122         common_loop_tree_node_dominator, check_and_add_conflicts,
1123         add_conflict_with_underlying_allocnos, ira_flattening): New
1124         functions.
1125         (check_coalesced_allocnos): Remove.
1126         (ira_loop_tree_height): New external variable.
1127         (form_loop_tree): Call setup_loop_tree_level.
1128         (initiate_calls): Allocate a bit more.  (create_allocno): Use
1129         pool_alloc.  Set up ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
1130         ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_NREFS,
1131         ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_MEM_OPTIMIZED_DEST,
1132         ALLOCNO_MEM_OPTIMIZED_DEST_P, ALLOCNO_UPDATED_MEMORY_COST, and
1133         ALLOCNO_LIVE_RANGES.  Rename
1134         ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
1135         ALLOCNO_CURR_HARD_REG_COSTS, and
1136         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS to
1137         ALLOCNO_CONFLICT_ALLOCNOS_NUM, ALLOCNO_UPDATED_HARD_REG_COSTS, and
1138         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
1139         (add_allocno_conflict): Make it external.  Use
1140         add_to_allocno_conflict_vec.
1141         (create_cap_allocno): Move part of code to propagate_info_to_cap.
1142         (finish_allocnos): Use finish_allocno.
1143         (add_allocno_copy_to_list, remove_allocno_copy_from_list,
1144         swap_allocno_copy_ends_if_necessary, add_allocno_copy): Move from
1145         ira-conflicts.c.  Make them external.
1146         (create_copy): Use pool_alloc.  Add parameter loop_tree_node.
1147         (finish_copies): Use finish_copy.
1148         (ira_curr_regno_allocno_map): New external variable.
1149         (traverse_loop_tree): Add parameter bb_first_p.
1150         (create_insn_allocnos): Update ALLOCNO_NREFS.
1151         (create_loop_tree_node_allocnos): Traverse loop tree nodes with
1152         BBs first.  Update ALLOCNO_NREFS.
1153         (create_loop_tree_node_caps): Move part of code to
1154         propagate_info_to_loop_tree_node_cap.
1155         (regno_top_level_allocno_map): New global variable.
1156         (ira_build): Create caps before build conflicts.  Call
1157         create_allocno_live_ranges.  Propagate info to caps.  Report
1158         statistics.
1159         (ira_destroy): Call finish_allocno_live_ranges.
1161         * ira-conflicts.c (set_allocno_live, clear_allocno_live,
1162         record_regno_conflict, mark_reg_store, mark_reg_clobber,
1163         mark_reg_conflicts, mark_reg_death): Remove.
1164         (add_insn_allocno_copies, add_copies): New functions.
1165         (add_allocno_copy_to_list, remove_allocno_copy_from_list,
1166         swap_allocno_copy_ends_if_necessary, add_allocno_copy): Remove.
1167         (add_allocno_copies): Rename to add_insn_allocno_copies.  Use
1168         ira_curr_regno_allocno_map and add_insn_allocno_copies.
1169         (single_reg_class, single_reg_operand_class,
1170         process_single_reg_class_operands, process_bb_node_for_conflicts):
1171         Remove.
1172         (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move to
1173         ira-int.h.
1174         (allocnos_live_bitmap, SET_ALLOCNO_CONFLICT_ROW,
1175         CLEAR_ALLOCNO_CONFLICT_ROW, TEST_ALLOCNO_CONFLICT_ROW): Remove.
1176         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, TEST_ALLOCNO_LIVE):
1177         Use {SET, CLEAR, TEST}_ALLOCNO_SET_BIT.
1178         (allocno_row_words, hard_regs_live, curr_bb_node,
1179         curr_regno_allocno_map, curr_reg_pressure): Remove.
1180         (CONFLICTP): Rename to CONFLICT_P.
1181         (regs_set): Remove.
1182         (propagate_allocno_info): Use ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
1183         Set up ALLOCNO_CALLS_CROSSED_START.
1184         (allocno_conflict_p): New function.
1185         (allocno_reg_conflict_p): Use allocno_conflict_p.
1186         (build_allocno_conflict_vects): Divide original and propagated
1187         conflicts.
1188         (print_hard_reg_set): New function.
1189         (print_conflicts): Use print_hard_reg_set.  Set up mark for the
1190         start of propagated conflicts.
1191         (debug_conflicts): Add parameter.
1192         (ira_build_conflicts): Call add_copies.  Set up
1193         ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
1195         * ira-costs.c (struct costs): Make cost allocated dynamically.
1196         (struct_costs_size, temp_cots, op_costs, this_op_costs): New
1197         variables.
1198         (costs): Rename to total_costs.
1199         (COSTS_OF_ALLOCNO): New macro.
1200         (curr_regno_allocno_map): Remove.  Use ira_curr_regno_allocno_map
1201         instead.
1202         (record_reg_classes): Check NO_REGS in allocno_pref.
1203         (record_address_regs): Use COSTS_OF_ALLOCNO.
1204         (scan_one_insn): Ditto.
1205         (print_costs): Ditto.
1206         (find_allocno_class_costs): Ditto.  Pass additional argument to
1207         traverse_loop_tree.  Set up NO_REGS if memory is cheaper.
1208         (setup_allocno_cover_class_and_costs): Use
1209         ALLOCNO_UPDATED_MEMORY_COST instead of
1210         ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
1211         instead of ALLOCNO_CURR_HARD_REG_COSTS, and
1212         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
1213         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS.  Pass additional argument to
1214         traverse_loop_tree.
1215         (init_ira_costs_once): Allocate init_cost, op_costs,
1216         this_op_costs, temp_costs.
1217         (finish_ira_costs_once): New function.
1218         
1219         * ira-color.c: Use ALLOCNO_UPDATED_MEMORY_COST instead of
1220         ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
1221         instead of ALLOCNO_CURR_HARD_REG_COSTS, and
1222         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
1223         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS.  Use
1224         ALLOCNO_TOTAL_CONFLICT_HARD_REGS instead of
1225         ALLOCNO_CONFLICT_HARD_REGS.
1226         (processed_allocno_bitmap): Rename into
1227         processed_coalesced_allocno_bitmap.
1228         (allocno_cost_compare_func): Use ALLOCNO_UPDATED_MEMORY_COST
1229         instead of ALLOCNO_MEMORY_COST.
1230         (assign_hard_reg): Remove biased coloring.
1231         (add_allocno_to_ordered_bucket): Check cover class first.
1232         (loop_edge_freq): Make it external.
1233         (setup_allocno_left_conflicts_num): Check that conflicting
1234         allocnos of one class.
1235         (allocno_conflict_p): Rename to coalesced_allocno_conflict_p.
1236         (color_pass): Check pressure in the loop (not in subloops) for
1237         mixed algorithm.
1238         (allocno_priorities): New variable.
1239         (start_allocno_priorities, finish_allocno_priorities): New
1240         functions.
1241         (allocno_priority_compare_func): Use allocno_priorities.
1242         (priority_coloring): Call start_allocno_priorities and
1243         finish_allocno_priorities.
1244         (do_coloring): Pass additional argument to traverse_loop_tree.
1245         
1246         * ira-emit.c (struct move): Add member insn.
1247         (create_move): Initialize member insn.
1248         (generate_edge_moves): Set up ALLOCNO_MEM_OPTIMIZED_DEST and
1249         ALLOCNO_MEM_OPTIMIZED_DEST_P.
1250         (change_loop): Check prohibited_mode_move_regs.
1251         (curr_jump_map, can_move_through_p): Remove.
1252         (unify_moves): Don't move through jump.
1253         (modify_move_list): Set up attributes for new allocno used for
1254         breaking dependency loops.
1255         (emit_move_list): Set up insn codes.
1256         (update_costs, add_range_and_copies_from_move_list,
1257         add_ranges_and_copies): New functions.
1258         (ira_emit): Add a parameter.  Call add_ranges_and_copies.
1259         
1260 2007-10-09  Vladimir Makarov  <vmakarov@redhat.com>
1262         * toplev.h (flag_ira_coalesce): New external variable.
1264         * ira-int.h (allocno): New members first_coalesced_allocno,
1265         next_coalesced_allocno.
1266         (ALLOCNO_FIRST_COALESCED_ALLOCNO, ALLOCNO_NEXT_COALESCED_ALLOCNO):
1267         New macros.
1268         (reg_class_subintersect): New external variable.
1270         * ira-color.c (processed_allocno_bitmap): New variable.
1271         (allocno_cost_compare_func, print_coalesced_allocno): New
1272         functions.
1273         (assign_hard_reg): Process coalesced allocnos.
1274         (get_coalesced_allocnos_best_class_and_freq): New function.
1275         (add_allocno_to_ordered_bucket): Use the function.
1276         (push_allocno_to_stack, push_allocnos_to_stack): Process coalesced
1277         allocnos.
1278         (remove_allocno_from_bucket_and_push, pop_allocnos_from_stack):
1279         Use print_coalesced_allocno.
1280         (setup_allocno_available_regs_num,
1281         setup_allocno_left_conflicts_num): Process coalesced allocnos.
1282         (copy_freq_compare_func, allocno_conflict_p, coalesce_allocnos):
1283         New functions.
1284         (color_allocnos): Allocate/free processed_allocno_bitmap.  Call
1285         coalesce_allocnos.
1286         (priority_coloring): Allocate/free processed_allocno_bitmap.
1288         * ira-build.c (check_coalesced_allocnos): New function.
1289         (create_allocno): Initiate next_coalesced_allocno,
1290         first_coalesced_allocno.
1291         (create_cap_allocno): Check  next_coalesced_allocno,
1292         first_coalesced_allocno.
1294         * common.opt (fira-coalesce): New option.
1296         * ira.c (setup_reg_class_intersect): New function.
1297         (reg_class_subintersect): New global variable.
1298         (init_ira_once): Call setup_reg_class_intersect.
1300         * doc/invoke.texi (-fira-coalescing): New option.
1301         
1302 2007-09-20  Vladimir Makarov  <vmakarov@redhat.com>
1304         * ira-build.c (create_allocno): Initialize ALLOCNO_BEST_CLASS.
1306         * ira-color.c (add_allocno_to_ordered_bucket): Use
1307         ALLOCNO_BEST_CLASS.
1309         * ira-costs.c (setup_allocno_cover_class_and_costs): Initialize
1310         ALLOCNO_BEST_CLASS.
1312         * ira-int.h (allocno): New member best_class.
1313         (ALLOCNO_BEST_CLASS): New macro.
1314         
1315 2007-09-19  Vladimir Makarov  <vmakarov@redhat.com>
1317         * ira-int.h (allocno): Remove calls_crosed.  Add
1318         calls_crossed_start.
1319         (ALLOCNO_CALLS_CROSSED): Remove.
1320         (ALLOCNO_CALLS_CROSSED_START): Add.
1321         (build_df): Remove.
1322         (regno_calls, add_regno_call): New.
1323         
1324         * ira-build.c (initiate_calls, finish_calls, add_regno_call): New
1325         functions.
1326         (regno_calls, regno_calls_num): New globals.
1327         (build_df): Remove.
1328         (add_loop_to_tree): Use loop_outer.
1329         (form_loop_tree): Ditto.
1330         (initiate_allocnos, create_cap_allocno): Remove
1331         ALLOCNO_CALLS_CROSSED.  Add ALLOCNO_CALLS_CROSSED_START.
1332         (finish_allocnos): Remove ALLOCNO_CALLS_CROSSED.
1333         (create_bb_allocnos, create_loop_allocnos): Use DF_LR_{IN,OUT}
1334         instead of DF_UPWARD_LIVE_{IN,OUT}.
1335         (ira_build): Remove adding df problems and call of
1336         free_dominance_info.  Call initiate_calls.
1337         (ira_destroy): Add free_dominance_info and finish_calls.  Remove
1338         df_finish.
1340         * ira-emit.c (change_regs): Return the result.
1341         (generate_edge_moves): Use DF_LR_{IN,OUT} instead of
1342         DF_UPWARD_LIVE_{IN,OUT}.
1343         (change_loop): Call df_insn_rescan and df_note_rescan if there is
1344         a change.
1345         (can_move_through_p): Use hard_reg_set_equal_p instead of
1346         GO_IF_HARD_REG_EQUAL.
1348         * ira-costs.c (copy_cost, record_reg_classes,
1349         record_address_regs): Call init_move_cost if it is necessary.
1350         (tune_allocno_costs_and_cover_classes): Use regno_calls and
1351         ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
1353         * ira-conflicts.c (n_regs_set): Remove.
1354         (regs_set): Make it a vector.
1355         (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
1356         (process_bb_node_for_conflicts): Use DF_LR_IN instead of
1357         DF_UPWARD_LIVE_IN.  Call add_regno_call.  Initialize
1358         ALLOCNO_CALLS_CROSSED_START.  Remove ALLOCNO_CALLS_CROSSED.
1359         (build_conflict_bit_table): Initialize and finalize regs_set.
1360         (propagate_allocno_info): Remove ALLOCNO_CALLS_CROSSED.
1361         Initialzie ALLOCNO_CALLS_CROSSED_START.
1362         
1363         * ira-color.c (setup_allocno_available_regs_num,
1364         setup_allocno_left_conflicts_num): New functions.
1365         (update_allocno_avaialable_regs): Remove.
1366         (sorted_allocnos, allocno_stack_varray): Move upper.
1367         (assign_hard_reg): Use hard_reg_set_subset_p instead of
1368         GO_IF_HARD_REG_SUBSET.
1369         (loop_edge_freq): Use DF_LR_{IN,OUT} instead of
1370         DF_UPWARD_LIVE_{IN,OUT}.
1371         (put_allocno_into_bucket): Call setup_allocno_available_regs_num
1372         and setup_allocno_left_conflicts_num.
1373         (print_loop_title): Use loop_depth.
1374         (allocno_priority_compare_func): Remove REG_N_REFS and
1375         REG_LIVE_LENGTH.
1376         (retry_ira_color): Use SET_REGNO.  Use ALLOCNO_CALLS_CROSSED_NUM
1377         instead of ALLOCNO_CALLS_CROSSED.
1378         (collect_pseudo_call_clobbered_regs):  Use regno_calls and
1379         ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
1381         * ira-call.c (init_ira_call_data): Add argument to
1382         post_order_compute.
1383         (n_regs_set): Remove.
1384         (regs_set): Make it a vector.
1385         (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
1386         (mark_referenced_regs): Check null x.
1387         (put_save_restore_and_calculate_local_info): Initialize and
1388         finalize regs_set.  Use DF_LR_{IN,OUT} instead of
1389         DF_UPWARD_LIVE_{IN,OUT}.  Use loop_outer.
1390         (do_init_nothing): Remove.
1391         (save_trans_fun, save_con_fun_0, restore_trans_fun,
1392         restore_con_fun_0): Remove 1st parameter.
1393         (save_con_fun_n, restore_con_fun_n): Ditto.  Use
1394         df_simple_dataflow instead of df_analyze_problem.
1395         (put_save_restore): Use DF_LR_IN instead of DF_UPWARD_LIVE_IN.
1396         Call mark_all_referenced_regs for all insn.  Use bitmap progress.
1397         (get_move_insn): New function.
1398         (put_save_restore_and_calculate_local_info, put_save_restore): Use
1399         the function.
1401         * ira.c (insn_contains_asm_1, insn_contains_asm,
1402         compute_regs_asm_clobbered, expand_reg_info): New functions.
1403         (setup_class_subset_and_move_costs): Use hard_reg_set_subset_p
1404         instead of GO_IF_HARD_REG_SUBSET.
1405         (setup_reg_subclasses, setup_class_translate): Ditto. Use
1406         hard_reg_set_equal_p instead of GO_IF_HARD_REG_EQUAL.
1407         (setup_eliminable_regset): Call compute_regs_asm_clobbered.  Use
1408         df_set_regs_ever_live instead of regs_ever_live.
1409         (setup_reg_renumber): Check reg_equiv_const and
1410         reg_equiv_invariant_p.
1411         (ira): Remove no_new_pseudos. Add df-problems and analyze.  Call
1412         regstat_init_n_sets_and_refs and regstat_compute_ri.  Remove
1413         delete_unreachable_blocks.  Use expand_reg_info.  Move
1414         setup_preferred_alternate_classes upper.  Remove life_analysis.
1415         Prepare df-insfrastructure for reload.
1417         * regclass.c (setup_reg_classes): Don't use reg_pref_buffer.
1419         * function.[ch] (get_call_invalidated_used_regs): Change 1st
1420         parameter type.
1421         
1422         * gengtype.c (main): Add HARD_REG_SET.
1424         * alias.c (value_addr_p): New function.
1425         (nonoverlapping_memrefs_p): Use it.
1427         * caller-save.c (init_caller_save): Use DF_LR_TOP for IRA instead
1428         of global_live_at_start.
1429         
1430 2007-05-04  Vladimir Makarov  <vmakarov@redhat.com>
1432         * ira-conflicts.c: Change pseudo to allocno.
1433         * ira-color.c: Ditto.
1434         * ira-emit.c: Ditto.
1435         * ira-build.c: Ditto.
1436         * ira.c: Ditto.
1437         (important_classes_num, important_classes): New variables.
1438         (setup_cover_classes): Set up the variable values.
1439         * ira-costs.c: Ditto.
1440         (record_reg_classes, record_address_regs, scan_one_insn,
1441         find_pseudo_class_costs):  Process only important classes.
1442         * ira-call.c: Ditto.  Add comments about placement optimization.
1443         * ira-int.h: Ditto.
1444         (allocno) Use one bit field for boolean members.
1445         (important_classes_num, important_classes): New external
1446         definitions.
1448 2007-03-16  Vladimir Makarov  <vmakarov@redhat.com>
1450         * flags.h (ira_algorithm): Add IRA_ALGORITHM_MIXED.
1452         * opts.c (common_handle_option): Set up IRA_ALGORITHM_MIXED from
1453         the option argument.
1454         
1455         * common.opt (fira-assign-after-call-split, fira-propagate-cost,
1456         fira-split-around-calls): New options.
1457         (fira-ipra): Switch off by default.
1458         
1459         * doc/invoke.texi (-fira-algorithm): Add mixed algorithm.
1460         (-fno-ira-ipra): Rename to -fira-ipra.
1461         (-fno-ira-assign-after-call-split, -fira-propagate-cost,
1462         -fno-ira-split-around-calls): Add new options.
1463         
1464         * ira-conflicts.c (curr_reg_pressure): New variable.
1465         (set_pseudo_live, clear_pseudo_live, mark_reg_store,
1466         mark_reg_death): Update reg pressure.
1467         (add_pseudo_copies): Decrease cost for copy with dead pseudo.
1468         (process_bb_node_for_conflicts): Propagate reg pressure.
1469         (build_conflict_bit_table): Call process_bb_node_for_conflicts in
1470         preorder.
1471         (ira_build_conflicts): Add new coloring algorithm.
1472         (ira_build_conflicts): Add flag_ira_split_around_calls.
1474         * ira-emit.c (change_loop): Print allocation on the region
1475         borders.  Use pseudo_cap_member instead of regno.
1476         (modify_move_list): Add parameter to create pseudo.
1477         (ira_emit): Use pseudo_cap_member instead of regno.
1478         
1479         * ira-build.c (create_loop_tree_nodes): Set up initial reg
1480         pressure.
1481         (create_pseudo): Add parameter.  Use the parameter value instead
1482         of regno.
1483         (print_expanded_pseudo): Use pseudo_cap_member instead of regno.
1484         (create_cap_pseudo, create_insn_pseudos, create_bb_pseudos,
1485         create_loop_pseudos): Add argument to create_pseudo call.
1486         (create_pseudos, ira_build): Process IRA_ALGORITHM_MIXED.
1487         (create_loop_tree_node_caps):  Create cap pseudo for all pseudos
1488         not having father pseudo.
1489         
1490         * final.c (rest_of_handle_final): Process INCOMING_REGNO.
1492         * toplev.h (flag_ira_assign_after_call_split,
1493         flag_ira_propagate_cost, flag_ira_split_around_calls): New flags.
1495         * caller-save.c (save_call_clobbered_regs): Move declaration
1496         this_insn_sets to the function start.
1497         
1498         * ira-int.h (ira_loop_tree_node): Add reg_pressure.
1499         (pseudo): More comments for regno and cap_member
1500         (original_regno_call_crossed_p, ira_max_regno_before,
1501         ira_max_regno_call_before): New external variables.
1502         (create_pseudo): Add parameter.
1503         (reassign_conflict_pseudos, debug_ira_call_data,
1504         split_around_calls, get_around_calls_regno): New function
1505         prototypes.
1507         * ira-color.c (assign_hard_reg): Set best_hard_regno and
1508         conflict_regs earlier.  Check register availability earlier.
1509         Ignore conflict and copy cost for PSEUDO_MAY_BE_SPILLED_P.
1510         (calculate_pseudo_spill_cost): Use pseudo_cap instead of regno.
1511         Check father pseudo instead of subloop pseudos.
1512         (pop_pseudos_from_stack): Set up PSEUDO_ASSIGNED_P for NO_REGS
1513         pseudo.
1514         (print_loop_title): Print reg pressure.
1515         (color_pass): Use PSEUDO_CAP_MEMBER instead of regno.  Add mixed
1516         coloring algorithm.
1517         (move_spill_restore): Use PSEUDO_CAP_MEMBER instead of regno.  Use
1518         subloop pseudos instead of father pseudo for cost calculation.
1519         (setup_curr_costs, reassign_conflict_pseudos): New functions.
1520         (retry_ira_color): Don't allocate call used registers when
1521         flag_caller_saves or flag_ira_split_around_calls.  Call
1522         setup_curr_cost.  Print about spilling pseudo split around calls.
1523         (reuse_stack_slot): Choose the slot with minimal memory-memory
1524         costs.
1526         * ira.c (setup_reg_renumber): Add 2 parameters.  Use cap_number
1527         instead of regno.  Initialize caller_save_needed.  Make assertion
1528         stricter.
1529         (setup_pseudo_assignment_from_reg_renumber): New function.
1530         (calculate_allocation_cost): Add assertion.
1531         (print_redundant_copies): Use cap_number instead of regno.
1532         (original_regno_call_crossed_p, ira_max_regno_before,
1533         ira_max_regno_call_before): New global variables.
1534         (ira): Process IRA_ALGORITHM_MIXED.  Set up
1535         ira_max_regno_call_before and ira_max_regno_before.  New arguments
1536         for setup_reg_renumber.  Reassign if pseudo changed its class.
1537         Split pseudos around the call if necessary.  Reassign if a pseudo
1538         is split.
1540         * ira.h: New year for Copyright.
1542         * ira-costs.c (reg_pref): Rename to pseudo_pref.
1543         (reg_pref_buffer): rename to pseudo_pref_buffer.
1544         (find_pseudo_class_costs): Initialize best_cost and best_class.
1545         Process IRA_ALGORITHM_MIXED.  Find best cover class for regno.
1546         (process_bb_node_for_hard_reg_moves): Process IRA_ALGORITHM_MIXED.
1548         * Makefile.in (ira-call.o): Add new file.
1550         * reload1.c (calculate_needs_all_insns): Remove unnecessary
1551         memory-memory move.
1553         * ira-call.c: New file.
1554         
1555 2007-02-09  Vladimir Makarov  <vmakarov@redhat.com>
1557         * common.opt (fipra): Rename to fira-ipra.  Make it default.
1558         (fira-move-spills, fira-share-save-slots, fira-share-spill-slots):
1559         New.
1560         * toplev.h (flag_ipra): Rename to flag_ira_ipra.
1561         (flag_ira_move_spills, flag_ira_share_save_slots,
1562         flag_ira_share_spill_slots): New external definitions.
1563         * doc/invoke.texi (-fipra): Rename to -fno-ira-ipra. 
1564         (-fno-ira-move-spills, -fno-ira-share-save-slots,
1565         -fno-ira-share-spill-slots): New options.
1566         * function.c (get_call_invalidated_used_regs): Rename flag_ipra to
1567         flag_ira_ipra.
1568         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Ditto.
1569         * caller-save.c (setup_save_areas): Use flag_ira_share_save_slots.
1570         Rename flag_ipra to flag_ira_ipra.
1571         (flag_ira_share_save_slots): Use flag_ira_move_spills.
1572         * ira-color.c (assign_hard_reg): Skip pseudos with different cover
1573         class.
1574         (reuse_stack_slot): Use flag_ira_share_spill_slots.
1575         * config/arm/arm.h (IRA_COVER_CLASSES): New macro.
1576         
1577 2007-02-31  Vladimir Makarov  <vmakarov@redhat.com>
1579         * reload.h (debug_save_data): New definition.
1580         
1581         * caller-save.c (struct bb_info): New.
1582         (BB_INFO, BB_INFO_BY_INDEX): New macros.
1583         (calculate_local_save_info, set_up_bb_rts_numbers, rpost_cmp,
1584         calculate_save_in_out, calculate_save_here,
1585         make_global_save_analysis, print_hard_reg_set_and_mode,
1586         print_hard_reg_set, print_save_data, debug_save_data,
1587         set_hard_reg_saved): New functions.
1588         (save_call_clobbered_regs): Make global save analysis and use it
1589         to put save/restore code.
1590         (insert_one_insn): Check CODE_LABEL.
1592 2007-01-19  Vladimir Makarov  <vmakarov@redhat.com>
1594         * toplev.h (flag_ipra): New external definition.
1596         * common.opt (fipra): New option.
1598         * doc/invoke.texi (-fipra); Document the option.
1600         * cgraph.h (cgraph_node): New member function_used_regs.
1602         * cgraph.c (cgraph_create_node): Initialize function_used_regs.
1604         * final.c (update_regs_ever_live): New function.
1605         (rest_of_handle_final): Set up function_used_regs and
1606         call_used_regs.
1608         * ira-build.c (ira_build): Clear function call_used_regs.
1610         * function.h: Add hard-reg-set.h header.
1611         (emit_status): New member call_used_regs.
1612         (get_call_invalidated_used_regs): New definition.
1614         * function.c (get_call, get_call_invalidated_used_regs): New
1615         functions.
1617         * Makefile.in (FUNCTION_H): Add hard-reg-set.h.
1618         (caller-save.o): Add dependence on output.h and ira.h
1620         * regrename.c (copyprop_hardreg_forward_1): Use function
1621         get_call_invalidated_used_regs.
1623         * ira-conflicts.c (process_bb_node_for_conflicts): Ditto.
1625         * postreload-gcse.c (record_opr_changes,
1626         reg_set_between_after_reload_p, reg_used_between_after_reload_p):
1627         Ditto.
1629         * postreload.c (reload_combine, reload_cse_move2add): Ditto.
1631         * rtlanal.c (reg_set_between_p): Ditto.
1633         * flow.c (propagate_one_insn): Ditto.
1635         * df-scan.c (df_insn_refs_record): Ditto.
1637         * gcse.c (compute_hash_table_work, compute_store_table): Ditto.
1639         * cselib.c (cselib_process_insn): Ditto.
1641         * loop-iv.c (simplify_using_assignment): Ditto.
1643         * sched-deps.c (sched_analyze): Ditto.
1645         * combine.c (record_dead_and_set_regs): Ditto.
1647         * resource.c (mark_set_resources, mark_set_resources): Ditto.
1649         * var-tracking.c (var-tracking.c): Ditto.
1651         * reload1.c (reload): Ditto.
1653         * cse.c (invalidate_for_call): Ditto.  Add parameter.
1654         (cse_insn): Pass the parameter.
1656         * ira.h (try_to_migrate): Remove the definition.
1657         (collect_pseudo_call_clobbered_regs): New external definition.
1659         * ira-color.c (collect_pseudo_call_clobbered_regs): New function.
1661         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Add cost
1662         calculation when IPRA is used.
1664         * caller-save.c: Include headers output.h and ira.h.
1665         (saved_hard_reg): New structure.
1666         (hard_reg_map, hard_reg_map, all_saved_regs): New variables.
1667         (all_saved_regs, new_saved_hard_reg, finish_saved_hard_regs,
1668         saved_hard_reg_compare_func): New functions.
1669         (setup_save_areas): Add code for sharing stack slots.
1670         (save_call_clobbered_regs): Use function
1671         get_call_invalidated_used_regs.
1672         
1673 2007-01-12  Vladimir Makarov  <vmakarov@redhat.com>
1675         * doc/tm.texi (IRA_HARD_REGNO_ADD_COST_MULTIPLIER): New macro.
1677         * ira-conflicts.c (add_pseudo_copies): Add copy between output and
1678         died operand pseudos.
1680         * ira.c (setup_cover_classes, setup_class_translate): Define and
1681         call only when IRA_COVER_CLASSES is defined.
1682         (no_alloc_regs): Rename to no_unit_alloc_regs.
1683         (setup_eliminable_regset): Set up no_alloc_regs.
1685         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Modify cost
1686         if IRA_HARD_REGNO_ADD_COST_MULTIPLIER is defined.
1688         * config/s390/s390.h (IRA_COVER_CLASSES,
1689         IRA_HARD_REGNO_ADD_COST_MULTIPLIER(regno)): Define.
1690         
1691 2006-12-22  Vladimir Makarov  <vmakarov@redhat.com>
1693         * rtl.h (setup_reg_classes): New function prototype.
1694         
1695         * regclass.c (setup_reg_classes): New function.
1697         * global.c (global_alloc): Dump information about register
1698         assigning.
1700         * ira-int.h (ira_build): Change prototype signature.
1702         * ira-color.c (pseudo_compare_func): Rename to
1703         pseudo_priority_compare_func.
1704         (priority_coloring): Dump information about register
1705         assigning.
1707         * ira-build.c (ira_build): Return true if we have loops for the
1708         allocation.
1710         * ira.c (setup_preferred_alternate_classes): New function.
1711         (ira): Use it instead of regclass.  Rebuild only if we have loops.
1713 2006-12-15  Vladimir Makarov  <vmakarov@redhat.com>
1715         * ira.h, ira-int.h, ira.c, ira-build.c, ira-costs.c
1716         ira-conflicts.c, ira-color.c, ira-emit.c: New files.
1718         * flags.h (ira_algorithm): New enumeration.
1719         (flag_ira_algorithm): New external variable declaration.
1721         * tree-pass.h (pass_ira): New external variable declaration.
1723         * toplev.c (ira.h): New include.
1724         (flag_ira_algorithm): New global variable.
1725         (backend_init): Call init_ira_once.
1727         * toplev.h (flag_ira, flag_ira_biased_coloring): New external
1728         variable declarations.
1730         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
1731         may_move_out_cost): New external variable declarations.
1732         
1733         * caller-save.c (no_caller_save_reg_set): New global variable.
1734         (init_caller_save): Set up no_caller_save_reg_set.
1735         
1736         * global.c (eliminable_regset): Make it external.
1737         (gate_handle_global_alloc): New function.
1738         (pass_global_alloc): Add the gate function.
1740         * opts.c (decode_options):  Print the warning for -fira.
1741         (common_handle_option): Process -fira-algorithm option.
1743         * timevar.def (TV_IRA): New pass.
1745         * hard-reg-set.h (no_caller_save_reg_set): New external variable
1746         declaration.
1748         * regmove.c (regmove_optimize): Don't do replacement of output
1749         operands by input operands.
1750         (rest_of_handle_regmove): Don't do CFG cleanup for IRA.
1752         * local-alloc.c (update_equiv_regs): Make it external.  Return
1753         true if jump label rebuilding should be done.
1754         (gate_handle_local_alloc): New function.
1755         (pass_local_alloc): Add the gate function.
1757         * alias.c (stack_addr_p): New function.
1758         (nonoverlapping_memrefs_p): Add code for IRA.
1760         * common.opt (fira, fira-algorithm, fira-biased-coloring): New
1761         options.
1763         * regclass.c (contains_reg_of_mode, move_cost, may_move_in_cost,
1764         may_move_out_cost): Make the variables external.
1765         
1766         * rtl.h (eliminable_regset): New external variable declaration.
1767         (update_equiv_regs): New external function definition.
1769         * Makefile.in (IRA_INT_H): New definition.
1770         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
1771         ira-conflicts.o, ira-color.o, and ira-emit.o.
1772         (reload1.o, toplev.o): Add dependence on ira.h.
1773         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
1774         ira-emit.o): New entries.
1776         * passes.c (pass_ira): New pass.
1778         * reload1.c (alter_reg): Add a new parameter.
1779         (pseudo_reg_compare): New function.
1780         (reload): Sort pseudos for IRA.  Call alter_reg with the
1781         additional parameter.
1782         (count_spilled_pseudo): New variable freq.  Use it.
1783         (alter_reg): Add code for IRA.
1784         (eliminate_regs_1, finish_spills, emit_input_reload_insns,
1785         delete_output_reload): Use additional parameter for alter_reg.
1786         (finish_spills, emit_input_reload_insns, delete_output_reload):
1787         Call mark_allocation_change.
1788         (finish_spills): Call retry_ira_color.
1789         
1790         * doc/invoke.texi: Describe new options -fira,
1791         -fira-biased-coloring, and -fira-algorithm.
1792         
1793         * doc/passes.texi: Decribe IRA.
1795         * doc/tm.texi:  Decribe macro IRA_COVER_CLASSES.
1796         
1797         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
1799         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
1801         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
1803         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
1804         
1805         Richard Henderson  <rth@redhat.com>
1807         * tree-pass.h (pass_lower_subreg): New external definition.
1808         * toplev.h (flag_lower_subreg): New external definition.
1809         * rtl.def (CONCATN): New rtl expression.
1810         * dwarf2out.c (concatn_loc_descriptor): New function.
1811         (loc_descriptor): Process CONCATN.
1812         * timevar.def (TV_LOWER_SUBREG): New definition.
1813         * emit-rtl.c (gen_reg_rtx_offset): New function.
1814         (gen_lowpart_common): Process CONCATN.
1815         * simplify-rtx.c (simplify_subreg): Process CONCATN.
1816         * common.opt (flower-subreg): New options.
1817         * rtl.h (gen_reg_rtx_offset): New external definition.
1818         * Makefile.in (OBJS-common): Add lower-subreg.o.
1819         (lower-subreg.o): New entry.
1820         * passes.c (pass_lower_subreg): Add new pass.
1821         * lower-subreg.c: New file.
1822         
1823 2008-03-28  Rafael Espindola  <espindola@google.com>
1825         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
1826         (tree_binary_nonnegative_warnv_p): Make it public.
1827         (tree_single_nonnegative_warnv_p): Make it public.
1828         (tree_invalid_nonnegative_warnv_p): Make it public.
1829         (tree_unary_nonzero_warnv_p): Make it public.
1830         (tree_binary_nonzero_warnv_p): Make it public
1831         (tree_single_nonzero_warnv_p): Make it public.
1832         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
1833         (extract_range_from_binary_expr): Split the expr argument.
1834         (extract_range_from_unary_expr): Split the expr argument.
1835         (extract_range_from_comparison): Split the expr argument.
1836         (extract_range_from_expr): Use the new aux functions.
1837         (vrp_evaluate_conditional_warnv): Use
1838         vrp_evaluate_conditional_warnv_with_ops.
1839         * tree.h (tree_unary_nonzero_warnv_p): Declare.
1840         (tree_binary_nonzero_warnv_p): Declare.
1841         (tree_single_nonzero_warnv_p): Declare.
1842         (tree_expr_nonzero_warnv_p): Declare.
1843         (tree_unary_nonnegative_warnv_p): Declare.
1844         (tree_binary_nonnegative_warnv_p): Declare.
1845         (tree_single_nonnegative_warnv_p): Declare.
1846         (tree_invalid_nonnegative_warnv_p): Declare.
1848 2008-03-28  Richard Guenther  <rguenther@suse.de>
1850         PR tree-optimization/30317
1851         PR tree-optimization/30911
1852         PR tree-optimization/34793
1853         * tree-vrp.c (set_and_canonicalize_value_range): New function.
1854         (struct assert_locus_d): New member EXPR.
1855         (register_new_assert_for): Add EXPR parameter to support
1856         ASSERT_EXPR <name, expr OP limit>.
1857         (register_edge_assert_for_1): Adjust callers.
1858         (find_assert_locations): Likewise.
1859         (process_assert_insertions_for): Build condition from
1860         expression.
1861         (extract_range_from_assert): Handle ASSERT_EXPRs
1862         of the form ASSERT_EXPR <name, expr OP limit>.
1863         (register_edge_assert_for_2): New helper registering
1864         asserts for comparisons.  Recognize range tests of the form
1865         (unsigned)i - CST1 OP CST2.
1866         (register_edge_assert_for_1): Use it.
1867         (register_edge_assert_for): Likewise.
1868         (needs_overflow_infinity): Integer sub-types
1869         do not need overflow infinities.
1870         (vrp_val_is_max): The extreme values of integer sub-types
1871         are those of the base type.
1872         (vrp_val_is_min): Likewise.
1873         * tree.def (ASSERT_EXPR): Document extra allowed conditional
1874         expressions.
1876 2008-03-28  Nick Clifton  <nickc@redhat.com>
1878         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
1879         Return GENERAL_REGS for stack adjustment reloads.
1881 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1883         PR target/31334
1884         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
1885         const_vector when all the vectors are constant.
1887 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
1889         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
1890         comparisons.
1891         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
1892         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
1893         (scc_sf): New.
1894         (s<code>_sf): Use new scc_sf attribute for opcode names.
1896 2008-03-27  Tom Tromey  <tromey@redhat.com>
1898         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
1899         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
1900         config/spu/t-spu-elf, config/i386/t-interix,
1901         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
1902         config/i386/x-darwin, config/i386/x-mingw32,
1903         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
1904         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
1905         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
1906         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
1907         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
1908         config/rs6000/x-darwin, config/rs6000/t-rs6000,
1909         config/score/t-score-elf, config/arm/t-strongarm-pe,
1910         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
1911         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
1912         Revert automatic dependency patch.
1914 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
1916         PR target/35657
1917         * config/i386/i386.c (ix86_function_arg_boundary): Align
1918         decimal floating point to its natural boundary.
1920 2008-03-27  Richard Guenther  <rguenther@suse.de>
1922         PR middle-end/35716
1923         * fold-const.c (fold_comparison): Restrict distinct decl
1924         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
1925         solely rely on operand_equal_p.
1927 2008-03-27  Richard Guenther  <rguenther@suse.de>
1929         PR c/32511
1930         * c-common.c (handle_weak_attribute): Reject combination of
1931         weak and inline.
1933 2008-03-27  Richard Guenther  <rguenther@suse.de>
1935         PR tree-optimization/32810
1936         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
1937         conversions from DECL_INITIAL.
1938         (fold_const_aggregate_ref): Likewise from constructor elements.
1940 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
1942         * tree-affine.h (aff_combination_expand): Declare.
1943         (get_inner_reference_aff): Likewise.
1944         * tree-affine.c (aff_combination_expand): Split out from
1945         tree_to_aff_combination_expand.
1946         (get_inner_reference_aff): New function.
1947         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
1948         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
1949         (struct lim_aux_data): sm_done field removed.
1950         (mem_ref_loc_p, mem_ref_locs_p): New types.
1951         (struct mem_ref): Added id, stored, accesses_in_loop,
1952         indep_loop, dep_loop, indep_ref, dep_ref fields.
1953         Removed is_stored, locs and next fields.
1954         (memory_accesses): New variable.
1955         (movement_possibility): Do not allow moving statements
1956         that store to memory.
1957         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
1958         New functions.
1959         (determine_max_movement): For statements with memory references,
1960         find the outermost loop in that the reference is independent.
1961         (move_computations_stmt): Mark the virtual operands for
1962         renaming.
1963         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
1964         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
1965         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
1966         add_vop_ref_mapping, create_vop_ref_mapping_loop,
1967         create_vop_ref_mapping, analyze_memory_references,
1968         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
1969         get_all_locs_in_loop, ref_always_accessed_p,
1970         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
1971         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
1972         store_motion_loop, store_motion): New functions.
1973         (struct vop_to_refs_elt): New type.
1974         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
1975         memref_hash, memref_eq, hoist_memory_references): Rewritten.
1976         (schedule_sm): Replaced by...
1977         (execute_sm): ... this.
1978         (determine_lsm_ref, hoist_memory_references,
1979         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
1980         find_more_ref_vops, free_mem_ref, free_mem_refs,
1981         determine_lsm_loop, determine_lsm): Removed.
1982         (tree_ssa_lim_finalize): Free data structures used by store
1983         motion.
1984         (tree_ssa_lim): Call analyze_memory_references.  Use
1985         store_motion instead of determine_lsm.
1987 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
1989         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
1990         rename tmake_file to m68hc11/t-m68hc11.
1991         (mcore): Set inhibit_libc to true.
1992         * config.host (alpha*-dec-*vms*): Set extra_programs.
1993         (interix3*): Don't use host_xmake_file.
1994         * configure.ac: Let config.gcc override inhibit_libc.
1995         * configure: Regenerate.
1997         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
1998         * config/t-openbsd-thread: Remove commented out lines.
1999         
2000         * config/x-interix: Remove.
2002         * config/m68hc11/t-m68hc11-gas: Rename to...
2003         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
2005         * config/mcore/t-mcore: Remove T_CFLAGS.
2006         * config/mcore/t-mcore-pe: Likewise.
2008 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
2010         * configure.ac: Replace custom __GNU_SOURCE test with
2011         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
2012         * aclocal.m4: Regenerate.
2013         * configure: Regenerate.
2014         * config.in: Regenerate.
2016 2008-03-27  Richard Guenther  <rguenther@suse.de>
2018         * fold-const.c (target.h): Include.
2019         (fold_comparison): Fold comparison of addresses of decls
2020         that bind locally or of constants.  Consolidate address folding code.
2021         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
2022         results from fold_binary_to_constant.
2023         (compare_values_warnv): Likewise.
2025 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
2027         PR middle-end/35429
2028         * fold-const.c (fold_truthop): Check for integeral types when folding
2029         a == 0 && b == 0 and a != 0 || b != 0 .
2031 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
2033         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
2035 2008-03-26  Andreas Schwab  <schwab@suse.de>
2037         * doc/invoke.texi: Fix use of @item vs. @itemx.
2039 2008-03-26  Tom Tromey  <tromey@redhat.com>
2041         * Makefile.in (build/gensupport.o, build/print-rtl.o,
2042         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
2043         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
2044         build/gencodes.o, build/genconditions.o, build/genconfig.o,
2045         build/genconstants.o, build/genemit.o, build/genextract.o,
2046         build/genflags.o, build/genmddeps.o, build/genopinit.o,
2047         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
2048         options.h.
2050 2008-03-26  Richard Guenther  <rguenther@suse.de>
2052         Revert
2053         2008-03-26  Richard Guenther  <rguenther@suse.de>
2055         * fold-const.c (target.h): Include.
2056         (fold_comparison): Fold comparison of addresses of two decls
2057         that bind locally.  Consolidate address folding code.
2059 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2061         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
2062         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
2063         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
2064         dconstsqrt2, dconstthird, dconste and/or dconst10.
2065         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
2066         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
2067         dconstsqrt2, dconste): Delete.
2068         (init_emit_once): Likewise.  Simplify initializing dconstm1.
2069         Constify variable.
2070         * real.c (get_real_const): New.
2071         * real.h (dconst3, dconst10, dconstm2, dconstthird,
2072         dconstsqrt2, dconste): Delete.
2073         (real_value_const, get_real_const): New.
2075 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
2077         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
2079         * config/i386/i386.c (ix86_function_arg_boundary): Check
2080         BIGGEST_ALIGNMENT instead of 128.
2081         (setup_incoming_varargs_64): Likewise.
2083 2008-03-26  Tom Tromey  <tromey@redhat.com>
2085         * Makefile.in (DEPFILES): Add missing '/'.
2087 2008-03-26  Richard Guenther  <rguenther@suse.de>
2089         * fold-const.c (target.h): Include.
2090         (fold_comparison): Fold comparison of addresses of two decls
2091         that bind locally.  Consolidate address folding code.
2093 2008-03-26  Nick Clifton  <nickc@redhat.com>
2095         PR target/31232
2096         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
2097         not allow INT+INT as a legitimate addressing mode.
2099 2008-03-26  Richard Guenther  <rguenther@suse.de>
2101         * tree-flow.h (widen_bitfield): Remove declaration.
2102         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
2103         (widen_bitfield): Remove function.
2104         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
2105         code.
2107 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2109         PR target/31558
2110         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
2111         error_mark_node's.
2113 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
2115         PR rtl-optimization/35232
2116         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
2117         (forget_old_reloads_1, forget_marked_reloads): Don't clear
2118         reg_reloaded_call_part_clobbered here.
2119         (reload_regs_reach_end_p): New function.
2120         (reload_reg_rtx_for_input): New variable.
2121         (reload_reg_rtx_for_output): Likewise.
2122         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
2123         when reassigning a pseudo register.  Load reloadreg from 
2124         reload_reg_rtx_for_input, moving the mode and register
2125         calculation to...
2126         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
2127         instead of the original when deciding whether an input reload
2128         would be a no-op or whether an output reload can be deleted.
2129         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
2130         when setting up new_spill_reg_store.  Load it from
2131         reload_reg_rtx_for_output, moving the mode and register
2132         calculation to...
2133         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
2134         instead of the original when deciding whether an output reload
2135         would be a no-op.  Do the same when modifying insn notes.
2136         Use rtx_equal_p instead of == to compare the registers.
2137         (inherit_piecemeal_p): Take a mode and two register numbers
2138         as argument.
2139         (emit_reload_insns): Clear new_spill_reg_store for every hard
2140         register in the reload register.  Remove spill registers
2141         from reg_reloaded_valid before considering whether to record
2142         inheritance information for them.  Use reload_reg_rtx_for_output
2143         instead of reg_rtx when recording output reloads.  Use
2144         reload_reg_rtx_for_input instead of reg_rtx when recording
2145         input reloads.  Set or clear reg_reloaded_call_part_clobbered
2146         at the same time as setting reg_reloaded_valid.
2147         (delete_output_reload): Add a new_reload_reg parameter and use it
2148         instead of rld[j].reg_rtx.
2149         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
2150         calls accordingly.
2152 2008-03-25  Tom Tromey  <tromey@redhat.com>
2154         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
2155         (build/genattr.o): Likewise.
2156         (build/genattrtab.o): Likewise.
2157         (build/gencodes.o): Likewise.
2158         (build/genconfig.o): Likewise.
2159         (build/genconstants.o): Likewise.
2160         (build/genemit.o): Likewise.
2161         (build/genextract.o): Likewise.
2162         (build/genflags.o): Likewise.
2164 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
2165         
2166         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
2167         instead of size_int for integer types.
2168         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
2169         to match type of MINUS_EXPR.
2170         
2171 2008-03-25  Tom Tromey  <tromey@redhat.com>
2173         * configure: Rebuilt.
2174         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
2175         Makefile.
2177 2008-03-25  Tom Tromey  <tromey@redhat.com>
2179         * config/x-solaris (host-solaris.o): Update.
2180         * config/x-linux (host-linux.o): Update.
2181         * config/x-hpux (host-hpux.o): Update.
2182         * config/x-darwin (host-darwin.o): Update.
2183         * config/v850/t-v850e (v850-c.o): Update.
2184         * config/v850/t-v850 (v850-c.o): Update.
2185         * config/t-vxworks (vxworks.o): Update.
2186         * config/t-sol2 (sol2-c.o, sol2.o): Update.
2187         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
2188         * config/spu/t-spu-elf (spu-c.o): Update.
2189         (spu.o): Remove.
2190         * config/sh/t-symbian (sh-c.o): Update.
2191         (symbian.o): Update.
2192         * config/sh/t-sh (sh-c.o): Update.
2193         * config/score/t-score-elf (score7.o, score3.o): Update.
2194         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
2195         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
2196         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
2197         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
2198         (rs6000.o): Remove.
2199         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
2200         * config/m32c/t-m32c (m32c-pragma.o): Update.
2201         * config/ia64/t-ia64 (ia64-c.o): Update.
2202         * config/i386/x-mingw32 (host-mingw32.o): Update.
2203         * config/i386/x-i386 (driver-i386.o): Update.
2204         * config/i386/x-darwin (host-i386-darwin.o): Update.
2205         * config/i386/x-cygwin (host-cygwin.o): Update.
2206         * config/i386/t-nwld (nwld.o): Update.
2207         * config/i386/t-netware (netware.o): Update.
2208         * config/i386/t-interix (winnt.o): Update.
2209         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
2210         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
2211         msformat-c.o): Update.
2212         * config/bfin/t-bfin-linux (generated_files): Add
2213         linux-sysroot-suffix.h.
2214         * config/arm/t-wince-pe (pe.o): Update.
2215         * config/arm/t-strongarm-pe (pe.o): Update.
2216         * config/arm/t-pe (pe.o): Update.
2217         * config/arm/t-arm (arm-c.o): Update.
2218         * doc/install.texi (Prerequisites): Require make 3.80.
2219         * Makefile.in: Remove .o targets.
2220         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
2221         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
2222         (simple_generated_h, simple_generated_c): Move earlier.
2223         (generated_files): New variable.
2224         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
2225         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
2226         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
2227         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
2228         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
2229         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
2230         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
2231         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
2232         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
2233         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
2234         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
2235         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
2236         (.c.o): Remove.
2237         (COMPILE.base, COMPILE): New variables.
2238         (%.o): New pattern rule.
2239         (ALL_HOST_OBJS): New variable.
2240         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
2241         (dummy-checksum.o, cc1-checksum.o): Remove.
2242         (DRIVER_SHLIB): New variable.
2243         (DRIVER_DEFINES): Use it.
2244         (gencondmd.c): Move out of build/.
2245         (s-conditions): Update.
2246         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
2247         (ALL_BUILD_OBJS): Likewise.
2248         (build/%.o): Use BUILDCOMPILE.
2249         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
2250         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
2251         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
2252         build/gencheck.o, build/gencodes.o, build/genconditions.o,
2253         build/genconfig.o, build/genconstants.o, build/genemit.o,
2254         build/genextract.o, build/genflags.o, build/genmddeps.o,
2255         build/genopinit.o, build/genoutput.o, build/genpeep.o,
2256         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
2257         build/gen-protos.o, build/scan.o, build/fix-header.o,
2258         build/scan-decls.o): Simplify.
2259         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
2260         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
2261         prefix.o, toplev.o): Reduce to variable setting.
2262         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
2263         ($(out_object_file), gcc-options.o): New targets.
2264         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
2265         * configure: Rebuilt.
2266         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
2267         * doc/sourcebuild.texi (Front End Directory): Document new variable.
2269 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
2271         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
2272         complain when we hit an error, return ERROR_MARK_NODE.
2274 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
2276         * config/sh/constraints.md (Pso, Psz): New constraints.
2277         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
2278         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
2280 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
2282         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
2283         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
2285 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
2287         * config/sh/sh.md (prefetch): Add condition for SH2A target.
2288         (prefetch_sh2a): New.   
2290 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
2291             Naveen.H.S  <naveen.hs@kpitcummins.com>
2293         * config/sh/constraints.md (I28): New constraint.
2294         * config/sh/sh.c (broken_move): Add support for movi20s.
2295         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
2297 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
2298             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
2299             Naveen.H.S  <naveen.hs@kpitcummins.com>
2301         * config/sh/sh.c (SH_ATTRIBUTES): Define.
2302         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
2303         (print_operand): Handle resbank in %@ operand code.
2304         (sh_encode_section_info): New.
2305         (push_regs): Add conditions for resbank.
2306         (sh_expand_epilogue): Likewise.
2307         (sh_insert_attributes): Likewise.
2308         (sh_attribute_table): Likewise.
2309         (sh_handle_resbank_handler_attribute): New.
2310         (sh2a_handle_function_vector_handler_attribute): New.
2311         (sh2a_is_function_vector_call): New.
2312         (sh2a_get_function_vector_number): New.
2313         (sh2a_function_vector_p): New.
2314         (sh_cfun_resbank_handler_p): New.
2315         * config/sh/sh.md (calli): Emit jsr/n if possible.
2316         (calli_tbr_rel): New.
2317         (calli_pcrel): Emit jsr/n if possible.
2318         (return_i): Emit rts/n if possible.
2319         (call_valuei_tbr_rel): New.
2320         (call_valuei_pcrel): Add condition for SH2A target.
2321         (call_value): Likewise.
2322         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
2323         (sh2a_get_function_vector_number): Likewise.
2324         (sh2a_is_function_vector_call): Likewise.
2325         * doc/extend.texi: Document TBR relative addressing of SH2A.
2326         (resbank): Add description for SH2A.
2328 2008-03-24  Richard Guenther  <rguenther@suse.de>
2330         PR c/22371
2331         * gimplify.c (gimplify_modify_expr): For frontend type-correct
2332         pointer assignments change conversions according to middle-end rules.
2333         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
2334         * configure.ac: Include type checking in yes.
2335         * configure: Regenerate.
2337 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2339         * diagnostic.c (diagnostic_count_diagnostic): Delete.
2340         (diagnostic_report_diagnostic): Update. Handle ICEs here.
2341         
2342 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
2344         * gthr-vxworks.h (UNUSED): Define.
2346 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
2348         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and
2349         CX_REG.
2351 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
2353         * doc/extend.texi (Function Attributes): Add missing comma in the
2354         example of the "alloc_size" attribute.
2355         
2356 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
2358         Revert:
2359         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
2361         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
2362         32bit host.
2364         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
2366         PR target/35496
2367         * stor-layout.c (update_alignment_for_field): Set minimum alignment
2368         of the underlying type of a MS bitfield layout to the natural
2369         alignment of the type.
2371         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
2373         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
2374         to their natural alignment to avoid store forwarding stalls.
2376 2008-03-22  Richard Guenther  <rguenther@suse.de>
2378         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
2379         For PHI nodes verify the address is invariant.
2380         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
2381         (get_symbol_constant_value): Use is_gimple_min_invariant.
2382         (maybe_fold_stmt_indirect): Likewise.
2384 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2386         PR rtl-optimization/33927
2387         * Makefile.in (dse.o): Depend on $(TM_P_H).
2388         * expr.h (extract_low_bits): Declare.
2389         * expmed.c (extract_low_bits): New function.
2390         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
2391         * dse.c: Include tm_p.h.
2392         (find_shift_sequence): Remove the read_reg argument and return the
2393         read value.  Emit the instructions instead of returning them.
2394         Iterate on new_mode rather than calculating it each time.
2395         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
2396         source to NEW_MODE and extract_low_bits to convert the shifted
2397         value to READ_MODE.
2398         (replace_read): Allow the load and store to have different mode
2399         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
2400         or extraction instructions before trying the replacement.  Update
2401         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
2403 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
2405         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
2406         to their natural alignment to avoid store forwarding stalls.
2408 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2410         PR target/27946
2411         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
2412         encouraging but not allowing gprs for input;
2413         change the input constraint to !f#r.
2414         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
2415         gprs for output;
2416         change the output constraint to !f#r.
2418 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
2420         PR target/13958
2421         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
2422         corresponding post-reload splitters.
2423         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
2424         when x87 FP math is selected.
2425         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
2426         New function prototype.
2427         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
2428         unreachable function to ease macroization of insn patterns.
2430 2008-03-21  Martin Jambor  <mjambor@suse.cz>
2432         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
2433         reference dumps if ddr is NULL or dependence is unknown.
2435 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
2437         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
2438         unsigned extension into account.
2439         (ATOMIC_COMPARE_AND_SWAP): Likewise.
2440         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
2441         Do computations on a scratch register.
2443 2008-03-21  Richard Guenther  <rguenther@suse.de>
2445         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
2446         Use is_gimple_min_invariant instead of TREE_INVARIANT.
2447         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
2448         * tree-ssa-dom.c (record_equality): Likewise.
2449         * tree-inline.c (copy_body_r): Likewise.
2450         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
2451         TREE_INVARIANT.
2453 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
2455         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
2456         as 'delete_unused' argument.
2458 2008-03-20  Richard Guenther  <rguenther@suse.de>
2460         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
2461         special casing of constant qualifiers.
2462         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
2463         care about them in general.
2464         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
2465         regardless of their type.
2466         (fold_stmt_r): Forcefully fold *& if we end up with that.
2468 2008-03-20  Paul Brook  <paul@codesourcery.com>
2470         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
2471         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
2472         linker flags.
2473         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
2474         definition.
2475         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
2476         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
2478 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
2480         * common.opt (Wmudflap): New option.
2481         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
2482         (mx_register_decls): Likewise.
2483         (mudflap_finish_file): Likewise.
2484         * doc/invoke.texi: Document -Wno-mudflap.
2486 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
2488         * c-format.c (replace_format_name_to_system_name): New.
2489         (cmp_attribs): New.
2490         (convert_format_name_to_system_name): New.
2491         (decode_format_attr): Add use of convert_format_name_to_system_name.
2492         (format_types_orig): Add gnu_ prefix to names.
2493         (check_format_info_main): Special treating of \0 escaped names for
2494         supporting multi-character format specifiers as I32, I64.
2495         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
2496         (gnu_target_overrides_format_attributes): New.
2497         * c-format.h: Add structure target_ovr_attr to hold
2498         system specific formatter names.
2499         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
2500         msformat-c.o file to c_target_objs and cxx_target_objs.
2501         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
2502         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
2503         (TARGET_N_FORMAT_TYPES): New.
2504         * config/i386/msformat-c.c: New.
2505         * config/i386/t-cygming: Add build rule for msformat-c.o.
2506         * doc/extend.texi: Add new format names gnu_* and ms_* and
2507         further details.
2508         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
2510 2008-03-20  Ira Rosen  <irar@il.ibm.com>
2512         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
2513         optimizations turned on under -O3.
2514         (ftree-vectorize): Add that the flag is turned on with -O3.
2516 2008-03-20  Ben Elliston  <bje@au.ibm.com>
2518         * regmove.c (try_auto_increment): Fix spelling error in comment.
2519         * final.c (final_scan_insn): Likewise.
2521 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
2523         PR target/14552
2524         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
2525         allocator preferences for "y" and "r" class registers.
2526         ("*mov<mode>_internal"): Ditto.
2527         ("*movv2sf_internal_rex64"): Ditto.
2528         ("*movv2sf_internal"): Ditto.
2530 2008-03-19  Michael Matz  <matz@suse.de>
2532         PR middle-end/35616
2533         * calls.c (expand_call): Check overlap of arguments with call
2534         address for sibcalls.
2536 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
2538         PR target/35496
2539         * stor-layout.c (update_alignment_for_field): Set minimum alignment
2540         of the underlying type of a MS bitfield layout to the natural
2541         alignment of the type.
2543 2008-03-19  Jan Hubicka  <jh@suse.cz>
2545         PR other/35094
2546         * toplev.c (decode_d_option): Handle all CPP flags.
2547         * tree-vrp.c: Update tree_pass descriptors.
2548         * regrename.c: Update tree_pass descriptors.
2549         * fwprop.c: Update tree_pass descriptors.
2550         * doc/invoke.texi: Remove documentation of dropped -d? flags.
2551         * tree-into-ssa.c: Update tree_pass descriptors.
2552         * tree-dump.c: Update tree_pass descriptors.
2553         * tree-complex.c: Update tree_pass descriptors.
2554         * tree-dump.h: Update tree_pass descriptors.
2555         * see.c: Update tree_pass descriptors.
2556         * cgraphbuild.c: Update tree_pass descriptors.
2557         * tracer.c: Update tree_pass descriptors.
2558         * tree-loop-distribution.c: Update tree_pass descriptors.
2559         * cgraph.c: Update tree_pass descriptors.
2560         * postreload-gcse.c: Update tree_pass descriptors.
2561         * postreload.c: Update tree_pass descriptors.
2562         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
2563         * tree-tailcall.c: Update tree_pass descriptors.
2564         * tree-pass.h (tree_opt_pass): Rename to ...
2565         (opt_pass) ... this one; add "type" field and remove letter field.
2566         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
2567         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
2568         all_lowering_passes): Update declaration.
2569         * ipa-cp.c: Update tree_pass descriptors.
2570         * final.c: Update tree_pass descriptors.
2571         * omp-low.c: Update tree_pass descriptors.
2572         * tree-ssa-dse.c: Update tree_pass descriptors.
2573         * ipa-reference.c: Update tree_pass descriptors.
2574         * tree-ssa-uncprop.c: Update tree_pass descriptors.
2575         * auto-inc-dec.c: Update tree_pass descriptors.
2576         * reorg.c: Update tree_pass descriptors.
2577         * cgraphunit.c: Update tree_pass descriptors.
2578         * tree-ssa-copyrename.c: Update tree_pass descriptors.
2579         * tree-ssa-ccp.c: Update tree_pass descriptors.
2580         * df-core.c: Update tree_pass descriptors.
2581         * mode-switching.c: Update tree_pass descriptors.
2582         * tree-nomudflap.c: Update tree_pass descriptors.
2583         * modulo-sched.c: Update tree_pass descriptors.
2584         * ipa-pure-const.c: Update tree_pass descriptors.
2585         * cse.c: Update tree_pass descriptors.
2586         * web.c: Update tree_pass descriptors.
2587         * tree-stdarg.c: Update tree_pass descriptors.
2588         * tree-ssa-math-opts.c: Update tree_pass descriptors.
2589         * tree-ssa-dom.c: Update tree_pass descriptors.
2590         * tree-nrv.c: Update tree_pass descriptors.
2591         * tree-ssa-alias.c: Update tree_pass descriptors.
2592         * loop-init.c: Update tree_pass descriptors.
2593         * gimple-low.c: Update tree_pass descriptors.
2594         * ipa-inline.c: Update tree_pass descriptors.
2595         * tree-ssa-sink.c: Update tree_pass descriptors.
2596         * global.c: Update tree_pass descriptors.
2597         * ifcvt.c: Update tree_pass descriptors.
2598         * jump.c: Update tree_pass descriptors.
2599         * predict.c: Update tree_pass descriptors.
2600         * tree-ssa-loop.c: Update tree_pass descriptors.
2601         * recog.c: Update tree_pass descriptors.
2602         * dse.c: Update tree_pass descriptors.
2603         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
2604         * tree-eh.c: Update tree_pass descriptors.
2605         * regmove.c: Update tree_pass descriptors.
2606         * local-alloc.c
2607         * function.c: Update tree_pass descriptors.
2608         * tree-vectorizer.c: Update tree_pass descriptors.
2609         * gcse.c: Update tree_pass descriptors.
2610         * ipa-type-escape.c: Update tree_pass descriptors.
2611         * tree-if-conv.c: Update tree_pass descriptors.
2612         * init-regs.c: Update tree_pass descriptors.
2613         * ipa.c: Update tree_pass descriptors.
2614         * tree-ssa-phiopt.c: Update tree_pass descriptors.
2615         * rtl-factoring.c: Update tree_pass descriptors.
2616         * lower-subreg.c: Update tree_pass descriptors.
2617         * bt-load.c: Update tree_pass descriptors.
2618         * tree-dfa.c: Update tree_pass descriptors.
2619         * except.c: Update tree_pass descriptors.
2620         * emit-rtl.c: Update tree_pass descriptors.
2621         * cfgexpand.c: Update tree_pass descriptors.
2622         * tree-cfgcleanup.c: Update tree_pass descriptors.
2623         * cfgcleanup.c: Update tree_pass descriptors.
2624         * tree-ssa-pre.c: Update tree_pass descriptors.
2625         * tree-sra.c: Update tree_pass descriptors.
2626         * tree-mudflap.c: Update tree_pass descriptors.
2627         * tree-ssa-copy.c: Update tree_pass descriptors.
2628         * cfglayout.c: Update tree_pass descriptors.
2629         * tree-ssa-forwprop.c: Update tree_pass descriptors.
2630         * tree-ssa-dce.c: Update tree_pass descriptors.
2631         * tree-ssa.c: Update tree_pass descriptors.
2632         * regclass.c: Update tree_pass descriptors.
2633         * integrate.c: Update tree_pass descriptors.
2634         * tree-optimize.c: Update tree_pass descriptors.
2635         * tree-ssa-phiprop.c: Update tree_pass descriptors.
2636         * tree-object-size.c: Update tree_pass descriptors.
2637         * combine.c: Update tree_pass descriptors.
2638         * tree-outof-ssa.c: Update tree_pass descriptors.
2639         * bb-reorder.c: Update tree_pass descriptors.
2640         * stack-ptr-mod.c: Update tree_pass descriptors.
2641         * var-tracking.c: Update tree_pass descriptors.
2642         * tree-profile.c: Update tree_pass descriptors.
2643         * tree-vect-generic.c: Update tree_pass descriptors.
2644         * reg-stack.c: Update tree_pass descriptors.
2645         * sched-rgn.c: Update tree_pass descriptors.
2646         * tree-ssa-structalias.c: Update tree_pass descriptors.
2647         * tree-cfg.c: Update tree_pass descriptors.
2648         * passes.c (current_pass): Update declaration.
2649         (finish_optimization_passes): Update.
2650         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
2651         (register_one_dump_file, register_dump_files_1, next_pass_1):
2652         Update arguments.
2653         (init_optimization_passes): Update handling of new types.
2654         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
2655         * ipa-struct-reorg.c: Update tree_pass descriptors.
2656         * tree-ssa-reassoc.c: Update tree_pass descriptors.
2657         * combine-stack-adj.c: Update tree_pass descriptors.
2658         * cfgrtl.c: Update tree_pass descriptors.
2659         * dce.c: Update tree_pass descriptors.
2660         * tree-ssanames.c: Update tree_pass descriptors.
2662 2008-03-19  Richard Guenther  <rguenther@suse.de>
2664         PR middle-end/35609
2665         * tree-ssa.c (walk_data): New structure.
2666         (warn_uninitialized_var): If not always_executed warn with "maybe"
2667         instead of "is".
2668         (execute_early_warn_uninitialized): Compute post-dominators.
2669         Initialize always_executed before processing each basic block.
2671 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
2673         PR target/35504
2674         * config/i386/i386.c (x86_this_parameter): Calculate correct location
2675         of "this" pointer when "regparm = N" or "fastcall" is in effect.
2677 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2679         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
2681 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
2683         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
2684         is true.
2685         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
2686         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
2687         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
2688         target after ignore has been set, and move there also the commputation
2689         of subtarget and original_target.
2690         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
2691         (LANG_HOOKS_INITIALIZER): Remove it.
2692         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
2694 2008-03-18  Richard Guenther  <rguenther@suse.de>
2696         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
2697         found an expression with constants, note that in the VN for the lhs.
2698         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
2699         fold them to constants if possible.  Run cleanup_cfg if done so.
2700         (execute_pre): Return todo.
2701         (do_pre): Likewise.
2702         (execute_fre): Likewise.
2703         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
2704         of constants.
2705         (get_prop_source_stmt): Look through pointer conversions.
2707 2008-03-18  Jan Hubicka  <jh@suse.cz>
2709         * tree-pretty-print.c: Include predict.h.
2710         (dump_generic_node): Dump predictor.
2711         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
2712         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
2713         * gimple-low.c (lower_stmt): Likewise.
2714         * expr.c (expand_expr_real): Likewise.
2715         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
2716         them.
2717         (build_predict_expr, build_predict_expr): New.
2718         * predict.h (predictor_name, build_predict_expr): Update.
2719         * c-typeck.c (c_finish_bc_stmt): Add prediction.
2720         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
2721         * predict.def (PRED_CONTINUE): Update hitrate.
2722         * tree.def (PREDICT_EXPR): Define.
2723         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
2724         do not handle BIND_EXPR.
2725         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
2726         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
2727         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
2728         operands.
2730 2008-03-18  Michael Matz  <matz@suse.de>
2732         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
2734 2008-03-18  Richard Guenther  <rguenther@suse.de>
2736         * tree-gimple.h (is_gimple_invariant_address): Declare.
2737         (is_gimple_constant): Likewise.
2738         * tree-gimple.c (is_gimple_constant): New function.
2739         (is_gimple_invariant_address): Likewise.
2740         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
2741         and is_gimple_invariant_address.
2742         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
2743         previous change.
2744         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
2745         an addressable base.
2747 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
2749         PR middle-end/35611
2750         * gimplify.c (gimplify_expr): Gimplify second operand of
2751         OMP_ATOMIC_LOAD.
2753 2008-03-17  Richard Guenther  <rguenther@suse.de>
2755         PR tree-optimization/19637
2756         * fold-const.c (fold_unary): Remove restrictions of removing
2757         intermediate pointer-conversions (P2)(P1)P0.
2758         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
2759         conversion to void pointer.
2760         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
2762 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
2764         PR debug/31510
2765         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
2766         emulated thread local variables.
2768 2008-03-16  Richard Guenther  <rguenther@suse.de>
2770         PR middle-end/35607
2771         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
2772         expand TREE_INVARIANT operations that are not gimple invariant.
2774 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
2776         * doc/extend.texi (Alignment): Say that the ABI controls
2777         the __alignof__ for non-strict-alignment targets rather
2778         than being a recommendation.
2780 2008-03-15  Paul Brook  <paul@codesourcery.com>
2782         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
2783         annotations.
2784         (arm_output_fn_unwind): Mark functions that can not be unwound.
2786 2008-03-15  Paul Brook  <paul@codesourcery.com>
2788         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
2789         extension instructions.
2791 2008-03-15  Richard Guenther  <rguenther@suse.de>
2793         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
2794         and fold constant aggregate refs.
2795         (fold_const_aggregate_ref): Handle string constants
2796         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
2797         (evaluate_stmt): Simplify now that ccp_fold folds constant
2798         aggregate refs.
2800 2008-03-15  Paul Brook  <paul@codesourcery.com>
2802         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
2803         (extzv): Use gen_extzv_t2.
2804         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
2806 2008-03-15  Richard Guenther  <rguenther@suse.de>
2808         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
2809         (fold_const_aggregate_ref): Likewise.
2810         (get_value): Return NULL if we don't have any values.
2811         (ccp_finalize): Set const_val to NULL after freeing it.
2812         * tree-flow.h (get_symbol_constant_value): Declare.
2813         (fold_const_aggregate_ref): Likewise.
2814         * tree-ssa-sccvn.c (try_to_simplify): Use them.
2816 2008-03-15  Richard Guenther  <rguenther@suse.de>
2818         PR middle-end/35593
2819         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
2820         to not produce negative array indices if not allowed.  Add
2821         parameter to indicate that.
2822         (maybe_fold_offset_to_component_ref): Allow negative array
2823         indices only for the first member of a structure.
2824         (maybe_fold_offset_to_reference): Allow negative array indices.
2825         (maybe_fold_stmt_addition): Likewise.
2827 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
2828             Anatoly Sokolov <aesok@post.ru>
2830         * gcc/gcc/config/avr/avr.c (avr_arch_types): Add avr6 entry.
2831         (avr_arch): Add ARCH_AVR6.
2832         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
2833         (initial_elimination_offset): Initialize and use 'avr_pc_size' 
2834         instead of fixed value 2.
2835         (print_operand_address): Use gs() asm specifier instead of pm().
2836         (avr_assemble_integer): (Ditto.).
2837         (avr_output_addr_vec_elt): (Ditto.).
2838         (print_operand): Handle "!" code.
2839         * gcc/gcc/config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add 
2840         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
2841         (AVR_HAVE_EIJMP_EICALL): Define.
2842         (AVR_3_BYTE_PC): Redefine.
2843         (AVR_2_BYTE_PC): (Ditto.).
2844         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
2845         (LINK_SPEC): Add atmega2560 and atmega2561.
2846         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561 
2847         (crtm2561.o).
2848         * gcc/gcc/config/avr/avr.md (call_insn): Use eicall instead of icall 
2849         for 3 byte PC devices.
2850         (call_value_insn): (Ditto.).
2851         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
2852         (indirect_jump): Use only for for 2 byte PC devices.
2853         (*tablejump): (Ditto.).
2854         (*indirect_jump_avr6): Add insn.
2855         (*tablejump_rjmp): Don't use for 3 byte PC devices.
2856         * gcc/gcc/config/avr/libgcc.S (__prologue_saves__): Use eijmp 
2857         instead of ijmp for 3 byte PC devices.
2858         (__tablejump2__): (Ditto.).
2859         * gcc/gcc/config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
2860         (MULITLIB_DIRNAMES): (Ditto.). 
2861         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
2863 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
2865         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
2866         "sse2_umulsidi3".  Use V1DI mode for operand 0.
2867         ("mmx_psadbw"): Use V1DI mode for operand 0.
2868         * config/i386/i386-modes.def (V1SI): New vector mode.
2869         * config/i386/i386.c (struct builtin_description)
2870         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
2871         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
2872         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
2873         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
2874         v1di_ftype_v8qi_v8qi type.
2875         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
2877         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
2878         __builtin_ia32_pmuludq]: Fix the mode of return value.
2880 2008-03-15  Richard Guenther  <rguenther@suse.de>
2882         PR middle-end/35595
2883         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
2884         being a PHI_NODE.
2886 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
2887         
2888         * doc/invoke.texi (Option Summary, Xtensa Options): Document
2889         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
2890         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
2891         unless TARGET_SERIALIZE_VOLATILE is enabled.
2892         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
2893         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
2894         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
2896 2008-03-14  Richard Guenther  <rguenther@suse.de>
2898         PR tree-optimization/34172
2899         * tree-flow.h (refs_may_alias_p): Declare.
2900         (get_single_def_stmt): Likewise.
2901         (get_single_def_stmt_from_phi): Likewise.
2902         (get_single_def_stmt_with_phi): Likewise.
2903         * tree-dfa.c (refs_may_alias_p): New function.
2904         (get_single_def_stmt): Likewise.
2905         (get_single_def_stmt_from_phi): Likewise.
2906         (get_single_def_stmt_with_phi): Likewise.
2907         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
2908         (vn_reference_lookup_1): New helper function.
2909         (vn_reference_lookup): Walk the virtual use-def chain to
2910         continue searching for a match if the def does not alias the
2911         reference we are looking for.
2913 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
2915         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
2916         archive and Perzl.  Update The Written Word listing.
2918 2008-03-14  Richard Guenther  <rguenther@suse.de>
2920         PR tree-optimization/34043
2921         PR tree-optimization/33989
2922         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
2923         when doing FRE.
2924         (bitmap_find_leader): Use extra argument to verify dominance
2925         relationship inside a basic-block.
2926         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
2927         (find_leader_in_sets): Adjust.
2928         (create_component_ref_by_pieces): Take extra argument for
2929         dominance check, handle lookup failures.
2930         (find_or_generate_expression): Likewise.
2931         (create_expression_by_pieces): Likewise.
2932         (insert_into_preds_of_block): Adjust.
2933         (create_value_expr_from): If asked for, verify all operands
2934         are in the blocks AVAIL_OUT set.
2935         (make_values_for_stmt): Check for SSA_NAMEs that are life
2936         over an abnormal edge.
2937         (compute_avail): Remove such check.
2938         (do_SCCVN_insertion): New function.
2939         (eliminate): If we do not find a leader suitable for replacement
2940         insert a replacement expression from SCCVN if available.
2941         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
2942         (struct vn_ssa_aux): Add needs_insertion flag.
2943         * tree-ssa-sccvn.c (may_insert): New global flag.
2944         (copy_reference_ops_from_ref): Value-number union member access
2945         based on its size, not type and member if insertion is allowed.
2946         (visit_reference_op_load): For a weak match from union type
2947         punning lookup a view-converted value and insert a SSA_NAME
2948         for that value if that is not found.
2949         (visit_use): Make dumps shorter.  Do not disallow value numbering
2950         SSA_NAMEs that are life over an abnormal edge to constants.
2951         (free_scc_vn): Release inserted SSA_NAMEs.
2952         (run_scc_vn): New flag to specify whether insertion is allowed.
2953         Process SSA_NAMEs in forward order.
2954         * tree-ssa-loop-im.c (for_each_index): Handle invariant
2955         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
2956         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
2957         pointer type to/from integral types that do not change the
2958         precision to regular conversions.
2960 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
2962         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
2963         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
2964         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
2965         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
2966         input arguments and the mode of return value.  Built-in functions
2967         that operate on whole 64-bit MMX register now use V1DI mode.
2969 2008-03-13  Alon Dayan  <alond@il.ibm.com>
2970             Olga Golovanevsky  <olga@il.ibm.com>
2972         PR tree-optimization/35041
2973         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
2974         to locate the right position in a statement.
2976 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
2978         PR target/34000
2979         PR target/35553
2980         * config/i386/xmmintrin.h:  Change all static inline functions to
2981         extern inline and add __gnu_inline__ attribute.
2982         * config/i386/bmintrin.h: Ditto.
2983         * config/i386/smmintrin.h: Ditto.
2984         * config/i386/tmmintrin.h: Ditto.
2985         * config/i386/mmintrin-common.h: Ditto.
2986         * config/i386/ammintrin.h: Ditto.
2987         * config/i386/emmintrin.h: Ditto.
2988         * config/i386/pmmintrin.h: Ditto.
2989         * config/i386/mmintrin.h: Ditto.
2990         * config/i386/mm3dnow.h: Ditto.
2992 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
2994         PR middle-end/35185
2995         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
2996         (lower_omp_2): New function.
2997         (lower_omp_1, lower_omp): Rewritten.
2999 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
3001         PR 35054
3002         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
3003         with the phrase "Microsoft Windows compilers".
3004         (Push/Pop Macro Pragmas): New subsection. Document
3005         #pragma push_macro and pragma pop_macro.
3007 2008-03-12  Paul Brook  <paul@codesourcery.com>
3009         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
3011 2008-03-12  Paul Brook  <paul@codesourcery.com>
3013         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
3014         (thumb2_alusi3_short): Exclude PLUS and MINUS.
3015         (thumb2_addsi_shortim): Rename ...
3016         (thumb2_addsi_short): ... to this.  Allow register operands.
3017         (thumb2_subsi_short): New pattern.
3018         (thumb2_one_cmplsi2_short,
3019         thumb2_negsi2_short): New patterns and peepholes.
3021 2008-03-12  Paul Brook  <paul@codesourcery.com>
3023         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
3025 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
3027         * config/i386/i386.md (int_cond): New code iterator.
3028         (fp_cond): Ditto.
3029         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
3030         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
3031         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
3032         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
3033         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
3034         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
3035         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
3036         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
3038 2008-03-12  Paul Brook  <paul@codesourcery.com>
3040         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
3041         instead of {arm,thumb}_compute_save_reg_mask.
3042         (output_return_instruction): Ditto.
3043         (thumb_unexpanded_epilogue): Ditto.
3044         (thumb1_expand_prologue): Ditto.
3045         (thumb1_output_function_prologue): Ditto.
3046         (arm_set_return_address): Ditto.
3047         (thumb_set_return_address): Ditto.
3048         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
3049         regs to achieve stack alignment.
3050         (thumb1_compute_save_reg_mask): Fix compiler warning.
3051         (arm_output_epilogue): Use offsets->saved_regs_mask.
3052         Adjust stack pointer by poping call clobered registers.
3053         (arm_expand_prologue): Use offsets->saved_regs_mask.
3054         Adjust stack pointer by pushing extra registers.
3055         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
3057 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
3059         PR tree-opt/35422
3060         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
3061         conversion to the operands of a multiplication.
3063 2008-03-12  Richard Guenther  <rguenther@suse.de>
3065         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
3066         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
3067         * timevar.def (TV_TREE_PHIPROP): Add.
3068         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
3069         pass description.  Use TV_TREE_PHIPROP.
3070         * tree-ssa-forwprop.c: Remove phiprop code.
3072 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
3074         PR middle-end/35549
3075         * omp-low.c (maybe_lookup_decl): Constify first argument.
3076         (use_pointer_for_field): Change last argument from bool to
3077         omp_context *.  Disallow shared copy-in/out in nested
3078         parallel if decl is shared in outer parallel too.
3079         (build_outer_var_ref, scan_sharing_clauses,
3080         lower_rec_input_clauses, lower_copyprivate_clauses,
3081         lower_send_clauses, lower_send_shared_vars): Adjust callers.
3083 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
3084             Ira Rosen  <irar@il.ibm.com>
3086         * tree-vectorizer.c (free_stmt_vec_info): New function.
3087         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
3088         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
3089         * tree-vectorizer.h (free_stmt_vec_info): Declare.
3090         * tree-vect-transform.c (vectorizable_conversion): Free
3091         vec_oprnds0 if it was allocated.
3092         (vect_permute_store_chain): Remove unused VECs.
3093         (vectorizable_store): Free VECs that are allocated in the..
3094         function.
3095         (vect_transform_strided_load, vectorizable_load): Likewise.
3096         (vect_remove_stores): Simplify the code.
3097         (vect_transform_loop): Move code to vect_remove_stores().
3098         Call vect_remove_stores() and free_stmt_vec_info().
3100 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3102         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
3103         TARGET_HPUX.  Revise comment.
3104         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
3105         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
3106         Use sr4 variant of `be' instruction when not generating PIC code.
3107         (attr_length_call): Adjust for above change.
3109 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3111         * ipa-reference.c (static_execute): Remove module_statics_const and
3112         associated setting code.
3114 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
3116         PR target/35540
3117         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
3118         predicate for operand 1.
3119         (paritysi2_cmp): Use register_operand predicate for operand 2.
3120         Use earlyclobber modifier for operand 1.  Remove support for
3121         memory operands.
3122         (paritydi2_cmp): Use register_operand predicate for operand 3.
3123         Use earlyclobber modifier for operand 1.  Remove support for
3124         memory operands.
3126 2008-03-11  Paul Brook  <paul@codesourcery.com>
3127             Vladimir Prus  <vladimir@codesourcery.com>
3129         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
3130         (arm_compute_save_reg0_reg12_mask): Always
3131         check if register 11 must be saved.  Always safe hard frame pointer
3132         when frame_pointer_needeed.
3133         (arm_compute_save_reg_mask): Save IP and PC
3134         only with apcs frames.
3135         (arm_output_epilogue): Adjust Thumb2 codepath to
3136         be also invoked and work for ARM non-apcs frames.
3137         (arm_expand_prologue): Don't bother saving IP
3138         for non-apcs frame, since it's not clobbered by
3139         prologue code.  Implement non-apcs frame
3140         layout.
3142 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
3144         PR rtl-optimization/35281
3145         * expr.c (convert_move): Use a new pseudo for the intermediate
3146         from_mode->word_mode result.
3148 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
3150         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
3151         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
3152         * toplev.c (compile_file): Don't call it.
3154 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
3156         PR middle-end/35526
3157         * expr.c (store_expr): Call emit_block_move if the mode
3158         of "temp" RTX is BLKmode.
3160 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3161             Richard Guenther  <rguenther@suse.de>
3163         PR tree-optimization/31358
3164         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
3165         the step with a NULL_TREE.
3166         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
3167         to sizetype if type is a pointer type.
3168         (add_candidate_1): Don't convert the base and step to
3169         the generic type if the orginal type is a pointer type.
3170         (add_iv_value_candidates): Use sizetype for the step
3171         if type is a pointer type.
3172         (cand_value_at): Likewise.
3173         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
3174         for pointer types.
3175         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
3176         Don't convert the tem affine to the type.
3177         (add_elt_to_tree): Use sizetype for the step if a pointer.
3178         Use POINTER_PLUS_EXPR for pointers.
3179         (aff_combination_to_tree): Use sizetype for the step if a
3180         pointer.
3182 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
3184         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
3185         Remove commutativity hint.
3187 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
3189         PR c/35438
3190         PR c/35439
3191         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
3192         errorneous type.  Check that v is a VAR_DECL.
3194         PR middle-end/35099
3195         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
3197 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
3199         PR tree-optimization/35494
3200         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
3201         may be overriden at link and run time.
3203 2008-03-10  Richard Guenther  <rguenther@suse.de>
3205         PR tree-optimization/34677
3206         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
3207         (poolify_tree): Likewise.
3208         (modify_expr_template): Likewise.
3209         (poolify_modify_stmt): Likewise.
3210         (insert_fake_stores): Handle all component-ref style stores
3211         in addition to INDIRECT_REF.  Also handle complex types.
3212         Do not poolify the inserted load.
3213         (realify_fake_stores): Do not rebuild the tree but only
3214         make it a SSA_NAME copy.
3215         (init_pre): Remove initialzation of modify_expr_template.
3216         Do not allocate modify_expr_node_pool.
3217         (fini_pre): Do not free modify_expr_node_pool.
3219 2008-03-10  Paul Brook  <paul@codesourcery.com>
3221         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
3222         to avoid conflicts.
3224 2008-03-10  Paul Brook  <paul@codesourcery.com>
3225             Mark Shinwell  <shinwell@codesourcery.com>
3227         * config/arm/cortex-r4.md: New.
3228         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
3229         insn attributes.
3230         * config/arm/arm.md: Include cortex-r4.md.
3231         (insn): Add smmls, sdiv and udiv values.
3232         (generic_sched): Don't use generic scheduling for Cortex-R4.
3233         (arm_issue_rate): New function.
3234         (TARGET_SCHED_ISSUE_RATE): Define.
3236 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
3238         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
3240 2008-03-10  Richard Guenther  <rguenther@suse.de>
3242         * tree-ssa-pre.c (get_sccvn_value): Simplify.
3243         (compute_avail): Do not add stmt uses to AVAIL_OUT.
3245 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
3247         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
3248         Set default to true.
3250 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3252         * c.opt (Wsynth): Deprecate.
3253         * doc/invoke.texi (Option Summary, Warning Options): Document
3254         -Wno-format-contains-nul.
3256 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
3258         PR target/35496
3259         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
3260         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
3262 2008-03-09  Ira Rosen  <irar@il.ibm.com>
3264         * config/rs6000/rs6000.c (builtin_description): Rename vector
3265         left shift operations.
3266         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
3267         (altivec_vsl<VI_char>): Rename to ...
3268         (ashl<mode>3): ... new name.
3269         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
3270         gen_ashlv4si3.
3271         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
3273 2008-03-08  Richard Guenther  <rguenther@suse.de>
3275         * coverage.h (tree_coverage_counter_addr): Declare.
3276         * coverage.c (tree_coverage_counter_addr): New function.
3277         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
3278         before using again.
3279         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
3280         (tree_gen_one_value_profiler): Likewise.
3281         (tree_gen_ic_profiler): Likewise.
3282         (tree_gen_average_profiler): Likewise.
3283         (tree_gen_ior_profiler): Likewise.
3285 2008-03-08  Richard Guenther  <rguenther@suse.de>
3287         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
3288         (vn_binary_op_insert): Likewise.
3289         (vn_unary_op_lookup): Likewise.
3290         (vn_unary_op_insert): Likewise.
3291         (vn_nary_op_lookup): Declare.
3292         (vn_nary_op_insert): Likewise.
3293         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
3294         and binary hashes, use a single obstack for unary_op_pool
3295         and binary_op_pool.
3296         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
3297         a single struct vn_nary_op_s.  Store tree code length and
3298         a variable number of operands.
3299         (struct vn_reference_op_struct): Remove unused op2.
3300         (vn_reference_op_eq): Do not compare op2.
3301         (vn_reference_op_compute_hash): Do not compute hash of op2.
3302         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
3303         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
3304         with vn_nary_op_compute_hash.
3305         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
3306         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
3307         vn_nary_op_lookup.
3308         (vn_unary_op_insert, vn_binary_op_insert): Replace with
3309         vn_nary_op_insert.
3310         (visit_unary_op): Call nary functions.
3311         (visit_binary_op): Likewise.
3312         (process_scc): Adjust for struct vn_tables_s changes.
3313         (allocate_vn_table): Likewise.
3314         (free_vn_table): Likewise.
3315         * tree-vn.c (vn_add): Call nary functions.
3316         (vn_lookup): Likewise.
3318 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
3320         PR target/35498
3321         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
3322         wdst back after sync_compare_and_swapqhi_internal.
3324 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
3326         PR target/22152
3327         * config/i386/i386-modes.def (V1DI): New vector mode.
3328         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
3329         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
3330         (MMXMODE248): Ditto.
3331         (MMXMODE): Add V1DI mode.
3332         (mmxvecsize): Change DI mode to V1DI mode.
3333         ("mov<mode>): Use MMXMODEI8 mode iterator.
3334         ("*mov<mode>_internal_rex64"): Ditto.
3335         ("*mov<mode>_internal"): Ditto.
3336         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
3337         ("mmx_sub<mode>3"): Ditto.
3338         ("mmx_adddi3"): Remove insn pattern.
3339         ("mmx_subdi3"): Ditto.
3340         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
3341         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
3342         ("mmx_ashl<mode>3"): Ditto.
3343         ("mmx_lshrdi3"): Remove insn pattern.
3344         ("mmx_ashldi3"): Ditto.
3345         * config/i386/i386.c (classify_argument): Handle V1DImode.
3346         (function_arg_advance_32): Ditto.
3347         (function_arg_32): Ditto.
3348         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
3349         mmx_addv1di3 insn pattern.
3350         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
3351         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
3352         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
3353         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
3354         Remove definitions of built-in functions.
3355         (V1DI_type_node): New node.
3356         (v1di_ftype_v1di_int): Ditto.
3357         (v1di_ftype_v1di_v1di): Ditto.
3358         (v2si_ftype_v2si_si): Ditto.
3359         (v4hi_ftype_v4hi_di): Remove node.
3360         (v2si_ftype_v2si_di): Ditto.
3361         (ix86_init_mmx_sse_builtins): Handle V1DImode.
3362         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
3363         Redefine builtins using def_builtin_const with *_ftype_*_int node.
3364         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
3365         Add new builtins using def_builtin_const.
3366         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
3367         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
3368         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
3369         * config/i386/mmintrin.h (__v1di): New typedef.
3370         (_mm_add_si64): Cast arguments to __v1di type.
3371         (_mm_sub_si64): Ditto.
3372         (_mm_sll_pi16): Cast __count to __v4hi type.
3373         (_mm_sll_pi32): Cast __count to __v2si type.
3374         (_mm_sll_si64): Cast arguments to __v1di type.
3375         (_mm_srl_pi16): Cast __count to __v4hi type.
3376         (_mm_srl_pi32): Cast __count to __v2si type.
3377         (_mm_srl_si64): Cast arguments to __v1di type.
3378         (_mm_sra_pi16): Cast __count to __v4hi type.
3379         (_mm_sra_pi32): Cast __count to __v2si type.
3380         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
3381         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
3382         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
3383         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
3384         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
3385         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
3386         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
3387         (_mm_srai_pi32): Use __builtin_ia32_psradi.
3388         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
3389         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
3390         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
3391         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
3393 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
3395         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
3397 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
3399         PR target/35373
3400         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
3401         reg+const addressing for Altivec modes.  Don't generate reg+reg
3402         addressing for TFmode or TDmode quantities.
3404 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
3406         * c-common.c (vector_types_convertible_p): Call langhook
3407         instead of comptypes.
3409 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3411         PR tree-opt/35402
3412         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
3413         integral and scalar float variables which have a
3414         NULL DECL_INITIAL.
3416 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
3418         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
3419         dwarf_register_span hook when emitting unwind information for
3420         register-to-memory saves.
3421         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
3422         (rs6000_frame_related): Remove call to spe_synthesize_frame.
3424 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
3426         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
3427         for the same VAR_DECL.
3429 2008-03-06  Tom Tromey  <tromey@redhat.com>
3431         * treelang: Delete.
3432         * doc/standards.texi (Standards): Don't mention treelang.
3433         * doc/invoke.texi (Overall Options): Don't mention treelang.
3434         * doc/install.texi (Prerequisites): Don't mention bison or
3435         treelang.
3436         (Configuration): Don't mention treelang.
3437         (Building): Likewise.
3438         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
3440 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
3442         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
3443         word-extractions out of a multi-word object.
3445 2008-03-06  Richard Guenther  <rguenther@suse.de>
3447         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
3448         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
3449         result type and precision.
3450         * expr.c (get_inner_reference): Set unsignedp based on the result
3451         type of BIT_FIELD_REF.
3452         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
3453         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
3454         (try_instantiate_multiple_fields): Likewise.  Use the correct type
3455         for BIT_FIELD_REF.
3456         (sra_build_assignment): Likewise.
3457         (sra_build_elt_assignment): Likewise.
3458         (sra_explode_bitfield_assignment): Likewise.
3459         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
3460         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
3461         set BIT_FIELD_REF_UNSIGNED.
3462         (vectorizable_load): Likewise.
3464 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
3466         * cse.c (cse_extended_basic_block): Invalidate artificial defs
3467         at bb start.
3469 2008-03-06  Richard Guenther  <rguenther@suse.de>
3471         * alias.c (struct alias_set_entry): Move has_zero_child field
3472         to pack with alias_set.
3474 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
3476         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
3477         32bit host.
3479 2008-03-05  Ian Lance Taylor  <iant@google.com>
3481         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
3483 2008-03-05  Kenneth Zadeck <zadeck@naturalbridge.com>
3485         * fwprop.c (update_df): Support width and offset parameters of
3486         df_ref_create.
3487         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
3488         global_conflicts): Change DF_REF_EXTRACT to either
3489         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
3490         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
3491         * df-scan.c (df_ref_record, df_defs_record,
3492         df_ref_create_structure, df_def_record_1, df_uses_record,
3493         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
3494         df_bb_refs_collect, df_entry_block_defs_collect,
3495         df_exit_block_uses_collect): Support new width and offset fields.
3496         (ref_extract_pool): New storage pool.
3497         (df_free_ref): New function.
3498         (df_reg_chain_unlink, df_free_collection_rec,
3499         df_sort_and_compress_refs): Call df_free_ref.
3500         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
3501         of df_ref_extract.
3502         (df_ref_create_structure): Allocate df_ref_extract if offset and
3503         width fields are used.
3504         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
3505         (df_uses_record): Get offset and width from ZERO_EXTRACT 
3506         and SIGN_EXTRACT.
3507         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
3508         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
3509         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
3510         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
3511         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
3512         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
3513         (df_ref_extract): New structure.
3514         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
3515         (df_ref_create): Add width and offset parameters.
3516         
3517 2008-03-05  Richard Guenther  <rguenther@suse.de>
3519         * tree-ssa-structalias.c (get_constraint_for_component_ref):
3520         Use ranges_overlap_p.
3521         (offset_overlaps_with_access): Rename
3522         to ranges_overlap_p and move ...
3523         * tree-flow-inline.h (ranges_overlap_p): ... here.
3525         * tree.h (get_inner_reference, handled_component_p): Update
3526         comments.
3528         * tree.h (record_component_aliases, get_alias_set,
3529         alias_sets_conflict_p, alias_sets_must_conflict_p,
3530         objects_must_conflict_p): Move declarations ...
3531         * alias.h (record_component_aliases, get_alias_set,
3532         alias_sets_conflict_p, alias_sets_must_conflict_p,
3533         objects_must_conflict_p): ... here.
3534         Include coretypes.h.
3535         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
3537 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
3539         * cfg.c: Include tree-flow.h.
3540         (remove_edge_raw): Call redirect_edge_var_map_clear.
3541         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
3542         * tree-flow-inline.h (redirect_edge_var_map_def): New.
3543         (redirect_edge_var_map_result): New.
3544         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
3545         PENDING_STMT use with redirect_edge_var_map_*.
3546         * tree-ssa.c (edge_var_maps): New definition.
3547         (redirect_edge_var_map_add): New.
3548         (redirect_edge_var_map_clear): New.
3549         (redirect_edge_var_map_dup): New.
3550         (redirect_edge_var_map_vector): New.
3551         (redirect_edge_var_map_destroy): New.
3552         (ssa_redirect_edge): Replace PENDING_STMT use with
3553         redirect_edge_var_map_*.
3554         (flush_pending_stmts): Same.
3555         (delete_tree_ssa): Destroy edge var map.
3556         * tree-flow.h (struct _edge_var_map): New.
3557         Define edge_var_map vector type.
3558         Declare redirect_edge_var_map_* prototypes.
3559         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
3560         * tree-cfg.c (reinstall_phi_args): Replace
3561         PENDING_STMT use with redirect_edge_var_map_*.
3563 2008-03-05  Richard Guenther  <rguenther@suse.de>
3565         PR tree-optimization/35472
3566         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
3567         whose single use_stmt has a overlapping set of loaded and
3568         stored symbols as that use_stmt might be a noop assignment then.
3570 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
3572         * gthr-rtems.h: Implement __gthread_mutex_destroy.
3574 2008-03-05  Richard Guenther  <rguenther@suse.de>
3576         PR c++/35336
3577         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
3578         should be constants.
3579         * tree-cfg.c (verify_expr): Verify it.
3580         * fold-const.c (fold_truthop): Remove code generating
3581         BIT_FIELD_REFs of structure bases.
3582         (fold_binary): Likewise.
3583         (fold_ternary): Position and size of BIT_FIELD_REFs are
3584         always host integers.
3585         (make_bit_field_ref): Remove.
3586         (optimize_bit_field_compare): Remove.
3587         (all_ones_mask_p): Remove.
3589 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
3591         PR gcc/33009
3592         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
3593         (split_block_and_df_analyze): New. Split basic block and rebuild
3594         dataflow.
3595         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
3596         SPLIT_BLOCK.
3597         (split_pattern_seq): Likewise.
3598         (erase_matching_seqs): Likewise.
3599         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
3601 2008-03-04  Geoff Keating  <geoffk@apple.com>
3603         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
3604         declaration and code.
3605         (tree_invalid_nonnegative_warnv_p): Likewise.
3607 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
3609         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
3610         examples.  Truncate option-names then causing overfull hbox.
3612 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3614         PR target/35222
3615         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
3616         on hpux10.
3617         * configure: Rebuilt.
3619 2008-03-04  Rafael Espindola  <espindola@google.com>
3621         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
3622         (tree_unary_nonnegative_warnv_p): New.
3623         (tree_binary_nonnegative_warnv_p): New.
3624         (tree_single_nonnegative_warnv_p): New.
3625         (tree_invalid_nonnegative_warnv_p): New.
3626         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
3628 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3630         PR 28322
3631         * opts.c (handle_option): Postpone 'unknown option' errors only for
3632         warning options.
3634 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
3636         PR target/35453
3637         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
3638         (_SIDD_XXX): This.
3640 2008-03-04  Rafael Espindola  <espindola@google.com>
3642         * fold-const.c (tree_unary_nonzero_warnv_p): New.
3643         (tree_binary_nonzero_warnv_p): New.
3644         (tree_single_nonzero_warnv_p): New.
3645         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
3647 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
3649         PR middle-end/35456
3650         * fold-const.c (fold_cond_expr_with_comparison): Prevent
3651         transformations for modes that have signed zeros.
3652         * ifcvt.c (noce_try_abs): Ditto.
3654 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
3656         * config/i386/i386.c (override_options): Force
3657         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
3659 2008-03-04  Jan Hubicka  <jh@suse.cz>
3661         PR c++/35262
3662         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
3663         in last commit.
3665 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
3667         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
3668         label to probe the stack.
3670 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
3672         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
3673         (__gthr_win32_mutex_destroy): Declare.
3674         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
3675         __gthr_win32_mutex_destroy.
3676         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
3678 2008-03-03  Jan Hubicka  <jh@suse.cz>
3680         PR c++/35262
3681         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
3682         aggressive on inlining cold calls.
3684 2008-03-03  Richard Guenther  <rguenther@suse.de>
3686         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
3687         struct copies into the expression table.
3688         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
3689         (try_to_simplify): Likewise.
3690         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
3691         integral and pointer arguments which do not change the
3692         precision to NOP_EXPRs.
3693         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
3694         VIEW_CONVERT_EXPR case.
3696 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
3698         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
3699         defined in a loop at depth 0 is invariant.
3700         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
3701         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
3702         be called at loop depth 0.
3704 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
3706         PR driver/35420
3707         * gcc.c (process_command): Update copyright notice dates.
3708         * gcov.c (print_version): Likewise.
3709         * gcov-dump.c (print_version): Likewise.
3710         * mips-tfile.c (main): Likewise.
3711         * mips-tdump.c (main): Likewise.
3713 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3715         PR 24924
3716         * c-common.c (flag_permissive): Delete.
3717         (constant_expression_warnings): Check flags first.
3718         (constant_expression_error): New.
3719         * c-common.h (flag_permissive): Delete.
3720         (constant_expression_error): Declare.
3721         * flags.h (flag_permissive): Declare. Update description.
3722         * diagnostic.c (pedwarn): Update.
3723         (permerror): New.
3724         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
3725         (permissive_error_kind): New.
3726         * toplev.c (flag_permissive): Define. Update description.
3727         * toplev.h (permissive_error_kind): Declare.
3728         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
3729         (pedwarn_c90): Use pedantic_warning_kind.
3730         * c-opts.c (c_common_post_options): flag_permissive does not affect
3731         flag_pedantic_errors.
3733 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
3735         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
3736         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
3737         __absvsi2, __absvDI2): Use unsigned arithmetic.
3739 2008-03-02  Andi Kleen  <ak@suse.de>
3740             Richard Guenther  <rguenther@suse.de>
3742         * struct-equiv.c: Remove file.
3743         * cfg_cleanup.c (condjump_equiv_p): Remove.
3744         * Makefile.in (OBJS-common): Remove struct-equiv.o.
3745         (struct-equiv.o): Remove rule.
3746         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
3747         insns_match_p, struct_equiv_block_eq, struct_equiv_init, 
3748         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
3750 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
3752         * ifcvt.c (noce_process_if_block): Try to handle only the then
3753         block if the else block exists but isn't suitable.
3755 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
3757         PR gcc/35063
3758         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
3759         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
3760         regression from previous patch.
3762 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
3764         PR gcc/35063
3765         * gthr.h: Add __gthread_mutex_destroy as a function that must be
3766         implemented.
3767         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
3768         * gthr-single.h (__gthread_mutex_destroy): Likewise.
3769         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
3770         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
3771         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
3772         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
3773         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
3774         (__gthread_mutex_destroy_function): Rename to
3775         __gthread_mutex_destroy.
3776         * gthr-dce.h (__gthread_mutex_destroy): Call
3777         pthread_mutex_destroy.
3778         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
3779         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
3780         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
3782 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
3784         * df-scan.c (df_ref_chain_change_bb): Simplify.
3785         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
3786         set_block_for_insn if there's any change.
3787         * df.h ((df_insn_change_bb): Fix prototype.
3788         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
3789         df_insn_change_bb, don't call set_block_for_insn.
3790         * emit-rtl.c (reorder_insns): Likewise.
3791         * haifa-sched.c (move_insn): Likewise.
3793 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
3795         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
3797 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
3799         * tree-flow-inline.h (next_readonly_imm_use): Return
3800         NULL_USE_OPERAND_P after the end.
3802 2008-03-01  Richard Guenther  <rguenther@suse.de>
3804         PR tree-optimization/35411
3805         * tree-sra.c (sra_build_assignment): Split conversion to
3806         final type to a separate statement if we are not assigning
3807         to a register.
3809 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
3811         * fold-const.c (fold_convertible_p): Correct the logic to follow
3812         that in fold_convert().
3814 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
3816         PR c++/35315
3817         * tree-inline.c (build_duplicate_type): When we make a
3818         duplicate type, make it unique in the canonical types system.
3820 2008-02-29  Tom Tromey  <tromey@redhat.com>
3822         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
3823         input_file_stack_history, input_file_stack_restored): Remove.
3824         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
3825         * input.h (struct file_stack): Remove.
3826         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
3827         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
3828         Likewise.
3829         * diagnostic.h (struct diagnostic_context) <last_module>: Change
3830         type.
3831         (diagnostic_last_module_changed): Add 'map' argument.
3832         (diagnostic_set_last_function): Likewise.
3833         * diagnostic.c (undiagnostic_report_current_module): Iterate using
3834         line map, not input_file_stack.
3835         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
3837 2008-02-29  Paul Brook  <paul@codesourcery.com>
3839         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
3841 2008-02-29  Paul Brook  <paul@codesourcery.com>
3843         * config/arm/ieee754-df.S (muldf3): Use RET macros.
3845 2008-02-29  Richard Guenther  <rguenther@suse.de>
3847         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
3848         vn_lookup_or_add.
3849         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
3850         value for comparing for a store match.
3851         (simplify_unary_expression): Do nothing for SSA_NAMEs.
3852         (try_to_simplify): Do not do a full-blown reference lookup.
3854 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
3856         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
3857         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
3859         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
3861 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
3863         * tree-loop-linear.c (try_interchange_loops): Compare memory access
3864         strides against cache sizes.
3866 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
3868         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
3869         constant to fpul.
3871 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
3873         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
3874         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
3875         is smaller than the original promoted value.
3876         (simplify_subreg): If OP is a SUBREG, try to preserve its
3877         SUBREG_PROMOTED_VAR_P information.
3879 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
3881         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
3882         (VN_INFO_GET): Allocate new objects on the obstack.
3883         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
3884         for rpo_numbers_temp, for consistency.
3885         (free_scc_vn): Free the obstack.
3887 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
3889         * doc/invoke.texi: Document -ftree-loop-distribution.
3890         * tree-loop-distribution.c: New.
3891         * tree-pass.h (pass_loop_distribution): New.
3892         * graphds.h (struct graph): Add htab_t indices.
3893         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
3894         * tree-vectorizer.c (rename_variables_in_loop): Extern.
3895         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
3896         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
3897         * tree-data-ref.c (debug_data_dependence_relations): New.
3898         (dump_data_dependence_relation): Also print data references.
3899         (free_data_ref): Extern.
3900         (same_access_functions): Moved...
3901         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
3902         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
3903         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
3904         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
3905         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
3906         (stmts_from_loop): Skip LABEL_EXPR.
3907         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
3908         New.
3909         (build_rdg): Initialize rdg->indices htab.
3910         (free_rdg, stores_from_loop, ref_base_address,
3911         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
3912         have_similar_memory_accesses_1, ref_base_address_1,
3913         remove_similar_memory_refs): New.
3914         * tree-data-ref.h: Depend on tree-chrec.h.
3915         (debug_data_dependence_relations, free_data_ref): Declared.
3916         (same_access_functions): ... here.
3917         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
3918         New.
3919         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
3920         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
3921         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
3922         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
3923         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
3924         rdg_vertex_for_stmt): Declared.
3925         (struct rdg_edge): Add level.
3926         (RDGE_LEVEL): New.
3927         (free_rdg, stores_from_loop, remove_similar_memory_refs,
3928         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
3929         Declared.
3930         (rdg_has_similar_memory_accesses): New.
3931         * tree-vect-analyze.c: Remove unused static decls.
3932         * lambda.h (dependence_level): New.
3933         * common.opt (ftree-loop-distribution): New.
3934         * tree-flow.h (mark_virtual_ops_in_bb, 
3935         slpeel_tree_duplicate_loop_to_edge_cfg,
3936         rename_variables_in_loop): Declared.
3937         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
3938         (OBJS-common): Add tree-loop-distribution.o.
3939         (tree-loop-distribution.o): New rule.
3940         * tree-cfg.c (mark_virtual_ops_in_bb): New.
3941         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
3942         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
3944 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
3946         PR target/33963
3947         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
3948         other than structures and unions.
3950 2008-02-28  Richard Guenther  <rguenther@suse.de>
3952         Revert:
3953         2008-02-26  Richard Guenther  <rguenther@suse.de>
3955         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
3956         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
3957         (lookup_decl_from_uid): Declare.
3958         (remove_decl_from_map): Likewise.
3959         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
3960         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
3961         (decl_for_uid_map): New global hashtable mapping DECL_UID
3962         to the decl tree.
3963         (init_ttree): Allocate it.
3964         (insert_decl_to_uid_decl_map): New helper function.
3965         (make_node_stat): Insert new decls into the map.
3966         (copy_node_stat): Likewise.
3967         (lookup_decl_from_uid): New function.
3968         (remove_decl_from_map): Likewise.
3969         (print_decl_for_uid_map_statistics): New helper.
3970         (dump_tree_statistics): Call it.
3972         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
3973         (referenced_var_iterator): Adjust.
3974         (FOR_EACH_REFERENCED_VAR): Adjust.
3975         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
3976         (num_referenced_vars): Adjust.
3977         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
3978         (first_referenced_var): Remove.
3979         (end_referenced_vars_p): Likewise.
3980         (next_referenced_var): Likewise.
3981         (referenced_var_iterator_set): New helper function.
3982         * tree-dfa.c (referenced_var_lookup): Adjust.
3983         (referenced_var_check_and_insert): Likewise.
3984         (remove_referenced_var): Likewise.
3985         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
3986         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
3987         (verify_call_clobbering): Likewise.
3988         (verify_memory_partitions): Likewise.
3989         (init_tree_ssa): Allocate bitmap instead of hashtable for
3990         referenced_vars.
3991         (delete_tree_ssa): Adjust.
3992         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
3993         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
3994         (compute_tag_properties): Likewise.
3995         (set_initial_properties): Likewise.
3996         (find_partition_for): Likewise.
3997         (update_reference_counts): Likewise.
3998         (dump_may_aliases_for): Likewise.
3999         * tree-ssa-operands.c (add_virtual_operand): Likewise.
4000         (add_call_clobber_ops): Likewise.
4001         (add_call_read_ops): Likewise.
4002         (get_asm_expr_operands): Likewise.
4003         * tree-into-ssa.c (dump_decl_set): Likewise.
4004         (update_ssa): Likewise.
4005         * tree-sra.c (scan_function): Likewise.
4006         (decide_instantiations): Likewise.
4007         (scalarize_parms): Likewise.
4008         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
4009         (dsa_named_for): Likewise.
4010         * tree-ssa-structalias.c (update_alias_info): Likewise.
4011         (merge_smts_into): Likewise.
4013 2008-02-27  David Daney  <ddaney@avtrex.com>
4015         PR target/34409
4016         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
4017         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
4018         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
4019         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
4020         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
4022 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
4024         PR target/25477
4025         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
4026         (BUILT_IN_NEXTTOWARD): Remove.
4027         (BUILT_IN_NEXTTOWARDF): Ditto.
4028         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
4029         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
4031 2008-02-27  Tom Tromey  <tromey@redhat.com>
4033         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
4034         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
4036 2008-02-27  Jan Beulich  <jbeulich@novell.com>
4038         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
4039         update the respective field on newdecl.
4041 2008-02-27  Revital Eres  <eres@il.ibm.com>
4043         PR rtl-optimization/34999
4044         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
4045         crossing edges that ends with a call insn.
4046         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
4047         call insn and clear the EDGE_CROSSING flag of the crossing edge
4048         when fixing fallthru edges.
4050 2008-02-27  Richard Guenther  <rguenther@suse.de>
4052         PR middle-end/35390
4053         * fold-const.c (fold_unary): Return the correct argument,
4054         converted to the result type.
4056 2008-02-27  Richard Guenther  <rguenther@suse.de>
4058         PR middle-end/34971
4059         * expr.c (expand_expr_real_1): Assert on rotates that operate
4060         on partial modes.
4061         * fold-const.c (fold_binary): Use the types precision, not the
4062         bitsize of the mode if folding rotate expressions.  Build rotates
4063         only for full modes.
4065 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
4067         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
4068         and CPP_PRAGMA_EOL.
4069         * c-pragma.c (pragma_ns_name): New typedef.
4070         (registered_pp_pragmas): New variable.
4071         (c_pp_lookup_pragma): New function.
4072         (c_register_pragma_1): If flag_preprocess_only, do nothing
4073         for non-expanded pragmas, for expanded ones push pragma's
4074         namespace and name into registered_pp_pragmas vector.
4075         (c_invoke_pragma_handler): Register OpenMP pragmas even when
4076         flag_preprocess_only, don't register GCC pch_preprocess
4077         pragma if flag_preprocess_only.
4078         * c-opts.c (c_common_init): Call init_pragma even if
4079         flag_preprocess_only.
4080         * c-pragma.c (c_pp_lookup_pragma): New prototype.
4081         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
4082         cpp_register_pragma if flag_preprocess_only.
4084 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4086         PR c/28800
4087         * c-parser.c (c_parser_translation_unit): Warn for empty
4088         translation unit, not empty source file.
4090 2008-02-26  Paul Brook  <paul@codesourcery.com>
4092         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
4093         operand for Thumb-2.
4094         * config/arm/arm.h (reg_class): Add CORE_REGS.
4095         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
4096         (BASE_REG_CLASS): Use CORE_REGS.
4097         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
4098         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
4099         (REGNO_OK_FOR_INDEX_P): Exclude SP.
4100         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
4101         ARM_REGNO_OK_FOR_INDEX_P.
4102         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
4103         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
4104         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
4105         (ldm/stm peepholes): Ditto.
4106         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
4107         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
4108         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
4109         * config/arm/constraints.md: Enable "k" constraint on ARM.
4111 2008-02-27  Ben Elliston  <bje@au.ibm.com>
4113         * config/rs6000/rs6000.c: Annotate cache line size field in all
4114         instances of struct processor_costs.
4116 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
4118         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
4119         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
4120         jump_bypass): New counters.
4121         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
4122         * dce.c (gate_ud_dce): Same.
4123         (gate_fast_dce): Same.
4124         * dse.c (gate_dse1): New function.
4125         (gate_dse2): New function.
4126         (gate_dse): Merge results of new gate functions.
4127         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
4128         (gate_handle_jump_bypass): Add dbg_cnt.
4129         (gate_handle_gcse): Add dbg_cnt.
4130         * ifcvt.c (gate_handle_if_conversion): Same.
4131         (gate_handle_if_after_combine): Same.
4132         (gate_handle_if_after_reload): Same.
4133         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
4135 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
4137         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
4138         line sizes.
4139         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
4141 2008-02-26  Jason Merrill  <jason@redhat.com>
4143         PR c++/35315
4144         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE 
4145         alone if it's the naming decl for the type's main variant.
4147 2008-02-26  Tom Tromey  <tromey@redhat.com>
4149         * system.h (USE_MAPPED_LOCATION): Poison.
4150         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
4151         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
4152         (make_goto_expr_edges): Likewise.
4153         (remove_bb): Likewise.
4154         (execute_warn_function_return): Likewise.
4155         * basic-block.h (struct edge_def) <goto_locus>: Change type to
4156         location_t.
4157         * c-common.c (fname_decl): Remove old location code.
4158         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
4159         location code.
4160         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
4161         variant.
4162         (ASM_INPUT_SOURCE_LOCATION): Likewise.
4163         (gen_rtx_ASM_INPUT): Likewise.
4164         (gen_rtx_ASM_INPUT_loc): Likewise.
4165         (get_rtx_asm_OPERANDS): Remove.
4166         * cfglayout.c (insn_locators_alloc): Remove old location code.
4167         (set_curr_insn_source_location): Likewise.
4168         (curr_insn_locator): Likewise.
4169         * print-tree.c (print_node): Remove old location code.
4170         * tree-mudflap.c (mf_varname_tree): Remove old location code.
4171         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
4172         * cfgexpand.c (expand_gimple_cond_expr): Don't use
4173         location_from_locus.
4174         (construct_exit_block): Remove old location code.
4175         * emit-rtl.c (force_next_line_note): Remove old location code.
4176         * profile.c (branch_prob): Remove old location code.
4177         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
4178         LOC_LINE): Remove old-location variants.
4179         * langhooks.c (lhd_print_error_function): Remove old location
4180         code.
4181         * configure, config.in: Rebuilt.
4182         * configure.ac (--enable-mapped-location): Remove.
4183         * c-decl.c (c_init_decl_processing): Remove old location code.
4184         (finish_function): Likewise.
4185         * recog.c (decode_asm_operands): Remove old location code.
4186         * c-pch.c (c_common_read_pch): Remove old location code.
4187         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
4188         variants.
4189         * gimple-low.c (lower_function_body): Remove old location code.
4190         * toplev.c (unknown_location): Remove.
4191         (push_srcloc): Remove old-location variant.
4192         (process_options): Remove old location code.
4193         (lang_dependent_init): Likewise.
4194         * input.h (UNKNOWN_LOCATION): Move definition.
4195         (location_t): Undeprecate.
4196         (source_locus): Remove.
4197         (location_from_locus): Remove.
4198         (struct location_s): Remove.
4199         Remove all old-location code.
4200         (input_line, input_filename): Remove.
4201         * final.c (final_scan_insn): Remove old location code.
4202         * diagnostic.c (diagnostic_build_prefix): Remove
4203         USE_MAPPED_LOCATION test.
4204         * tree.h (gimple_stmt) <locus>: Now a location_t.
4205         (tree_exp) <locus>: Likewise.
4206         (DECL_IS_BUILTIN): Remove old-location variant.
4207         (annotate_with_file_line, annotate_with_locus): Likewise.
4208         (expr_locus, set_expr_locus): Update.
4209         * tree.c (build1_stat): Remove old location code.
4210         (last_annotated_node): Remove.
4211         (annotate_with_file_line): Remove old-location variant.
4212         (annotate_with_locus): Likewise.
4213         (expr_location): Remove old location code.
4214         (set_expr_location): Likewise.
4215         (expr_has_location): Likewise.
4216         (expr_locus): Likewise.
4217         (set_expr_locus): Likewise.
4218         (expr_filename): Don't use location_from_locus.
4219         (expr_lineno): Likewise.
4220         * rtl-error.c (location_for_asm): Remove old location code.
4221         * c-lex.c (cb_line_change): Remove old location code.
4222         (fe_file_change): Likewise.
4223         (cb_def_pragma): Likewise.
4224         (c_lex_with_flags): Likewise.
4225         * gengtype.c (do_typedef): Don't special-case location types.
4226         (define_location_structures): Remove.
4227         (main): Don't call define_location_structures.
4228         * tree-pretty-print.c (dump_implicit_edges): Remove old location
4229         code.
4231 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4233         PR 26264
4234         * builtins.def (BUILT_IN_STDARG_START): Remove.
4235         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
4236         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
4237         * tree-inline.c (inline_forbidden_p_1): Likewise.
4238         
4239 2008-02-26  Richard Guenther  <rguenther@suse.de>
4241         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
4242         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
4243         (lookup_decl_from_uid): Declare.
4244         (remove_decl_from_map): Likewise.
4245         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
4246         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
4247         (decl_for_uid_map): New global hashtable mapping DECL_UID
4248         to the decl tree.
4249         (init_ttree): Allocate it.
4250         (insert_decl_to_uid_decl_map): New helper function.
4251         (make_node_stat): Insert new decls into the map.
4252         (copy_node_stat): Likewise.
4253         (lookup_decl_from_uid): New function.
4254         (remove_decl_from_map): Likewise.
4255         (print_decl_for_uid_map_statistics): New helper.
4256         (dump_tree_statistics): Call it.
4258         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
4259         (referenced_var_iterator): Adjust.
4260         (FOR_EACH_REFERENCED_VAR): Adjust.
4261         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
4262         (num_referenced_vars): Adjust.
4263         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
4264         (first_referenced_var): Remove.
4265         (end_referenced_vars_p): Likewise.
4266         (next_referenced_var): Likewise.
4267         (referenced_var_iterator_set): New helper function.
4268         * tree-dfa.c (referenced_var_lookup): Adjust.
4269         (referenced_var_check_and_insert): Likewise.
4270         (remove_referenced_var): Likewise.
4271         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
4272         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
4273         (verify_call_clobbering): Likewise.
4274         (verify_memory_partitions): Likewise.
4275         (init_tree_ssa): Allocate bitmap instead of hashtable for
4276         referenced_vars.
4277         (delete_tree_ssa): Adjust.
4278         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
4279         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
4280         (compute_tag_properties): Likewise.
4281         (set_initial_properties): Likewise.
4282         (find_partition_for): Likewise.
4283         (update_reference_counts): Likewise.
4284         (dump_may_aliases_for): Likewise.
4285         * tree-ssa-operands.c (add_virtual_operand): Likewise.
4286         (add_call_clobber_ops): Likewise.
4287         (add_call_read_ops): Likewise.
4288         (get_asm_expr_operands): Likewise.
4289         * tree-into-ssa.c (dump_decl_set): Likewise.
4290         (update_ssa): Likewise.
4291         * tree-sra.c (scan_function): Likewise.
4292         (decide_instantiations): Likewise.
4293         (scalarize_parms): Likewise.
4294         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
4295         (dsa_named_for): Likewise.
4296         * tree-ssa-structalias.c (update_alias_info): Likewise.
4297         (merge_smts_into): Likewise.
4299 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4301         PR 34351
4302         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
4303         * c-opts.c (c_common_handle_option): Wall enables
4304         Wvolatile-register-var.
4305         * common.opt: Move Wvolatile-register-var to...
4306         * c.opt: ...here.
4307         
4308 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4310         * common.opt (Wlarger-than=): New.
4311         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
4312         -Wlarger-than=.
4313         * opts.c (common_handle_option): Handle -Wlarger-than=.
4314         * optc-gen.awk: Likewise.
4315         * opth-gen.awk: Likewise.
4316         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
4317         * tree-optimize.c (tree_rest_of_compilation): Likewise.
4318         
4319 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
4321         * c-common.c (match_case_to_enum_1): Add appropriate
4322         OPT_W* parameter to warning.
4323         (c_do_switch_warnings): Likewise.
4324         * c-typeck.c (warning_init): Add one more parameter following
4325         'warning' function.
4326         (push_init_level): Update call to warning_init.
4327         (pop_init_level): Likewise.
4328         (add_pending_init): Likewise.
4329         (output_init_element: Likewise.
4331 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4333         PR 28322
4334         * toplev.c (toplev_main): If there are warnings or error, print
4335         errors for ignored options.
4336         * opts.c (ignored_options): New static variable.
4337         (postpone_unknown_option_error): New.
4338         (print_ignored_options): New.
4339         (handle_option): Postpone errors for unknown -Wno-* options.
4340         * opts.h (print_ignored_options): Declare.
4341         
4342 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
4344         * config/mips/mips.md (loadgp_blockage, blockage): Change type
4345         to "ghost".
4347 2008-02-25  Richard Guenther  <rguenther@suse.de>
4349         Revert:
4350         2008-02-25  Richard Guenther  <rguenther@suse.de>
4352         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
4353         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
4354         (lookup_decl_from_uid): Declare.
4355         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
4356         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
4357         (decl_for_uid_map): New global hashtable mapping DECL_UID
4358         to the decl tree.
4359         (init_ttree): Allocate it.
4360         (insert_decl_to_uid_decl_map): New helper function.
4361         (make_node_stat): Insert new decls into the map.
4362         (copy_node_stat): Likewise.
4363         (lookup_decl_from_uid): New function.
4364         (print_decl_for_uid_map_statistics): New helper.
4365         (dump_tree_statistics): Call it.
4367         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
4368         (referenced_var_iterator): Adjust.
4369         (FOR_EACH_REFERENCED_VAR): Adjust.
4370         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
4371         (num_referenced_vars): Adjust.
4372         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
4373         (first_referenced_var): Remove.
4374         (end_referenced_vars_p): Likewise.
4375         (next_referenced_var): Likewise.
4376         (referenced_var_iterator_set): New helper function.
4377         * tree-dfa.c (referenced_var_lookup): Adjust.
4378         (referenced_var_check_and_insert): Likewise.
4379         (remove_referenced_var): Likewise.
4380         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
4381         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
4382         (verify_call_clobbering): Likewise.
4383         (verify_memory_partitions): Likewise.
4384         (init_tree_ssa): Allocate bitmap instead of hashtable for
4385         referenced_vars.
4386         (delete_tree_ssa): Adjust.
4387         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
4388         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
4389         (compute_tag_properties): Likewise.
4390         (set_initial_properties): Likewise.
4391         (find_partition_for): Likewise.
4392         (update_reference_counts): Likewise.
4393         (dump_may_aliases_for): Likewise.
4394         * tree-ssa-operands.c (add_virtual_operand): Likewise.
4395         (add_call_clobber_ops): Likewise.
4396         (add_call_read_ops): Likewise.
4397         (get_asm_expr_operands): Likewise.
4398         * tree-into-ssa.c (dump_decl_set): Likewise.
4399         (update_ssa): Likewise.
4400         * tree-sra.c (scan_function): Likewise.
4401         (decide_instantiations): Likewise.
4402         (scalarize_parms): Likewise.
4403         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
4404         (dsa_named_for): Likewise.
4405         * tree-ssa-structalias.c (update_alias_info): Likewise.
4406         (merge_smts_into): Likewise.
4408 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
4410         PR fortran/29549
4411         * doc/invoke.texi (-fcx-limited-range): Document new option.
4412         * toplev.c (process_options): Handle -fcx-fortran-rules.
4413         * common.opt: Add documentation for -fcx-fortran-rules.
4415 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
4417         PR c/35162
4418         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
4419         actual behaviour and C99.
4420         
4421 2008-02-26  Ben Elliston  <bje@au.ibm.com>
4423         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
4424         (ASM_CPU_POWER6_SPEC): Likewise.
4425         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
4426         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
4427         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
4429 2008-02-25  Richard Guenther  <rguenther@suse.de>
4431         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
4432         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
4433         (lookup_decl_from_uid): Declare.
4434         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
4435         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
4436         (decl_for_uid_map): New global hashtable mapping DECL_UID
4437         to the decl tree.
4438         (init_ttree): Allocate it.
4439         (insert_decl_to_uid_decl_map): New helper function.
4440         (make_node_stat): Insert new decls into the map.
4441         (copy_node_stat): Likewise.
4442         (lookup_decl_from_uid): New function.
4443         (print_decl_for_uid_map_statistics): New helper.
4444         (dump_tree_statistics): Call it.
4446         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
4447         (referenced_var_iterator): Adjust.
4448         (FOR_EACH_REFERENCED_VAR): Adjust.
4449         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
4450         (num_referenced_vars): Adjust.
4451         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
4452         (first_referenced_var): Remove.
4453         (end_referenced_vars_p): Likewise.
4454         (next_referenced_var): Likewise.
4455         (referenced_var_iterator_set): New helper function.
4456         * tree-dfa.c (referenced_var_lookup): Adjust.
4457         (referenced_var_check_and_insert): Likewise.
4458         (remove_referenced_var): Likewise.
4459         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
4460         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
4461         (verify_call_clobbering): Likewise.
4462         (verify_memory_partitions): Likewise.
4463         (init_tree_ssa): Allocate bitmap instead of hashtable for
4464         referenced_vars.
4465         (delete_tree_ssa): Adjust.
4466         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
4467         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
4468         (compute_tag_properties): Likewise.
4469         (set_initial_properties): Likewise.
4470         (find_partition_for): Likewise.
4471         (update_reference_counts): Likewise.
4472         (dump_may_aliases_for): Likewise.
4473         * tree-ssa-operands.c (add_virtual_operand): Likewise.
4474         (add_call_clobber_ops): Likewise.
4475         (add_call_read_ops): Likewise.
4476         (get_asm_expr_operands): Likewise.
4477         * tree-into-ssa.c (dump_decl_set): Likewise.
4478         (update_ssa): Likewise.
4479         * tree-sra.c (scan_function): Likewise.
4480         (decide_instantiations): Likewise.
4481         (scalarize_parms): Likewise.
4482         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
4483         (dsa_named_for): Likewise.
4484         * tree-ssa-structalias.c (update_alias_info): Likewise.
4485         (merge_smts_into): Likewise.
4487 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
4489         PR target/35258
4490         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
4491         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
4492         * alias.h (nonoverlapping_memrefs_p): Likewise.
4494 2008-02-25  Jan Beulich  <jbeulich@novell.com>
4496         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
4497         * config/i386/netware-libgcc.exp: Add __bswap?i2,
4498         __emultls_get_address, __emultls_register_common,
4499         __floatundi?f, and _Unwind_GetIPInfo.
4500         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
4501         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
4502         (gen_regparm_prefix): Likewise.
4503         (i386_nlm_encode_section_info): Sync with
4504         config/i386/winnt.c:i386_pe_encode_section_info().
4505         (i386_nlm_maybe_mangle_decl_assembler_name): New.
4506         i386_nlm_mangle_decl_assembler_name): New.
4507         (netware_override_options): New.
4508         * config/i386/netware.h (netware_override_options): Declare.
4509         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
4510         (i386_nlm_mangle_decl_assembler_name): Declare.
4511         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
4513 2008-02-25  Ben Elliston  <bje@au.ibm.com>
4515         PR other/32948
4516         * c-decl.c (grokdeclarator): Remove unused local variables
4517         `typedef_type' and `type_as_written'.
4518         * bb-reorder.c
4519         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
4520         unused local variable `has_hot_blocks'.
4521         (fix_crossing_conditional_branches): Remove unused local variable
4522         `prev_bb'.
4523         
4524 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
4526         PR middle-end/19984
4527         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
4528         using DEF_C99_BUILTIN.
4529         (BUILT_IN_NANF): Ditto.
4530         (BUILT_IN_NANL): Ditto.
4532 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
4533             Revital Eres  <eres@il.ibm.com>
4535         * modulo-sched.c (calculate_must_precede_follow): Address TODO
4536         regarding the order of two dependent insns in the same row.
4538 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
4540         * stor-layout.c (layout_decl): Do not bump the alignment of a
4541         bit-field to more than byte alignment if it is packed.
4543 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
4545         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
4546         e300c2 and e300c3.
4548 2008-02-24  Diego Novillo  <dnovillo@google.com>
4550         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
4552         PR 33738
4553         * tree-vrp.c (vrp_evaluate_conditional): With
4554         -Wtype-limits, emit a warning when comparing against a
4555         constant outside the natural range of OP0's type.
4556         * c.opt (Wtype-limits): Move ...
4557         * common.opt (Wtype-limits): ... here.
4559 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
4561         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
4562         * config/rs6000/e300c2c3.md: New file.
4563         * config/rs6000/rs6000.c (processor_costs): Add new costs for
4564         e300c2 and e300c3.
4565         (rs6000_override_options): Add e300c2 and e300c3 cases to
4566         processor_target_table. Do not allow usage of Altivec or Spe
4567         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
4568         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
4569         * config/rs6000/rs6000.h (processor_type): Add
4570         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
4571         (ASM_CPU_SPEC): Add e300c2 and e300c3.
4572         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
4573         and ppce300c3. Include e300c2c3.md.
4575 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
4577         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
4578         instead of TARGET_STRICT_ALIGN.
4580 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
4582         * explow.c (memory_address): Assert that the generated address is
4583         valid.
4585 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
4587         PR target/25477
4588         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
4589         * config/darwin-ppc-ldouble-patch.def: New file.
4590         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
4591         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
4592         SUBTARGET_INIT_BUILTINS if defined.
4593         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
4594         New functions.
4596 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4598         PR rtl-opt/33512
4599         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
4600         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
4602 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4604         PR pch/35027
4605         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
4606         file" warning condtional on -Winvalid-PCH.
4608 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
4610         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
4612 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
4614         PR target/22076
4615         PR target/34256 
4616         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
4617         prevent reload from using MMX registers.
4618         (*mov<mode>_internal): Ditto.
4619         (*movv2sf_internal_rex64): Ditto.
4620         (*movv2sf_internal): Ditto.
4622 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4624         PR documentation/31569
4625         * doc/install.texi2html: Use makeinfo --no-number-sections.
4627 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
4629         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
4630         ensure that we can address an entire entity > 8 bytes.  Don't
4631         generate reg+reg addressing for such data.
4633 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
4635         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
4636         strings when optimizing for size, unless the target cares about
4637         alignment.
4639 2008-02-22  Tom Tromey  <tromey@redhat.com>
4641         * regclass.c (current_pass): Remove declaration.
4643 2008-02-22  Anatoly Sokolov <aesok@post.ru>
4645         * config/avr/libgcc.S (__RAMPZ__): Define.
4646         (__do_copy_data): Add for devices with 128KB code memory.
4648 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
4650         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
4651         Use spe_abi.
4652         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
4654 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
4656         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
4657         GENNONACR_REGS.
4659 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4661         PR c/19999
4662         * c-typeck.c (build_binary_op): Warn about floating point
4663         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
4665 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
4667         PR target/34526
4668         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
4669         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
4670         add vrsave.
4671         (rs6000_override_options): Set altivec_abi as default, not override,
4672         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
4673         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
4674         is used; use new member spe_abi.
4675         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
4676         spe_abi and altivec_abi.
4678 2008-02-22  Tomas Bily  <tbily@suse.cz>
4680         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
4682 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4684         PR bootstrap/35273
4685         * config.build (build_file_translate): Set to `CMD //c' only if
4686         it works.
4687         * Makefile.in (build_file_translate): Improve comment.
4689 2008-02-21  Jan Hubicka  <jh@suse.cz>
4691         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
4692         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
4693         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
4695 2008-02-21  Michael Matz  <matz@suse.de>
4697         PR target/35264
4698         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
4700 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
4702         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
4703         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
4704         as insn constraint.
4705         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
4706         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
4707         SSE_VEC_FLOAT_MODE_P as insn constraint.
4708         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
4709         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
4710         sse4a_movntdf using MODEF mode iterator.
4711         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
4712         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
4713         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
4714         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
4715         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
4716         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
4717         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
4719 2008-02-21  Richard Guenther  <rguenther@suse.de>
4721         * tree.def (PAREN_EXPR): New tree code.
4722         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
4723         and PAREN_EXPR.
4724         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
4725         * expr.c (expand_expr_real_1): Likewise.
4726         * tree-inline.c (estimate_num_insns_1): Likewise.
4727         * tree-complex.c (expand_complex_move): Likewise.
4728         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
4729         as plain x.
4731 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
4733         PR target/35225
4734         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
4736 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
4738         PR target/35190
4739         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
4741         * config/sh/sh.c (find_barrier): Don't go past
4742         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
4744 2008-02-20  DJ Delorie  <dj@redhat.com>
4746         * config/h8300/h8300.md (insv): Force source operand to be a register.
4748         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
4749         as a jump, not as a plain insn.
4750         
4751 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
4753         * doc/invoke.texi (Warning Options): Add new option
4754         -Wframe-larger-than=.
4755         (-Wframe-larger-than): Document.
4757         * flags.h (warn_frame_larger_than, frame_larger_than_size):
4758         Add declarations for new option variables.
4760         * final.c (final_start_function): Check the frame size
4761         before emission and issue a Wframe-larger-than warning.
4763         * opts.c (warn_frame_larger_than, frame_larger_than_size):
4764         Add definitions for new option variables.
4765         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
4767         * common.opt (Wframe-larger-than=): New option.
4769 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
4771         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
4772         (<sse>_div<mode>3): Ditto.
4773         (<sse>_vmdiv<mode>3): Ditto.
4774         (<sse>_vmsqrt<mode>2): Ditto.
4775         (*smax<mode>3): Ditto.
4776         (sse5_frcz<mode>2): Ditto.
4777         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
4778         as insn constraint.
4780 2008-02-20  Richard Guenther  <rguenther@suse.de>
4782         PR middle-end/35265
4783         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
4784         be happy with INTEGRAL_TYPE_P.
4786 2008-02-20  Richard Guenther  <rguenther@suse.de>
4788         * fold-const.c (split_tree): Associate floatig-point expressions
4789         if flag_associative_math is set.
4791 2008-02-20  Richard Guenther  <rguenther@suse.de>
4793         * tree.h (fold_real_zero_addition_p): Declare.
4794         * fold-const.c (fold_real_zero_addition_p): Export.
4795         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
4796         floating-point operations with zero and one.
4798 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
4800         * doc/install.texi: Correct references to CFLAGS, replacing them
4801         with BOOT_CFLAGS.  Document flags used during bootstrap for
4802         target libraries.
4803                                 
4804 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
4806         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
4807         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
4808         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
4809         insn constraint.
4810         (smin<mode>3): Ditto from similar patterns.
4811         (smax<mode>3): Ditto.
4812         (*ieee_smin<mode>3): Ditto.
4813         (*ieee_smax<mode>3): Ditto.
4814         * config/i386/sse.md (sse): New mode attribute.
4815         (mov<mode>): Macroize expander from movv4sf and movv2df using
4816         SSEMODEF2P mode iterator.
4817         (<sse>_movnt<mode>): Ditto from similar patterns. Use
4818         SSE_VEC_FLOAT_MODE_P as insn constraint.
4819         (storent<mode>): Ditto.
4820         (storent<mode>): Macroize expander from storentsf and storentdf using
4821         MODEF mode iterator.
4822         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
4823         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
4824         (abs<mode>2): Ditto from similar patterns.
4825         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
4826         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
4827         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
4828         (<sse>_vmsqrt<mode>2): Ditto.
4829         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
4830         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
4831         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
4832         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
4833         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
4834         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
4835         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
4836         insn constraint.
4837         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
4838         iterator and SSE_FLOAT_MODE_P as insn constraint.
4839         (<sse>_ucomi): Ditto from similar patterns.
4840         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
4841         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
4842         SSE_VEC_FLOAT_MODE_P as insn constraint.
4843         (vcond<mode>): Ditto from similar patterns.
4844         (and<mode>3, *and<mode>3): Ditto.
4845         (<sse>_nand<mode>3): Ditto.
4846         (ior<mode>3, *ior<mode>3): Ditto.
4847         (xor<mode>3, *xor<mode>3): Ditto.
4848         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
4849         iterator and SSE_FLOAT_MODE_P as insn constraint.
4850         (*nand<mode>3): Ditto from similar patterns.
4851         (*ior<mode>3): Ditto.
4852         (*xor<mode>3): Ditto.
4854 2008-02-20  Ira Rosen  <irar@il.ibm.com>
4856         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
4857         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
4858         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
4860 2008-02-19  Jan Hubicka  <jh@suse.cz>
4862         * predict.c (tree_bb_level_predictions): Remove variable next
4863         mistakely introduced by previous commit.
4865 2008-02-19  Jan Hubicka  <jh@suse.cz>
4867         * predict.c (predict_paths_leading_to): Rewrite.
4868         (predict_paths_for_bb): New.
4869         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
4871 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4873         PR bootstrap/35218
4874         * Makefile.in (build_file_translate): New.
4875         (gcc-vers.texi): Use it for translating $(abs_srcdir).
4876         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
4877         * configure.ac (build_file_translate): Substitute it.
4878         * configure: Regenerate.
4880 2008-02-19  Jan Hubicka  <jh@suse.cz>
4882         PR rtl-optimization/34408
4883         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
4884         invalid sharing.
4886 2008-02-19  Jan Hubicka  <jh@suse.cz>
4888         PR middle-end/28779
4889         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
4890         call_expr.
4892 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
4894         PR Ada/35186
4895         * config/i386/i386-modes.def: Revert the last DI alignment
4896         change until Ada people can look into it.
4898 2008-02-19  Nick Clifton  <nickc@redhat.com>
4900         * opts.c (print_specific_help): Fix typo in --help text.
4902 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
4904         PR target/35239
4905         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
4906         32-bit inline asm without asm alternatives for host GCC < 3.0.
4908 2008-02-19  Richard Guenther  <rguenther@suse.de>
4910         PR tree-optimization/34989
4911         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
4912         Allow propagation to INDIRECT_REF if we can simplify only.
4914 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4916         * c-common.c (warn_for_collisions_1): Use appropriate option when
4917         warning.
4919 2008-02-19  Nick Clifton  <nickc@redhat.com>
4921         PR other/31349
4922         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
4923         (handle_options): Fix indentation.
4924         (print_filtered_help): If no language-specific options were
4925         displayed tell the user how to list all the options supported by
4926         the language's front-end.
4927         (print_specific_help): Fix indentation and remove duplicate line.
4928         (common_handle_option): Handle the -v option.
4929         For --help enable the display of undocumented options if the -v
4930         switch has been included on the command line.
4931         For --help= check for overlaps in the arguments between the option
4932         classes and the language names and issue a warning when they
4933         cannot be disambiguated.
4934         * c.opt (v): Pass on to the common option handler.
4936 2008-02-19  Revital Eres  <eres@il.ibm.com> 
4938         * modulo-sched.c (sms_schedule): Change dump message when
4939         create_ddg function fails.
4940         (try_scheduling_node_in_cycle): Rename row to cycle.
4941         (print_partial_schedule): Rename CYCLE to ROW.
4943 2008-02-19  Christian Bruel  <christian.bruel@st.com>
4944             Zdenek Dvorak  <ook@ucw.cz>
4946         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
4948 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
4950         PR target/33555
4951         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
4952         (*x86_movdicc_0_m1_se): Ditto.
4954 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
4956         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
4957         (CMPtype): Define as __gcc_CMPtype.
4958         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
4959         (CMPtype): Define as __gcc_CMPtype.
4961 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
4963         Support valgrind 3.3 for --enable-checking=valgrind.
4964         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
4965         here.
4966         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
4967         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
4968         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
4969         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
4970         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
4971         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
4972         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
4973         respectively.
4974         * ggc-zone.c: Similar.
4975         * ggc-page.c: Similar.
4977 2008-02-19  Paul Brook  <paul@codesourcery.com>
4979         PR target/35071
4980         * config/arm/ieee754-df.S: Fix do_it typo.
4981         * config/arm/ieee754-sf.S: Fix do_it typo.
4983 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
4985         PR target/35189
4986         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
4987         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
4988         (OPTION_MASK_ISA_SSE_SET): Likewise.
4989         (OPTION_MASK_ISA_SSE2_SET): Likewise.
4990         (OPTION_MASK_ISA_SSE3_SET): Likewise.
4991         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
4992         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
4993         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
4994         (OPTION_MASK_ISA_SSE4_SET): Likewise.
4995         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
4996         (OPTION_MASK_ISA_SSE5_SET): Likewise.
4997         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
4998         (OPTION_MASK_ISA_MMX_UNSET): Updated.
4999         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
5000         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
5001         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
5002         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
5003         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
5004         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
5005         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
5006         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
5007         (OPTION_MASK_ISA_SSE4): Removed.
5008         (ix86_handle_option): Turn on bits in ix86_isa_flags and
5009         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
5010         (override_options): Don't turn on implied SSE/MMX bits in
5011         ix86_isa_flags.
5013 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
5015         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
5016         32bit host.
5018 2008-02-18  Joey Ye  <joey.ye@intel.com>
5020         PR middle-end/34921
5021         * tree-nested.c (insert_field_into_struct): Set type alignment
5022         to field alignment if the former is less than the latter.
5024 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
5026         * BASE-VER: Set to 4.4.0.
5028 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
5030         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
5031         * doc/cfg.texi: Likewise.
5032         * doc/extend.texi: Likewise.
5033         * doc/gty.texi: Likewise.
5034         * doc/invoke.texi: Likewise.
5035         * doc/loop.texi: Likewise.
5036         * doc/md.texi: Likewise.
5037         * doc/passes.texi: Likewise.
5038         * doc/rtl.texi: Likewise.
5039         * doc/sourcebuild.texi: Likewise.
5040         * doc/tm.texi: Likewise.
5041         * doc/tree-ssa.texi: Likewise.
5043 2008-02-17  Richard Guenther  <rguenther@suse.de>
5045         PR middle-end/35227
5046         * tree-complex.c (init_parameter_lattice_values): Handle parameters
5047         without default definition.
5049 2008-02-17  Richard Guenther  <rguenther@suse.de>
5051         PR tree-optimization/35231
5052         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
5053         if A | B != 1.
5055 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
5057         Revert:
5058         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>    
5059         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
5060         libgcc_cmp_return mode.
5062 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5064         PR c/28368
5065         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
5067 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
5069         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
5070         multilibs.
5072 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5074         * doc/c-tree.texi: Use `@.' where appropriate.
5075         * doc/extend.texi: Likewise.
5076         * doc/install.texi: Likewise.
5077         * doc/invoke.texi: Likewise.
5078         * doc/loop.texi: Likewise.
5079         * doc/makefile.texi: Likewise.
5080         * doc/md.texi: Likewise.
5081         * doc/passes.texi: Likewise.
5082         * doc/standards.texi: Likewise.
5083         * doc/tm.texi: Likewise.
5085 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
5087         PR middle-end/35196
5088         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
5089         in entry_bb.
5090         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
5091         rather than in entry_bb.
5093 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
5095         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
5096         libgcc_cmp_return mode.
5098 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
5100         PR middle-end/35130
5101         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
5102         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
5104 2008-02-15  Richard Guenther  <rguenther@suse.de>
5105             Zdenek Dvorak  <ook@ucw.cz>
5107         PR tree-optimization/35164
5108         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
5109         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
5110         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
5111         Only propagate addresses which do not have abnormal SSA_NAMEs
5112         in their operands.
5114 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
5116         PR target/35088
5117         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
5119 2008-02-15  Jan Hubicka  <jh@suse.cz>
5121         PR middle-end/35149
5122         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
5124 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
5126         PR middle-end/34621
5127         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
5128         when calculating alignment_pad.
5130 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
5132         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
5133         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
5134         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
5135         and STACK_BOUNDARY define.
5137 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
5139         PR preprocessor/35061
5140         * c-pragma.c (handle_pragma_pop_macro): Check that
5141         pushed_macro_table has been allocated.
5143 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
5145         PR middle-end/35136
5146         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
5147         (force_gimple_operand): Likewise.
5148         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
5149         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
5150         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
5151         (find_interesting_uses_address): Check addressability and alignment
5152         of the base expression only after substituting bases of IVs into it.
5154 2008-02-14  Michael Matz  <matz@suse.de>
5156         PR target/34930
5157         * function.c (instantiate_virtual_regs_in_insn): Reload address
5158         before falling back to reloading the whole operand.
5160 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
5162         * config/s390/s390.c (s390_mainpool_start): Emit the pool
5163         before the first section switch note.
5165 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
5167         * doc/bugreport.texi: Update copyright years.
5168         * doc/c-tree.texi: Likewise.
5169         * doc/cfg.texi: Likewise.
5170         * doc/cpp.texi: Likewise.
5171         * doc/cppinternals.texi: Likewise.
5172         * doc/fragments.texi: Likewise.
5173         * doc/frontends.texi: Likewise.
5174         * doc/gcc.texi: Likewise.
5175         * doc/gty.texi: Likewise.
5176         * doc/hostconfig.texi: Likewise.
5177         * doc/implement-c.texi: Likewise.
5178         * doc/libgcc.texi: Likewise.
5179         * doc/loop.texi: Likewise.
5180         * doc/makefile.texi: Likewise.
5181         * doc/options.texi: Likewise.
5182         * doc/passes.texi: Likewise.
5183         * doc/rtl.texi: Likewise.
5184         * doc/sourcebuild.texi: Likewise.
5185         * doc/standards.texi: Likewise.
5186         * doc/tree-ssa.texi: Likewise.
5187         * doc/trouble.texi: Likewise.
5189         * doc/extend.texi: Use @: or add comma where appropriate.
5190         * doc/invoke.texi: Likewise.
5191         * doc/tm.texi: Likewise.
5193 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
5195         PR target/34393
5196         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
5197         to a reg.
5199 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
5201         * doc/md.texi (clz, ctz): Add reference.
5202         * doc/rtl.texi (clz, ctz): Likewise.
5204 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5206         PR other/35148
5207         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
5208         srcdir.
5210 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
5212         * config/s390/s390.c (struct constant_pool): New field
5213         emit_pool_after added.
5214         (s390_mainpool_start): Set the emit_pool_after flag according
5215         to the section switch notes.
5216         (s390_mainpool_finish): Consider emit_pool_after when emitting
5217         the literal pool at the end of the function.
5218         (s390_chunkify_start): Force literal pool splits at section
5219         switch notes.
5221 2008-02-13  Michael Matz  <matz@suse.de>
5223         PR debug/35065
5224         * var-tracking.c (clobber_variable_part): Correctly traverse the
5225         list.
5227 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5229         PR 29673
5230         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
5231         Add -fdump-ipa-inline.
5232         * tree-dump.c (dump_files): Remove tree-inlined dump.
5233         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
5234         
5235 2008-02-12  Richard Guenther  <rguenther@suse.de>
5237         PR tree-optimization/35171
5238         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
5239         default defs.
5241 2008-02-12  Richard Guenther  <rguenther@suse.de>
5243         PR middle-end/35163
5244         * fold-const.c (fold_widened_comparison): Use get_unwidened in
5245         value-preserving mode.  Disallow final truncation.
5247 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
5249         PR middle-end/35136
5250         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
5251         code from here to...
5252         (force_gimple_operand): ...here.
5254 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
5256         PR c++/35144
5257         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
5258         non-compatible pointers.
5259         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
5260         different FIELD_DECLs, try harder by comparing field offsets, sizes
5261         and types.
5263         PR inline-asm/35160
5264         * function.c (match_asm_constraints_1): Don't replace the same input
5265         multiple times.
5267 2008-02-12  Anatoly Sokolov <aesok@post.ru>
5269         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
5270         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
5271         (expand_epilogue): Restore RAMPZ register.
5272         * config/avr/avr.md (RAMPZ_ADDR): New constant.
5274 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
5276         * config/i386/cygwin.asm: (__alloca): Correct calling
5277         convention and alignment.
5278         (__chkstk): Force 8 byte stack alignment.
5280 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
5281             Richard Guenther  <rguenther@suse.de>
5283         PR tree-optimization/33992
5284         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
5285         the zero we compare against.
5287 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
5289         PR libfortran/35063
5290         * gthr-win32.h (__gthread_mutex_destroy_function): New function
5291         to CloseHandle after unlocking to prevent accumulation of handle
5292         count.
5294 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5296         PR middle_end/34150
5297         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
5298         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
5299         and update LABEL_NUSES during and after reload.
5301 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
5303         PR middle-end/34627
5304         * combine.c (simplify_if_then_else): Make sure the comparison is
5305         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
5307 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
5309         PR bootstrap/35051
5310         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
5311         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
5312         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
5313         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
5314         * tree.h (get_type_static_bounds): Likewise.
5316 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5318         * doc/invoke.texi (Option Summary, C++ Dialect Options)
5319         (Objective-C and Objective-C++ Dialect Options, Warning Options):
5320         Make -Wfoo language annotations match what the compiler outputs.
5322 2008-02-08  Sa Liu  <saliu@de.ibm.com>
5324         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu 
5325         intrinsics spu_convts, spu_convtu, spu_convtf.
5326         * testsuite/gcc.target/spu/intrinsics-3.c: New. Test error messages.
5328 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
5330         * doc/extend.texi (Function Attributes) <noinline>: Mention
5331         asm ("") as method to keep calls.
5333 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5335         PR other/32754
5336         * doc/options.texi (Options): Replace references to opts.sh with
5337         optc-gen.awk.
5338         * opts-common.c: Likewise.
5339         * optc-gen.awk: Likewise.
5340         
5341 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
5343         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
5345 2008-02-07  Richard Henderson  <rth@redhat.com>
5347         PR rtl-opt/33410
5348         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
5349         EXPR_LIST for the REG_EQUAL instead of a comparison with a 
5350         funny mode.
5352 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
5354         PR tree-optimization/35085
5355         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
5356         for operand entry oe2 in addition to operand entry oe3 in order to
5357         expose more opportunities for vectorizer sum reduction.
5359 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5361         PR other/35107
5362         * Makefile.in (LIBS): Remove $(GMPLIBS).
5363         (cc1-dummy, cc1): Add $(GMPLIBS).
5365 2008-02-06  Jan Hubicka  <jh@suse.cz>
5367         PR target/23322
5368         * i386.md (moddf_integer): Do not produce partial memory stalls for
5369         targets where it hurts.
5371 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
5373         PR target/35083
5374         * optabs.c (expand_float): Do not check for decimal modes when
5375         expanding unsigned integer through signed conversion.
5377 2008-02-06  Nick Clifton  <nickc@redhat.com>
5379         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
5380         inside the clobber with a match_operand and duplicated operand
5381         number in the constraint.
5382         (ineqbranchsi): Delete redundant comment.
5384 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
5386         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add 
5387         builtin_define ("__USE_INIT_FINI__").
5388         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
5389         -msx multilibs.
5390         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
5392 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5394         PR documentation/30330
5395         * doc/invoke.texi (C++ Dialect Options)
5396         (Objective-C and Objective-C++ Dialect Options, Warning Options):
5397         For each warning option -Wfoo that allows -Wno-foo, ensure both
5398         -Wfoo and -Wno-foo are listed in the option index.  Fix index
5399         entry of -Wswitch-default, index -Wnormalized= including the
5400         `=', and -Wlarger-than-@var{len} including @var{len}.
5402 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
5404         * config/i386/i386.md (floatunssisf2): Use
5405         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
5406         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
5407         Macroize expander using MODEF mode iterator.
5409 2008-02-05  Diego Novillo  <dnovillo@google.com>
5411         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
5413         PR 33738
5414         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
5416 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5418         PR other/35070
5419         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
5421 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
5423         PR target/35084
5424         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
5425         to indicate if a message should be generated.
5426         (init_cumulative_args): Updated.
5427         (function_value_32): Likewise.
5429 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
5431         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
5433 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
5435         PR target/35083
5436         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
5437         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
5439 2008-02-04  Diego Novillo  <dnovillo@google.com>
5441         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
5443         PR 33738
5444         * tree-vrp.c (vrp_evaluate_conditional): With
5445         -Wtype-limits, emit a warning when comparing against a
5446         constant outside the natural range of OP0's type.
5448 2008-02-04  Richard Guenther  <rguenther@suse.de>
5450         PR middle-end/33631
5451         * expr.c (count_type_elements): Give for unions instead of
5452         guessing.
5454 2008-02-04  Richard Guenther  <rguenther@suse.de>
5456         PR middle-end/35043
5457         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
5458         to TYPE_DOMAINs base type instead of using bitsizetype here.
5460 2008-02-03  Jason Merrill  <jason@redhat.com>
5462         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
5464 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5466         PR other/29972
5467         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
5468         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
5469         (RS/6000 and PowerPC Options): Fix typos and markup.
5470         * doc/passes.texi (Tree-SSA passes): Likewise.
5472 2008-02-02  Michael Matz  <matz@suse.de>
5474         PR target/35045
5475         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
5476         from record_last_reg_set_info.
5477         (record_last_reg_set_info): Take an RTX argument, iterate over all
5478         constituent hardregs.
5479         (record_last_set_info, record_opr_changes): Change calls to
5480         new signature or to record_last_reg_set_info_regno.
5482 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
5484         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
5486 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
5488         PR rtl-optimization/34773
5489         * reg-notes.def (EQUAL): Mention significance of combination of
5490         REG_EQUAL and REG_RETVAL.
5491         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
5492         insn that has a REG_RETVAL.
5494 2008-02-01  Roger Sayle  <roger@eyesopen.com>
5496         PR bootstrap/33781
5497         * configure.ac (--enable-fixed-point): Disable unless explicitly
5498         requested on IRIX.
5499         * configure: Regenerate.
5501 2008-02-01  Richard Guenther  <rguenther@suse.de>
5503         PR other/35042
5504         * invoke.texi (-finline-limit): Remove no longer true parts
5505         of the documentation.  Note that there is no default value.
5507 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
5508             Mark Mitchell  <mark@codesourcery.com>
5509             Ben Elliston  <bje@au.ibm.com>
5511         PR c/29326
5512         * doc/extend.texi (Other Builtins): Document.
5514 2008-01-31  Tom Browder <tom.browder@gmail.com>
5516         * doc/c-tree.texi (Types): Fix grammar.
5517         (Expression trees): Ditto.
5518         * doc/passes.texi (Tree-SSA passes): Ditto.
5519         
5520         * doc/configterms.texi (Configure Terms): Fix typo.
5521         * doc/cpp.texi (Common Predefined Macros): Ditto.
5522         * doc/md.texi (Machine Constraints): Ditto.
5523         
5524         * doc/makefile.texi (Makefile): Add comma.
5526 2008-01-31  Tom Browder  <tom.browder@gmail.com>
5527             Gerald Pfeifer  <gerald@pfeifer.com>
5528         
5529         * doc/sourcebuild.texi (Front End): Remove references to CVS
5530         and CVSROOT/modules.
5531         (Texinfo Manuals): Replace reference to CVS by one to SVN.
5532         (Back End): Remove reference to CVS.
5534 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
5536         PR target/34900
5537         * config/mips/mips.c (gen_load_const_gp): New function, taking a
5538         comment from...
5539         (mips16_gp_pseudo_reg): ...here.
5540         * config/mips/mips.md (load_const_gp): Replace with...
5541         (load_const_gp_<mode>): ...this :P-based insn.
5543 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5545         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
5546         options. Minor fixes.
5547         (-std): Move reference to standards closer to where language
5548         standards are first mentioned.
5549         
5550 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
5552         PR rtl-optimization/34995
5553         * reload.c (alternative_allows_const_pool_ref): Take an rtx
5554         parameter and return a bool.  If the rtx parameter is nonnull,
5555         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
5556         (find_reloads): Update call accordingly.  Pass the new operand
5557         if it needed no address reloads, otherwise pass null.
5559 2008-01-30  Richard Henderson  <rth@redhat.com>
5561         PR c/34993
5562         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
5563         for unbounded arrays.
5565 2008-01-30  Silvius Rus  <rus@google.com>
5567         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
5569 2008-01-30  Jan Hubicka  <jh@suse.cz>
5571         PR target/34982
5572         * i386.c (init_cumulative_args): Use real function declaration when
5573         calling locally.
5575 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
5577         PR rtl-optimization/34998
5578         * global.c (build_insn_chain): Treat non-subreg_lowpart
5579         SUBREGs of pseudos as clobbering all the words covered by the
5580         SUBREG, not just all the bytes.
5581         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
5582         original df_ref rather than an extract parameter.
5583         (global_conflicts): Update call accordingly.
5585 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
5587         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
5588         the overflow check to make it easier to read.
5589         (__fixtfdi): Change the type of the ll member in union
5590         long_double to UDItype_x.
5592 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
5594         PR middle-end/34969
5595         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
5596         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
5597         * tree-inline.c (fold_marked_statements): Call
5598         cgraph_update_edges_for_call_stmt if folding a call statement.
5599         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
5600         debug_generic_stmt calls, reset it back afterwards.
5602         PR c/35017
5603         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
5604         static decls.
5605         * c-typeck.c (build_external_ref): Don't pedwarn about
5606         static vars in current function's scope.
5608 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
5610         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
5612 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
5614         PR c/35002
5615         * ipa-struct-reorg.c: Fix spelling.
5616         * params.def: Ditto.
5618 2008-01-29  Richard Guenther  <rguenther@suse.de>
5620         PR middle-end/35006
5621         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
5622         field.
5623         * tree-inline.c (remap_type): Increment remapping_type_depth
5624         around remapping types.
5625         (copy_body_r): Only add referenced variables if they are referenced
5626         from code, not types.
5628 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
5630         PR c++/34055
5631         PR c++/34103
5632         PR c++/34219
5633         PR c++/34606
5634         PR c++/34753
5635         PR c++/34754
5636         PR c++/34755
5637         PR c++/34919
5638         PR c++/34961
5639         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
5640         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
5642 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
5644         PR target/34412
5645         * config/avr/avr.c (expand_prologue): Use correct QI mode frame 
5646         pointer for tiny stack.
5648 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
5650         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
5652 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
5654         * config/vx-common.h: Fix typo in comment.
5656 2008-01-28  Ian Lance Taylor  <iant@google.com>
5658         PR c++/34862
5659         PR c++/33407
5660         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
5661         coalesce pointers if they have different DECL_NO_TBAA_P values.
5662         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
5663         between variables with different DECL_NO_TBAA_P values.
5665 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
5667         PR 31535
5668         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
5669         are not legitimate small data references on SPE targets.
5671 2008-01-28  David Daney  <ddaney@avtrex.com>
5673         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
5675 2008-01-28  David Daney  <ddaney@avtrex.com>
5677         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
5679 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
5681         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
5682         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
5683         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
5684         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
5685         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
5686         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
5687         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
5688         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
5690 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
5692         * basic-block.h (condjump_equiv_p): Fix comment.
5694 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
5696         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
5697         print_generic_stmt_indented): Fix comment.
5699 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
5701         * configure.ac (__stack_chk_fail): Add detecion for availability
5702         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
5703         * configure: Regenerate.
5705 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
5707         PR middle-end/34688
5708         * final.c (output_addr_const): Handle TRUNCATE.
5710 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
5712         PR target/34711
5713         * tree-ssa-loop-ivopts.c (comp_cost): New type.
5714         (zero_cost, infinite_cost): New constants.
5715         (struct cost_pair): Change type of cost to comp_cost.
5716         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
5717         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
5718         New functions.
5719         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
5720         split_address_cost, ptr_difference_cost, difference_cost,
5721         get_computation_cost_at, get_computation_cost,
5722         determine_use_iv_cost_generic, determine_use_iv_cost_address,
5723         determine_use_iv_cost_condition, determine_use_iv_costs,
5724         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
5725         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
5726         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
5727         Change type of cost to comp_cost.
5728         (determine_iv_cost): Increase cost of non-original ivs, instead
5729         of decreasing the cost of original ones.
5730         (get_address_cost): Indicate the complexity of the addressing mode 
5731         in comp_cost.
5732         (try_add_cand_for): Prefer using ivs not specific to some object.
5733         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
5735 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
5736             Janis Johnson  <janis187@us.ibm.com>
5738         PR target/34814
5739         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
5740         (TARGET_INSTANTIATE_DECLS): Likewise.
5741         * target.h (expand_to_rtl_hook): New target hook.
5742         (instantiate_decls): Likewise.
5743         * function.c (instantiate_decl): Make non-static.  Rename to...
5744         (instantiate_decl_rtl): ... this.
5745         (instantiate_expr): Use instantiate_decl_rtl.
5746         (instantiate_decls_1): Likewise.
5747         (instantiate_decls): Likewise.
5748         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
5749         * function.h (instantiate_decl_rtl): Add prototype.
5750         * cfgexpand.c (target.h): New include.
5751         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
5752         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
5753         (TARGET_INSTANTIATE_DECLS): Likewise.
5754         (TARGET_INITIALIZER): New target hooks added.
5755         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
5756         New prototype.
5757         * config/rs6000/rs6000.c (tree-flow.h): New include.
5758         (machine_function): Add sdmode_stack_slot field.
5759         (rs6000_alloc_sdmode_stack_slot): New function.
5760         (rs6000_instantiate_decls): Likewise.
5761         (rs6000_secondary_memory_needed_rtx): Likewise.
5762         (rs6000_check_sdmode): Likewise.
5763         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
5764         (TARGET_INSTANTIATE_DECLS): Likewise.
5765         (rs6000_hard_regno_mode_ok): Allow SDmode.
5766         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
5767         (rs6000_emit_move): Handle SDmode.
5768         (function_arg_advance): Likewise.
5769         (function_arg): Likewise.
5770         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
5771         SDmode var args for 32-bit compiles.
5772         (rs6000_secondary_reload_class): Handle SDmode.
5773         (rs6000_output_function_epilogue): Likewise.
5774         (rs6000_function_value): Simplify if statement.
5775         (rs6000_libcall_value): Likewise.
5776         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
5777         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
5778         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
5779         (movsd_hardfloat): New define_insn.
5780         (movsd_softfloat): Likewise.
5781         (movsd_store): Likewise.
5782         (movsd_load): Likewise.
5783         (extendsddd2): Likewise.
5784         (extendsdtd2): Likewise.
5785         (truncddsd2): Likewise.
5786         (movdd_hardfloat64): Fixup comment.
5787         (UNSPEC_MOVSD_LOAD): New constant.
5788         (UNSPEC_MOVSD_STORE): Likewise.
5790 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
5792         PR c++/34965
5793         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
5794         TRUTH_XOR_EXPR.
5795         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
5796         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
5797         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
5798         and TRUTH_XOR_EXPR.
5800 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
5802         PR target/34794
5803         * config.gcc: Separate AIX 5.3 from AIX 6.1.
5804         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
5805         __LONGDOUBLE128 too.
5806         * config/rs6000/aix61.h: New file.
5808 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
5810         PR rtl-optimization/34959
5811         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
5812         popcount and parity rtxes the same mode as their operand.
5813         Truncate or extend the result to the return value's mode
5814         if necessary.
5816 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
5818         PR target/34981
5819         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
5820         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
5821         to GOT_VERSION_REGNUM.
5822         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
5823         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
5824         * config/mips/mips.c (mips_emit_call_insn): New function.
5825         (mips_call_tls_get_addr): Call mips_expand_call directly.
5826         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
5827         emit_call_insn.
5828         (mips16_build_call_stub): Likewise.  Return the call insn or null.
5829         (mips_expand_call): Update the call to mips16_build_call_stub
5830         accordingly and a remove redundant condition.  Assert that MIPS16
5831         stubs do not use lazy binding.  Use mips_emit_call_insn and return
5832         the call insn.
5833         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
5834         TARGET_USE_GOT.
5835         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
5836         (mips_avoid_hazard): Remove hazard_set handling.
5837         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
5838         (UNSPEC_RESTORE_GP): ...this.
5839         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
5840         (FAKE_CALL_REGNO): Rename to...
5841         (GOT_VERSION_REGNUM): ...this.
5842         (type): Add "ghost" value.  Add an associated insn reservation.
5843         (hazard_set): Remove.
5844         (exception_receiver): Rename to...
5845         (restore_gp): ...this and update the unspec identifier accordingly.
5846         (exception_receiver, nonlocal_got_receiver): New expanders.
5847         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
5848         FAKE_CALL_REGNO.  Remove hazard_set attribute.
5849         (set_got_version, update_got_version): New patterns.
5851 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
5853         PR target/34970
5854         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
5856 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
5858         PR other/31955
5859         * doc/install.texi2html: Generate gcc-vers.texi.
5861 2008-01-25  DJ Delorie  <dj@redhat.com>
5863         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
5865 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
5867         * config/c4x: Remove directory.
5868         * config.gcc (crx-*, mt-*): Mark obsolete.
5869         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
5870         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
5871         sh-*-rtemscoff*): Remove cases.
5872         * defaults.h (C4X_FLOAT_FORMAT): Remove.
5873         * real.c (encode_c4x_single, decode_c4x_single,
5874         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
5875         c4x_extended_format): Remove.
5876         * real.h (c4x_single_format, c4x_extended_format): Remove.
5877         * doc/extend.texi (interrupt, naked): Remove mention of attributes
5878         on C4x.
5879         (Pragmas): Remove comment about c4x pragmas.
5880         * doc/install.texi (c4x): Remove target-specific instructions.
5881         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
5882         * doc/md.texi (Machine Constraints): Remove C4x documentation.
5883         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
5884         refer to C4x source files as examples.
5885         (C4X_FLOAT_FORMAT): Remove documentation.
5887 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
5889         * config/bfin/bfin.c (override_options): Reorder tests so that
5890         flag_pic gets enabled for -msep-data.
5892 2008-01-25  Richard Guenther  <rguenther@suse.de>
5894         PR middle-end/32244
5895         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
5896         to its bitfield precision if required.
5898 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
5900         PR middle-end/33880
5901         * tree-nested.c (walk_omp_for): New function.
5902         (convert_nonlocal_reference, convert_local_reference): Call
5903         walk_omp_for on OMP_FOR.
5904         (convert_call_expr): Call walk_body on OMP_FOR's
5905         OMP_FOR_PRE_INIT_BODY.
5907 2008-01-25  Richard Guenther  <rguenther@suse.de>
5909         PR tree-optimization/34966
5910         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
5911         default defs and PHI_NODEs we have to insert after the
5912         defining statement.
5914 2008-01-24  Nick Clifton  <nickc@redhat.com>
5916         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
5917         Provide a default definition.
5918         (LIBGCC2_UNITS_PER_WORD): Likewise.
5920         * config/stormy16/stormy16.c: Include df.h for the prototype
5921         for df_regs_ever_live_p.
5922         (xstormy16_expand_builtin_va_start): Convert the stack offset
5923         into a component_ref and then use POINTER_PLUS_EXPR to add it
5924         to the incoming_virtual_args_rtx.
5925         (xstormy16_gimplify_va_arg_expr): Rename to
5926         xstormy16_gimplify_va_arg_expr.
5927         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
5928         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
5929         xstormy16_gimplify_va_arg_expr.
5930         Fix up some formatting issues.
5932         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
5933         Move to predicates.md.
5934         (xs_hi_general_operand): Likewise.
5935         (xs_hi_nonmemory_operand): Likewise.
5936         * config/stormy16/predicates.md:
5937         (xstormy16_carry_plus_operand): New predicate.
5938         (xs_hi_general_operand): New predicate.
5939         (xs_hi_nonmemory_operand): New predicate.
5940         * config/stormy16/stormy16-protos.h:
5941         (xstormy16_carry_plus_operand): Delete prototype.
5942         (xs_hi_general_operand): Likewise.
5943         (xs_hi_nonmemory_operand): Likewise.
5945         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
5946         modifiers as they are no longer needed and they can trigger
5947         reload spill failures.
5949         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
5950         with a match_operand in order to help reload.
5952         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
5953         constraint with 'e' for the 8th alternative as this version of
5954         the mov.w instruction only accepts the lower 8 registers.
5956 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
5958         PR target/34856
5959         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
5960         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
5961         vector elements.
5963 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
5965         PR middle-end/33333
5966         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
5968 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
5970         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
5971         New functions.
5972         (remove_structure): Update allocations list before removing structure.
5973         
5974 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
5976         * ipa-struct-reorg.c (is_safe_cond_expr, 
5977         create_new_stmts_for_cond_expr): Use integer_zerop function,
5978         that recognize not only zero-pointer, but zero-integer too.
5980 2008-01-25  Ben Elliston  <bje@au.ibm.com>
5982         PR other/22232
5983         * fixproto: Escape "." in sed expression that strips leading "./".
5985 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
5987         PR driver/34904
5988         * gcc.c (SWITCH_OK): Removed.
5989         (SWITCH_LIVE): Changed to bit.
5990         (SWITCH_FALSE): Likewise.
5991         (SWITCH_IGNORE): Likewise.
5992         (switchstr): Change live_cond to unsigned int.
5993         (process_command): Replace SWITCH_OK with 0.
5994         (do_self_spec): Likewise.
5995         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
5996         (give_switch): Likewise.
5997         (used_arg): Likewise.
5998         (do_spec_1): Set the SWITCH_IGNORE bit.
5999         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
6000         bits.  Set the SWITCH_LIVE bit.
6002 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6004         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
6006 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
6008         PR tree-optimization/34472
6009         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
6010         parameter to a "bool *" and set *DATA to false if there is
6011         an unsafe access.  Do not delete the structure here.
6012         (check_cond_exprs): Delete it here instead.
6013         (check_cond_exprs, exclude_cold_structs): Do not increase
6014         I when removing a structure.
6016 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
6018         PR target/34856
6019         * config/i386/i386.c (ix86_expand_vector_init): Consider only
6020         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
6022 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
6024         PR middle-end/34934
6025         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
6026         a fixed vector for stack.
6028 2008-01-24  Ben Elliston  <bje@au.ibm.com>
6030         PR c++/25701
6031         * doc/gcc.texi (Software development): Add a direntry for g++.
6032         
6033 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
6035         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
6036         stale and straggling -fforce-addr comments above.
6038         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
6039         define.
6040         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
6041         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
6043 2008-01-23  Michael Matz  <matz@suse.de>
6045         PR debug/34895
6046         * dwarf2out.c (force_type_die): Use modified_type_die instead of
6047         gen_type_die.
6049 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
6051         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
6052         malloc result type.
6054 2008-01-23 Anatoly Sokolov <aesok@post.ru>
6056         * config/avr/avr.c (avr_current_arch): New variable.
6057         (avr_arch_types): Add 'avr31' and 'avr51' entries.
6058         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
6059         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
6060         (avr_override_options): Init 'avr_current_arch'. 
6061         (base_arch_s): Move from here...
6062         * config/avr/avr.h (base_arch_s): ... here. Add new members 
6063         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename 
6064         'mega' to 'have_jmp_call'.
6065         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__", 
6066         "__AVR_HAVE_RAMPZ__",   "__AVR_HAVE_ELPM__" and  "__AVR_HAVE_ELPMX__"
6067         macros.
6068         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51' 
6069         architectures.
6070         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, 
6071         MULTILIB_MATCHES): (Ditto.).
6073 2008-01-23  Richard Guenther  <rguenther@suse.de>
6075         PR middle-end/31529
6076         * cgraphunit.c (cgraph_reset_node): Always mark the node
6077         not reachable if it is not queued already.
6079 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
6081         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
6082         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
6083         (cputype_selected): New static variable.
6084         (bfin_handle_option): Set it if -mcpu is used.
6085         (override_option): Select default set of workarounds if no cpu type
6086         selected on the command line.
6087         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
6089         From  Michael Frysinger  <michael.frysinger@analog.com>
6090         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
6091         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
6093         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
6094         for bf547, bf523, bf524, and bf526.
6095         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
6096         bf526.
6097         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
6098         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
6099         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
6100         __ADSPBF547__ and __ADSPBF54x__ for bf547.
6101         * doc/invoke.texi (Blackfin Options): Document that
6102         -mcpu now accept bf547, bf523, bf524, and bf526.
6104 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
6106         PR rtl-optimization/34628
6107         * combine.c (try_combine): Stop and undo after the first combination
6108         if an autoincrement side-effect on the first insn has effectively
6109         been lost.
6111 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
6113         PR target/34529
6114         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
6115         Offset addresses are not valid for Altivec or paired float modes.
6117 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
6119         PR c++/34607
6120         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
6121         if DECL_INITIAL (decl) is error_mark_node.
6123         PR c++/34914
6124         * c-common.c (handle_vector_size_attribute): Only allow
6125         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
6126         the same way as pointer, array etc. types.
6127         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
6129         PR c++/34917
6130         * tree.c (build_type_attribute_qual_variant): Call
6131         build_qualified_type if attributes are equal, but quals are not.
6133 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6135         PR 32102
6136         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
6137         * flags.h (warn_strict_aliasing): Remove.
6138         (warn_strict_overflow): Remove.
6139         * opts.c (warn_strict_aliasing): Remove.
6140         (warn_strict_overflow): Remove.
6141         * c-opts.c (c_common_handle_option): -Wall only sets
6142         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
6143         (c_common_post_options): Give default values to -Wstrict-aliasing
6144         and -Wstrict-overflow if they are uninitialized.
6145         * common.opt (Wstrict-aliasing): Specify Var and Init.
6146         (Wstrict-overflow): Likewise.
6148 2008-01-22  Kenneth Zadeck <zadeck@naturalbridge.com>
6150         PR rtl-optimization/26854
6151         PR rtl-optimization/34400
6152         PR rtl-optimization/34884
6153         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
6154         DF_RD->gen.
6155         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
6156         (df_rd_bb_info.expanded_lr_out): Deleted
6157         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
6158         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
6159         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
6160         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
6161         Removed code to allocate, initialize or free expanded_lr_out.
6162         (df_rd_bb_local_compute_process_def): Restructured to make more
6163         understandable.
6164         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
6165         sets if the sets are being trimmed.
6167 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
6169         PR bootstrap/32287
6170         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
6171         (as_vers): Likewise.
6172         * configure: Regenerated.
6174 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6176         PR middle-end/33092
6177         * tree-pass.h (pass_build_alias): New pass.
6178         * tree-ssa-alias.c (gate_build_alias): New.
6179         (pass_build_alias): New.
6180         * passes.c (init_optimization_passes): Add pass_build_alias after
6181         pass_create_structure_vars.
6183 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
6185         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
6186         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
6187         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
6188         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
6189         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
6190         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
6191         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
6192         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
6193         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
6194         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
6195         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
6196         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
6197         * config/s390/s390.md (FP_ALL): New mode iterator.
6198         (_d): New mode attribute.
6199         ("*signbit<mode>2>"): Changed mode of first operand.
6200         ("isinf<mode>2"): Changed mode of first operand.
6201         ("*TDC_insn"): Adaptation for DFP modes.
6203 2008-01-22  Ben Elliston  <bje@au.ibm.com>
6205         * tree.c (check_qualified_type): Improve function description.
6207 2008-01-21  Jason Merrill  <jason@redhat.com>
6209         PR c++/34196
6210         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
6211         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
6212         if it is set.
6214 2008-01-21  DJ Delorie  <dj@redhat.com>
6216         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
6217         return zero.
6219 2008-01-21  Richard Guenther  <rguenther@suse.de>
6221         PR middle-end/34856
6222         * tree-cfg.c (verify_expr): Allow all invariant expressions
6223         instead of just constant class ones as reference argument.
6224         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
6225         like any other constant.
6226         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
6228 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
6230         * regmove.c (fixup_match_1): Update call crossed frequencies.
6232 2008-01-21  Richard Guenther  <rguenther@suse.de>
6234         PR c/34885
6235         * tree-inline.c (setup_one_parameter): Deal with mismatched
6236         types using a VIEW_CONVERT_EXPR.
6238 2008-01-21  Alon Dayan  <alond@il.ibm.com>
6239             Olga Golovanevsky  <olga@il.ibm.com>
6240         
6241         PR tree-optimization/34701
6242         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
6243         when the structure size is not a power of 2.
6245 2008-01-20  Kenneth Zadeck <zadeck@naturalbridge.com>
6247         * doc/install.texi: Add doc for --enable-checking=df.
6248         
6249 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
6251         PR rtl-optimization/34808
6252         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
6254 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
6256         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
6257         input.
6259 2008-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
6261         PR rtl-optimization/26854
6262         PR rtl-optimization/34400
6263         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
6264         DF_RD->gen.
6265         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
6266         (df_rd_bb_info.expanded_lr_out): New.
6267         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
6268         * loop_iv.c (iv_analysis_loop_init): Ditto.
6269         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
6270         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
6271         Added code to allocate, initialize or free expanded_lr_out.
6272         (df_rd_bb_local_compute_process_def): Restructured to make
6273         more understandable.
6274         (df_rd_confluence_n): Add code to do nothing with fake edges and
6275         code to no apply invalidate_by_call sets if the sets are being trimmed.
6276         (df_lr_local_finalize): Renamed to df_lr_finalize.
6277         (df_live_local_finalize): Renamed to df_live_finalize.
6279 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
6281         PR target/34831
6282         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
6283         deciding whether to use reciprocal instructions.
6285 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
6287         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
6288         dwarf2out_note_section_used if cold_text_section is NULL.
6290 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
6292         PR gcov-profile/34610
6293         * tree-cfg.c (make_edges): Mark both outgoing edges from
6294         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
6295         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
6296         from OMP_FOR and OMP_CONTINUE outgoing edges.
6298         * tree-profile.c (tree_profiling): Return early if
6299         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
6300         at the end.
6301         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
6302         from cfun to child_cfun.
6303         * function.h (struct function): Add after_tree_profile bit.
6305 2008-01-19 Anatoly Sokolov <aesok@post.ru>
6307         * config/avr/avr.S (_exit): Disable interrupt.
6309 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
6310             Steven Bosscher  <stevenb.gcc@gmail.com>
6312         PR rtl-optimization/26854
6313         PR rtl-optimization/34400
6314         * df-problems.c (df_live_scratch): New scratch bitmap.
6315         (df_live_alloc): Allocate df_live_scratch when doing df_live.
6316         (df_live_reset): Clear the proper bitmaps.
6317         (df_live_bb_local_compute): Only process the artificial defs once
6318         since the order is not important.
6319         (df_live_init): Init the df_live sets only with the variables
6320         found live by df_lr.
6321         (df_live_transfer_function): Use the df_lr sets to prune the
6322         df_live sets as they are being computed.  
6323         (df_live_free): Free df_live_scratch.
6325 2008-01-18  Ian Lance Taylor  <iant@google.com>
6327         * common.opt: Add fmerge-debug-strings.
6328         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
6329         flag_merge_debug_strings rather than flag_merge_constants.
6330         * doc/invoke.texi (Option Summary): Mention
6331         -fmerge-debug-strings.
6332         (Debugging Options): Document -fmerge-debug-strings.
6334 2008-01-18  Ian Lance Taylor  <iant@google.com>
6336         PR c++/33407
6337         * tree.h (DECL_IS_OPERATOR_NEW): Define.
6338         (struct tree_function_decl): Add new field operator_new_flag.
6339         * tree-inline.c (expand_call_inline): When inlining a call to
6340         operator new, force the return value to go into a variable, and
6341         set DECL_NO_TBAA_P on that variable.
6342         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
6344 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
6346         PR debug/34484
6347         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
6348         DWARF2_DEBUGGING_INFO.
6349         (dwarf2out_note_section_used): Ditto.  Add prototype.
6350         (have_multiple_function_sections, text_section_used,
6351         cold_text_section_used, *cold_text_sections): Move declarations
6352         before their uses.
6354 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
6356         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
6357         field and add signal_ra.
6358         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
6359         assignments to frame state pc.  Move end of stack check after
6360         MD_FALLBACK_FRAME_STATE_FOR.
6361         (uw_update_context_1): Use frame state signal_regs if set, instead
6362         of checking signal_frame flag.
6363         (uw_update_context): Use frame state signal_ra if set.
6364         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
6365         * config/xtensa/linux-unwind.h: New file.
6367 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
6369         * modulo-sched.c (get_sched_window): Fix comment typo.
6371 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
6373         PR tree-optimization/34648
6374         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
6376 2008-01-17  Anatoly Sokolov <aesok@post.ru>
6378         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
6379         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
6381 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
6383         PR rtl-optimization/34400
6384         * df-core.c (df_worklist_dataflow_overeager,
6385         df_worklist_dataflow_doublequeue): New functions.
6386         (df_worklist_dataflow): Two different worklist solvers.
6387         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
6388         New param.
6390 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
6392         PR testsuite/34821
6393         * doc/invoke.texi: Document the dependence on pthread for fopenmp
6394         and ftree-parallelize-loops.
6396 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
6398         PR rtl-optimization/34826
6399         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
6401 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
6403         * global.c (find_reg): Mark the eh regs as used if necessary.
6404         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
6405         * ra.h (struct allocno): no_eh_reg field added.  Changed
6406         no_stack_reg type to bitfield.
6408 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
6410         * tree.c (substitute_in_expr): Add missing 'break'.
6412 2008-01-17  Richard Guenther  <rguenther@suse.de>
6414         PR tree-optimization/34825
6415         * tree-ssa-math-opts.c (is_division_by): Do not recognize
6416         x / x as division to handle.
6418 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6420         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
6421         "-pthread" is specified.
6422         * pa-hpux11.h (LIB_SPEC): Likewise.
6424 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
6425             Peter Bergner  <bergner@vnet.ibm.com>
6427         PR rtl-optimization/33796
6428         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
6430 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6432         PR libgfortran/34699
6433         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
6434         static links.
6435         * pa-hpux10.h (LINK_SPEC): Likewise.
6436         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
6438 2008-01-16  Richard Guenther  <rguenther@suse.de>
6440         PR middle-end/32628
6441         * fold-const.c (fold_convert_const_int_from_int): Do not
6442         set overflow if that occured only because of a sign extension
6443         change when converting from/to a sizetype with the same
6444         precision and signedness.
6446 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
6448         PR debug/34249
6449         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
6450         location address to the correct place.  Update copyright year.
6452 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
6454         * lambda-code.c (lambda_transform_legal_p): Handle the case of
6455         no dependences in the dependence_relations vector.
6457 2008-01-16  Jan Hubicka  <jh@suse.cz>
6459         PR rtl-optimization/31396
6460         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
6461         * cfg.c (dump_reg_info): Print it.
6462         * regs.h (struct reg_info_t): add freq_calls_crossed.
6463         (REG_FREQ_CALLS_CROSSED): New macro.
6464         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
6465         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
6466         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
6467         regmove_optimize): Update call crossed frequencies.
6468         * local-alloc.c (struct qty): Add freq_calls_crossed.
6469         (alloc_qty): Copute freq_calls_crossed.
6470         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
6471         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
6472         * ra.h (struct allocno): Add freq_calls_crossed.
6474 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
6476         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
6477         libgomp when compiling with ftree-parallelize-loops.
6478         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
6480 2008-01-16  Richard Guenther  <rguenther@suse.de>
6482         PR tree-optimization/34769
6483         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
6484         * tree.c (int_cst_value): Instead make this function more
6485         permissive in what it accepts as valid input.  Document this
6486         function always sign-extends the value.
6488 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
6489             Richard Guenther  <rguenther@suse.de>
6491         PR c/34668
6492         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
6493         (gimple_fold_indirect_ref_rhs): ... this.
6494         (gimple_fold_indirect_ref): New function with foldings
6495         that preserve lvalueness.
6496         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
6497         * tree-flow.h (gimple_fold_indirect_ref): Declare.
6498         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
6499         to fold an INDIRECT_REF, fall back to the old use of
6500         fold_indirect_ref_1.
6502 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
6504         * tree-data-ref.c (subscript_dependence_tester_1): Call 
6505         free_conflict_function.
6506         (compute_self_dependence): Same.
6508 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
6510         PR debug/34249
6511         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
6512         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
6513         function global.
6514         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
6515         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
6516         for DWARF2_UNWIND_INFO targets.
6518 2008-01-16  Richard Guenther  <rguenther@suse.de>
6520         PR c/34768
6521         * c-typeck.c (common_pointer_type): Do not merge inconsistent
6522         type qualifiers for function types.
6524 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
6526         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
6527         loop_iterator li from previous commit.
6529 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
6531         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
6533 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
6535         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
6536         (parallelize_loops): Don't parallelize irreducible components.
6538 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6540         PR c++/24924
6541         * c-opts (c_common_post_options): Do not enable CPP
6542         flag_pedantic_errors by default.
6543         
6544 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
6546         PR rtl-optimization/31944
6547         * cse.c (remove_pseudo_from_table): New function.
6548         (merge_equiv_classes): Use above function to remove pseudo-registers.
6549         (invalidate): Likewise.
6551 2008-01-13  Richard Guenther  <rguenther@suse.de>
6553         PR middle-end/34601
6554         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
6555         instead of TYPE_MODE to deal with calls from expand_one_error_var.
6557 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
6559         * gcse.c (cprop_jump): Call validate_unshare_change instead of
6560         validate_change to unshare the source of the PC set.
6562 2008-01-12  Jan Hubicka  <jh@suse.cz>
6564         PR middle-end/32135
6565         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
6566         references above array bounds.  This might trigger bounds checks for
6567         pointers to arrays.
6569 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
6571         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
6572         new_replaceable_dependencies.
6574 2008-01-12  Doug Kwan  <dougkwan@google.com>
6576         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
6577         instead of OPT_Wreturn_type in warning due to ignored return type
6578         qualifiers.
6579         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
6580         options included in -Wextra.
6581         * c.opt: New option -Wignored_qualifiers.
6582         * doc/invoke.texi (Warning Options, -Wextra): Add new option
6583         -Wignore_qualifiers.
6584         (-Wignored-qualifiers): Document.
6585         (-Wreturn-type): Remove description of functionality now handled
6586         by -Wignored-qualifiers.
6588 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
6590         PR ada/33788
6591         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
6592         NOP_EXPR if it is between integral types with the same precision.
6594 2008-01-12  Jan Hubicka  <jh@suse.cz>
6596         PR other/28023
6597         * invoke.texi (max-inline-recursive-depth): Fix default value.
6599 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
6601         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
6602         correct type.
6604 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
6605         
6606         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
6607         
6608 2008-01-11  James E. Wilson  <wilson@specifix.com>
6610         PR target/26015
6611         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
6613 2008-01-11  Anatoly Sokolov <aesok@post.ru>
6615         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't 
6616         save/restore frame pointer register and don't use 'call-prologues' 
6617         optimization in function with "OS_task" attribute.
6619 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
6621         PR middle-end/31309
6622         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
6623         when copying to memory.
6625 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
6627         PR rtl-optimization/30905
6628         * cfgcleanup.c: Include dce.h
6629         (crossjumps_occured): New global variable.
6630         (try_crossjump_bb): Exit loop after finding a fallthru edge.
6631         If something changed, set crossjumps_occured to true.
6632         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
6633         Don't add/remove fake edges to exit here...
6634         (cleanup_cfg): ...but do it here, when crossjumping.
6635         Run a fast DCE when successful crossjumps occured in the latest
6636         iteration of try_optimize_cfg.
6638 2008-01-11  Richard Guenther  <rguenther@suse.de>
6640         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
6641         (struct vn_unary_op_s): Likewise.
6642         (vn_reference_insert): Free old reference on hash collision.
6644 2008-01-10  Raksit Ashok  <raksit@google.com>
6646         PR rtl-optimization/27971
6647         * combine.c (find_split_point): Split PLUS expressions which are
6648         inside a MEM rtx, and whose first operand is complex.
6650 2008-01-10  DJ Delorie  <dj@redhat.com>
6652         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
6653         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
6654         (m32c_hard_regno_ok): Call the underlying function.
6656 2008-01-10  Richard Guenther  <rguenther@suse.de>
6658         PR middle-end/34683
6659         * tree-cfg.c (tree_merge_blocks): Do not go through the
6660         full-blown folding and stmt updating path if we just deal
6661         with virtual operands.
6662         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
6663         test for abnormal SSA_NAMEs.
6665 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
6667         PR middle-end/34641
6668         * reload.c (push_reload): Add assertions.  All constants from
6669         reg_equiv_constant should have been used for replacing the respective
6670         pseudo earlier.
6671         (find_reloads_address): Invoke find_reloads_address_part for
6672         constant taken from the reg_equiv_constant array.
6674 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
6676         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
6677         field (valnum) the first in the struct.  Replace bools with
6678         unit bit fields.
6680 2008-01-10  Richard Guenther  <rguenther@suse.de>
6682         PR tree-optimization/34651
6683         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
6684         types and ordering for masking and converting.
6686 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
6688         PR tree-optimization/34017
6689         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
6690         also for PHI_NODE expressions.
6692 2008-01-09  Jan Hubicka  <jh@suse.cz>
6694         PR tree-optimization/34708
6695         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
6696         based on number of case labels.
6697         (init_inline_once): Remove switch_cost.
6698         * tree-inline.h (eni_weights_d): Remove switch_cost.
6700 2008-01-09  Richard Guenther  <rguenther@suse.de>
6701         Andrew Pinski  <andrew_pinski@playstation.sony.com>
6703         PR middle-end/30132
6704         * gimplify.c (gimplify_cond_expr): Do not create an addressable
6705         temporary if an rvalue is ok or an lvalue is not required.
6707 2008-01-09  Richard Guenther  <rguenther@suse.de>
6709         PR middle-end/34458
6710         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
6711         adjust return type.
6713 2008-01-09  Richard Guenther  <rguenther@suse.de>
6715         PR middle-end/34679
6716         * tree.c (host_integerp): Check for sizetype only if the
6717         type is an integer type.
6719 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
6721         PR debug/26364
6722         * opts.c (decode_options): Disable inlining of functions called
6723         once if not in unit-at-a-time mode.
6725 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
6727         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
6729 2008-01-08  Richard Guenther  <rguenther@suse.de>
6731         PR middle-end/31863
6732         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
6733         out early if the result will be unused.
6735 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
6737         PR target/34709
6738         Revert:
6740         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
6741         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
6742         for TARGET_RECIP.       
6743         
6744 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
6745         
6746         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
6747         for vectorization tuned.
6748         
6749 2008-01-08  Richard Guenther  <rguenther@suse.de>
6751         PR tree-optimization/34683
6752         * tree-ssa-operands.c (operand_build_cmp): Export.
6753         * tree-ssa-operands.h (operand_build_cmp): Declare.
6754         * tree-vn.c (vuses_compare): Remove.
6755         (sort_vuses): Use operand_build_cmp.
6756         (sort_vuses_heap): Likewise.
6757         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
6758         to re-use old VEC if available.  Do not sort already sorted VUSEs.
6759         (vdefs_to_vec): Do not sort already sorted VDEFs.
6761 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
6763         PR middle-end/34694
6764         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
6766 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
6768         PR target/34702
6769         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
6770         limitations of reciprocal sequences on x86 targets.
6772 2008-01-08  Richard Guenther  <rguenther@suse.de>
6774         PR tree-optimization/34683
6775         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
6777 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
6779         PR target/34622
6780         * config/darwin.c (darwin_mergeable_string_section): Don't use
6781         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
6783 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
6785         PR target/34682
6786         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
6787         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
6788         predicates of op0 and op1 to register_operand.
6789         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
6790         expander using X87MODEF mode iterator.  Change predicates of
6791         op0 and op1 to register_operand.
6792         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
6793         corresponding patterns and macroize using MODEF macro.  Change
6794         predicates of op0 and op1 to register_operand and remove
6795         "m" constraint. Disparage "r" alternative with "!".
6796         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
6797         macroize using X87MODEF macro.  Change predicates of op0 and op1
6798         to register_operand and remove "m" constraint.  Disparage "r"
6799         alternative with "!".
6800         (absneg splitter with memory operands): Remove.
6801         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
6802         patterns and macroize using X87MODEF mode iterator.
6803         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
6804         Change predicate of op1 to register_operand.
6805         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
6806         for memory operands.
6808 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
6810         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
6812 2008-01-07  Richard Guenther  <rguenther@suse.de>
6814         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
6815         fields.
6817 2008-01-07  Richard Guenther  <rguenther@suse.de>
6819         PR tree-optimization/34683
6820         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
6821         VOPs of the needed size to save memory.  Use VEC_quick_push
6822         to save compile-time.
6823         (vdefs_to_vec): Likewise.
6825 2008-01-07  Sa Liu  <saliu@de.ibm.com>
6827         * config/spu/spu.md (divdf3): Genetate inline code for double
6828         division.  The implementation doesn't handle INF or NAN, therefore it
6829         only applies when -ffinite-math-only is given.
6831 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
6833         PR libstdc++/34680
6834         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
6835         * doc/cpp.texi ([Common Predefined Macros]): Document.
6837 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
6839         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
6840         order to use commutative addition instead of subtraction.
6842 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6843             Mircea Namolaru  <namolaru@il.ibm.com>
6844             Vladimir Yanovsky  <yanov@il.ibm.com>
6845             Revital Eres  <eres@il.ibm.com>
6847         PR tree-optimization/34263
6848         * tree-outof-ssa.c (process_single_block_loop_latch,
6849         contains_tree_r): New functions.
6850         (analyze_edges_for_bb): Call process_single_block_loop_latch
6851         function to empty single-basic-block latch block if possible.
6853 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
6855         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
6856         for TARGET_RECIP.
6857         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
6859 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
6861         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
6863 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
6865         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
6867 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
6869         PR tree-optimization/34618
6870         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
6871         flag from T.
6873 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
6875         PR target/34673
6876         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
6877         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
6878         Update copyright year.
6880         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
6881         Update copyright year.
6882         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
6883         using NR fixup.
6885 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
6887         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
6888         edge does not point to current bb before changing need_assert.
6890 2008-01-04  Richard Guenther  <rguenther@suse.de>
6892         PR middle-end/34029
6893         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
6894         for verifying purposes if they are is_gimple_min_invariant.
6896 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
6898         PR tree-optimization/34448
6899         PR tree-optimization/34465
6900         * gimplify.c (gimplify_init_constructor): Add new parameter
6901         notify_temp_creation.  Use it.
6902         (gimplify_modify_expr_rhs): Take volatiles into account when
6903         optimizing constructors.
6904         Do not optimize constructors if gimplify_init_constructor will dump to
6905         memory.
6906         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
6907         * gcc.c-torture/compile/pr34448.c: New.
6909 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
6911         PR gcov-profile/34609
6912         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
6913         return_slot if result is TREE_ADDRESSABLE.
6915 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
6917         * config/mips/mips.md (sqrt_condition): Tweak comment.
6918         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
6920 2008-01-03  Tom Tromey  <tromey@redhat.com>
6922         PR c/34457
6923         * c-common.c (c_type_hash): Handle VLAs.
6925 2008-01-03  Jan Hubicka  <jh@suse.cz>
6927         PR tree-optimization/31081
6928         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
6929         0 when inlining and not inlining to first basic block.
6930         (remap_decl): When var is initialized to 0, don't set default_def.
6931         (expand_call_inline): Set entry_bb.
6932         * tree-inline.h (copy_body_data): Add entry_bb.
6934 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
6936         PR c++/34619
6937         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
6938         before returning.
6940         PR tree-optimization/29484
6941         * tree-inline.c (inline_forbidden_p_2): New function.
6942         (inline_forbidden_p): Disallow inlining if some static var
6943         has an address of a local LABEL_DECL in its initializer.
6944         * doc/extend.texi (Labels as Values): Document &&foo behaviour
6945         vs. inlining.
6947 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
6949         PR tree-optimization/34635
6950         * tree-data-ref.c (add_other_self_distances): Make sure that the
6951         evolution step is constant.
6953 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
6955         PR middle-end/34608
6956         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
6958 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
6960         * tree-sra.c (scalarize_init): Insert the generate_element_init
6961         statements after the generate_element_zero statements.
6963 2008-01-02  Richard Guenther  <rguenther@suse.de>
6965         PR middle-end/34093
6966         PR middle-end/31976
6967         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
6968         for very large number of operands instead of ICEing.
6970 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
6972         PR target/34013
6973         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
6974         while stack probing.
6976 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
6978         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
6979         in C++0x mode.
6981 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
6983         PR libmudflap/26442
6984         * tree-mudflap.c (mx_register_decls): Guard warning by
6985         !DECL_ARTIFICIAL check.
6987 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
6989         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
6990         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
6991         sse5_perm<mode>): Fix constraints.