2007-12-17 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / ChangeLog
blobcba749ebb74f08462eb906c3b0a2934a254ccff1
1 2007-12-17  Vladimir Makarov  <vmakarov@redhat.com>
3         * common.opt (fira-assign-after-call-split, fira-biased-coloring,
4         fira-split-around-calls): Remove.
5         (fdump-simple-rtl, fira-verbose): New options.
6         (fira, fira-coalesce): Initiate by 0.
8         * opts.c (common_handle_option):  Process flag_ira_verbose.
10         * flags.h (flag_ira_verbose): New external definition.
12         * toplev.h (flag_ira_assign_after_call_split,
13         flag_ira_biased_coloring, flag_ira_split_around_calls):  Remove.
15         * toplev.c (flag_ira_verbose): New external declaration.
16         (finalize): Call finish_ira_once.
18         * print-rtl.c (flag_simple):  Rename to flag_dump_simple_rtl.
20         * doc/invoke.texi (-fno-ira-assign-after-call-split,
21         -fira-biased-coloring, -fno-ira-split-around-calls):  Remove.
22         (-fdump-simple-rtl, -fira-verbose): New options.
24         * caller-save.c (insert_restore, insert_save): Use
25         adjust_address_nv instead of adjust_address.  Check the mode by
26         reg_save_code.
28         * ira-call.c: Remove file.
30         * ira-lives.c: New file.
32         * Makefile.in (ira-live.o): Add
33         (ira-call.o): Remove.
34         (IRA_INT_H): Add alloc-pool.h.
36         * ira.h (finish_ira_once): New external definition.
38         * ira-int.h (internal_flag_ira_verbose, alloc_pool allocno_pool,
39         copy_pool, allocno_live_range_pool, ira_loop_tree_height,
40         max_point, start_point_ranges, finish_point_ranges,
41         prohibited_mode_move_regs, important_class_nums,
42         ira_curr_regno_allocno_map, allocno_set_words): New external
43         definitions.
44         (loop_tree_node_t, allocno_live_range_t): New typedefs.  Use them
45         everywhere.
46         (ira_loop_tree_node): Rename to loop_tree_node.
47         (loop_tree_node): New member level.
48         (allocno_live_range): New structure.
49         (allocno): New members nrefs, live_ranges,
50         total_conflict_hard_regs, conflict_allocnos_num,
51         total_conflict_allocnos_num, mem_optimized_dest,
52         mem_optimized_dest_p, total_no_stack_reg_p.  Remove members
53         conflict_allocno_vec_active_size and original_memory_cost.  Rename
54         member curr_hard_reg_costs to updated_hard_reg_costs.
55         (ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
56         ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_CONFLICT_ALLOCNOS_NUM,
57         ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM, ALLOCNO_NREFS,
58         ALLOCNO_MEM_OPTIMIZED_DEST, ALLOCNO_MEM_OPTIMIZED_DEST_P,
59         ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_LIVE_RANGES): New access
60         macros.
61         (ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
62         ALLOCNO_ORIGINAL_MEMORY_COST): Remove.
63         (ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS): Rename to
64         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
65         (allocno_copy): New member loop_tree_node.
66         (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move from
67         ira-conflicts.c.
68         (SET_ALLOCNO_SET_BIT, CLEAR_ALLOCNO_SET_BIT,
69         TEST_ALLOCNO_SET_BIT): New macros.
70         (ira_reallocate, allocno_conflict_index, add_allocno_conflict,
71         create_allocno_live_range, finish_allocno_live_range,
72         add_allocno_copy_to_list, swap_allocno_copy_ends_if_necessary,
73         remove_allocno_copy_from_list, add_allocno_copy, ira_flattening,
74         finish_ira_costs_once, rebuild_start_finish_chains,
75         print_live_range_list, debug_live_range_list,
76         debug_allocno_live_ranges, debug_live_ranges,
77         create_allocno_live_ranges, finish_allocno_live_ranges,
78         allocno_conflict_p, loop_edge_freq): New external function
79         definitions.
80         (hard_reg_in_set_p, original_regno_call_crossed_p,
81         ira_max_regno_before, ira_max_regno_call_before): Remove.
82         (traverse_loop_tree): Add new parameter type.
83         (create_copy): Ditto.
84         (debug_conflicts, ira_emit, add_allocno_copy): Add parameter.
85         (debug_ira_call_data, split_around_calls, get_around_calls_regno):
86         Remove.
87         
88         * ira.c (setup_prohibited_mode_move_regs): New function.
89         (internal_flag_ira_verbose, allocno_pool, copy_pool,
90         allocno_live_range_pool, important_class_nums): New external
91         variables.
92         (IRA_NO_OBSTACK): Uncomment it.
93         (ira_reallocate): New function.
94         (setup_cover_classes): Set up important_class_nums.
95         (finish_ira_once): New function.
96         (prohibited_mode_move_regs,
97         prohibited_mode_move_regs_initialized_p): New global variables.
98         (setup_prohibited_mode_move_regs): New function.
99         (setup_reg_renumber): Remove parameters.
100         (setup_allocno_assignment_from_reg_renumber): Rename to
101         setup_allocno_assignment_flags.  Set up ALLOCNO_ASSIGNED_P.
102         (calculate_allocation_cost): Use ALLOCNO_UPDATED_MEMORY_COST.
103         (ira_max_regno_before, ira_max_regno_call_before): Remove.
104         (ira): Set up internal_flag_ira_verbose.  Call
105         setup_prohibited_mode_move_regs.  Create and destroy allocno,
106         copy, and live range pools.  Remove original_regno_call_crossed_p.
107         Report major passes.  Use argument for ira_emit.  Call
108         ira_flattening and df_analyze.  Remove live range splitting around
109         calls.
110         
111         * ira-build.c (setup_loop_tree_level, rebuild_regno_allocno_maps,
112         expand_calls, compress_calls, allocno_conflict_index,
113         add_to_allocno_conflict_vec, propagate_info_to_cap,
114         copy_allocno_live_range, copy_allocno_live_range_list,
115         finish_allocno, finish_copy,
116         propagate_info_to_loop_tree_node_caps, merge_ranges,
117         common_loop_tree_node_dominator, check_and_add_conflicts,
118         add_conflict_with_underlying_allocnos, ira_flattening): New
119         functions.
120         (check_coalesced_allocnos): Remove.
121         (ira_loop_tree_height): New external variable.
122         (form_loop_tree): Call setup_loop_tree_level.
123         (initiate_calls): Allocate a bit more.  (create_allocno): Use
124         pool_alloc.  Set up ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
125         ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_NREFS,
126         ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_MEM_OPTIMIZED_DEST,
127         ALLOCNO_MEM_OPTIMIZED_DEST_P, ALLOCNO_UPDATED_MEMORY_COST, and
128         ALLOCNO_LIVE_RANGES.  Rename
129         ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
130         ALLOCNO_CURR_HARD_REG_COSTS, and
131         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS to
132         ALLOCNO_CONFLICT_ALLOCNOS_NUM, ALLOCNO_UPDATED_HARD_REG_COSTS, and
133         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
134         (add_allocno_conflict): Make it external.  Use
135         add_to_allocno_conflict_vec.
136         (create_cap_allocno): Move part of code to propagate_info_to_cap.
137         (finish_allocnos): Use finish_allocno.
138         (add_allocno_copy_to_list, remove_allocno_copy_from_list,
139         swap_allocno_copy_ends_if_necessary, add_allocno_copy): Move from
140         ira-conflicts.c.  Make them external.
141         (create_copy): Use pool_alloc.  Add parameter loop_tree_node.
142         (finish_copies): Use finish_copy.
143         (ira_curr_regno_allocno_map): New external variable.
144         (traverse_loop_tree): Add parameter bb_first_p.
145         (create_insn_allocnos): Update ALLOCNO_NREFS.
146         (create_loop_tree_node_allocnos): Traverse loop tree nodes with
147         BBs first.  Update ALLOCNO_NREFS.
148         (create_loop_tree_node_caps): Move part of code to
149         propagate_info_to_loop_tree_node_cap.
150         (regno_top_level_allocno_map): New global variable.
151         (ira_build): Create caps before build conflicts.  Call
152         create_allocno_live_ranges.  Propagate info to caps.  Report
153         statistics.
154         (ira_destroy): Call finish_allocno_live_ranges.
156         * ira-conflicts.c (set_allocno_live, clear_allocno_live,
157         record_regno_conflict, mark_reg_store, mark_reg_clobber,
158         mark_reg_conflicts, mark_reg_death): Remove.
159         (add_insn_allocno_copies, add_copies): New functions.
160         (add_allocno_copy_to_list, remove_allocno_copy_from_list,
161         swap_allocno_copy_ends_if_necessary, add_allocno_copy): Remove.
162         (add_allocno_copies): Rename to add_insn_allocno_copies.  Use
163         ira_curr_regno_allocno_map and add_insn_allocno_copies.
164         (single_reg_class, single_reg_operand_class,
165         process_single_reg_class_operands, process_bb_node_for_conflicts):
166         Remove.
167         (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move to
168         ira-int.h.
169         (allocnos_live_bitmap, SET_ALLOCNO_CONFLICT_ROW,
170         CLEAR_ALLOCNO_CONFLICT_ROW, TEST_ALLOCNO_CONFLICT_ROW): Remove.
171         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, TEST_ALLOCNO_LIVE):
172         Use {SET, CLEAR, TEST}_ALLOCNO_SET_BIT.
173         (allocno_row_words, hard_regs_live, curr_bb_node,
174         curr_regno_allocno_map, curr_reg_pressure): Remove.
175         (CONFLICTP): Rename to CONFLICT_P.
176         (regs_set): Remove.
177         (propagate_allocno_info): Use ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
178         Set up ALLOCNO_CALLS_CROSSED_START.
179         (allocno_conflict_p): New function.
180         (allocno_reg_conflict_p): Use allocno_conflict_p.
181         (build_allocno_conflict_vects): Divide original and propagated
182         conflicts.
183         (print_hard_reg_set): New function.
184         (print_conflicts): Use print_hard_reg_set.  Set up mark for the
185         start of propagated conflicts.
186         (debug_conflicts): Add parameter.
187         (ira_build_conflicts): Call add_copies.  Set up
188         ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
190         * ira-costs.c (struct costs): Make cost allocated dynamically.
191         (struct_costs_size, temp_cots, op_costs, this_op_costs): New
192         variables.
193         (costs): Rename to total_costs.
194         (COSTS_OF_ALLOCNO): New macro.
195         (curr_regno_allocno_map): Remove.  Use ira_curr_regno_allocno_map
196         instead.
197         (record_reg_classes): Check NO_REGS in allocno_pref.
198         (record_address_regs): Use COSTS_OF_ALLOCNO.
199         (scan_one_insn): Ditto.
200         (print_costs): Ditto.
201         (find_allocno_class_costs): Ditto.  Pass additional argument to
202         traverse_loop_tree.  Set up NO_REGS if memory is cheaper.
203         (setup_allocno_cover_class_and_costs): Use
204         ALLOCNO_UPDATED_MEMORY_COST instead of
205         ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
206         instead of ALLOCNO_CURR_HARD_REG_COSTS, and
207         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
208         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS.  Pass additional argument to
209         traverse_loop_tree.
210         (init_ira_costs_once): Allocate init_cost, op_costs,
211         this_op_costs, temp_costs.
212         (finish_ira_costs_once): New function.
213         
214         * ira-color.c: Use ALLOCNO_UPDATED_MEMORY_COST instead of
215         ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
216         instead of ALLOCNO_CURR_HARD_REG_COSTS, and
217         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
218         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS.  Use
219         ALLOCNO_TOTAL_CONFLICT_HARD_REGS instead of
220         ALLOCNO_CONFLICT_HARD_REGS.
221         (processed_allocno_bitmap): Rename into
222         processed_coalesced_allocno_bitmap.
223         (allocno_cost_compare_func): Use ALLOCNO_UPDATED_MEMORY_COST
224         instead of ALLOCNO_MEMORY_COST.
225         (assign_hard_reg): Remove biased coloring.
226         (add_allocno_to_ordered_bucket): Check cover class first.
227         (loop_edge_freq): Make it external.
228         (setup_allocno_left_conflicts_num): Check that conflicting
229         allocnos of one class.
230         (allocno_conflict_p): Rename to coalesced_allocno_conflict_p.
231         (color_pass): Check pressure in the loop (not in subloops) for
232         mixed algorithm.
233         (allocno_priorities): New variable.
234         (start_allocno_priorities, finish_allocno_priorities): New
235         functions.
236         (allocno_priority_compare_func): Use allocno_priorities.
237         (priority_coloring): Call start_allocno_priorities and
238         finish_allocno_priorities.
239         (do_coloring): Pass additional argument to traverse_loop_tree.
240         
241         * ira-emit.c (struct move): Add member insn.
242         (create_move): Initialize member insn.
243         (generate_edge_moves): Set up ALLOCNO_MEM_OPTIMIZED_DEST and
244         ALLOCNO_MEM_OPTIMIZED_DEST_P.
245         (change_loop): Check prohibited_mode_move_regs.
246         (curr_jump_map, can_move_through_p): Remove.
247         (unify_moves): Don't move through jump.
248         (modify_move_list): Set up attributes for new allocno used for
249         breaking dependency loops.
250         (emit_move_list): Set up insn codes.
251         (update_costs, add_range_and_copies_from_move_list,
252         add_ranges_and_copies): New functions.
253         (ira_emit): Add a parameter.  Call add_ranges_and_copies.
254         
255 2007-10-09  Vladimir Makarov  <vmakarov@redhat.com>
257         * toplev.h (flag_ira_coalesce): New external variable.
259         * ira-int.h (allocno): New members first_coalesced_allocno,
260         next_coalesced_allocno.
261         (ALLOCNO_FIRST_COALESCED_ALLOCNO, ALLOCNO_NEXT_COALESCED_ALLOCNO):
262         New macros.
263         (reg_class_subintersect): New external variable.
265         * ira-color.c (processed_allocno_bitmap): New variable.
266         (allocno_cost_compare_func, print_coalesced_allocno): New
267         functions.
268         (assign_hard_reg): Process coalesced allocnos.
269         (get_coalesced_allocnos_best_class_and_freq): New function.
270         (add_allocno_to_ordered_bucket): Use the function.
271         (push_allocno_to_stack, push_allocnos_to_stack): Process coalesced
272         allocnos.
273         (remove_allocno_from_bucket_and_push, pop_allocnos_from_stack):
274         Use print_coalesced_allocno.
275         (setup_allocno_available_regs_num,
276         setup_allocno_left_conflicts_num): Process coalesced allocnos.
277         (copy_freq_compare_func, allocno_conflict_p, coalesce_allocnos):
278         New functions.
279         (color_allocnos): Allocate/free processed_allocno_bitmap.  Call
280         coalesce_allocnos.
281         (priority_coloring): Allocate/free processed_allocno_bitmap.
283         * ira-build.c (check_coalesced_allocnos): New function.
284         (create_allocno): Initiate next_coalesced_allocno,
285         first_coalesced_allocno.
286         (create_cap_allocno): Check  next_coalesced_allocno,
287         first_coalesced_allocno.
289         * common.opt (fira-coalesce): New option.
291         * ira.c (setup_reg_class_intersect): New function.
292         (reg_class_subintersect): New global variable.
293         (init_ira_once): Call setup_reg_class_intersect.
295         * doc/invoke.texi (-fira-coalescing): New option.
296         
297 2007-09-20  Vladimir Makarov  <vmakarov@redhat.com>
299         * ira-build.c (create_allocno): Initialize ALLOCNO_BEST_CLASS.
301         * ira-color.c (add_allocno_to_ordered_bucket): Use
302         ALLOCNO_BEST_CLASS.
304         * ira-costs.c (setup_allocno_cover_class_and_costs): Initialize
305         ALLOCNO_BEST_CLASS.
307         * ira-int.h (allocno): New member best_class.
308         (ALLOCNO_BEST_CLASS): New macro.
309         
310 2007-09-19  Vladimir Makarov  <vmakarov@redhat.com>
312         * ira-int.h (allocno): Remove calls_crosed.  Add
313         calls_crossed_start.
314         (ALLOCNO_CALLS_CROSSED): Remove.
315         (ALLOCNO_CALLS_CROSSED_START): Add.
316         (build_df): Remove.
317         (regno_calls, add_regno_call): New.
318         
319         * ira-build.c (initiate_calls, finish_calls, add_regno_call): New
320         functions.
321         (regno_calls, regno_calls_num): New globals.
322         (build_df): Remove.
323         (add_loop_to_tree): Use loop_outer.
324         (form_loop_tree): Ditto.
325         (initiate_allocnos, create_cap_allocno): Remove
326         ALLOCNO_CALLS_CROSSED.  Add ALLOCNO_CALLS_CROSSED_START.
327         (finish_allocnos): Remove ALLOCNO_CALLS_CROSSED.
328         (create_bb_allocnos, create_loop_allocnos): Use DF_LR_{IN,OUT}
329         instead of DF_UPWARD_LIVE_{IN,OUT}.
330         (ira_build): Remove adding df problems and call of
331         free_dominance_info.  Call initiate_calls.
332         (ira_destroy): Add free_dominance_info and finish_calls.  Remove
333         df_finish.
335         * ira-emit.c (change_regs): Return the result.
336         (generate_edge_moves): Use DF_LR_{IN,OUT} instead of
337         DF_UPWARD_LIVE_{IN,OUT}.
338         (change_loop): Call df_insn_rescan and df_note_rescan if there is
339         a change.
340         (can_move_through_p): Use hard_reg_set_equal_p instead of
341         GO_IF_HARD_REG_EQUAL.
343         * ira-costs.c (copy_cost, record_reg_classes,
344         record_address_regs): Call init_move_cost if it is necessary.
345         (tune_allocno_costs_and_cover_classes): Use regno_calls and
346         ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
348         * ira-conflicts.c (n_regs_set): Remove.
349         (regs_set): Make it a vector.
350         (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
351         (process_bb_node_for_conflicts): Use DF_LR_IN instead of
352         DF_UPWARD_LIVE_IN.  Call add_regno_call.  Initialize
353         ALLOCNO_CALLS_CROSSED_START.  Remove ALLOCNO_CALLS_CROSSED.
354         (build_conflict_bit_table): Initialize and finalize regs_set.
355         (propagate_allocno_info): Remove ALLOCNO_CALLS_CROSSED.
356         Initialzie ALLOCNO_CALLS_CROSSED_START.
357         
358         * ira-color.c (setup_allocno_available_regs_num,
359         setup_allocno_left_conflicts_num): New functions.
360         (update_allocno_avaialable_regs): Remove.
361         (sorted_allocnos, allocno_stack_varray): Move upper.
362         (assign_hard_reg): Use hard_reg_set_subset_p instead of
363         GO_IF_HARD_REG_SUBSET.
364         (loop_edge_freq): Use DF_LR_{IN,OUT} instead of
365         DF_UPWARD_LIVE_{IN,OUT}.
366         (put_allocno_into_bucket): Call setup_allocno_available_regs_num
367         and setup_allocno_left_conflicts_num.
368         (print_loop_title): Use loop_depth.
369         (allocno_priority_compare_func): Remove REG_N_REFS and
370         REG_LIVE_LENGTH.
371         (retry_ira_color): Use SET_REGNO.  Use ALLOCNO_CALLS_CROSSED_NUM
372         instead of ALLOCNO_CALLS_CROSSED.
373         (collect_pseudo_call_clobbered_regs):  Use regno_calls and
374         ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
376         * ira-call.c (init_ira_call_data): Add argument to
377         post_order_compute.
378         (n_regs_set): Remove.
379         (regs_set): Make it a vector.
380         (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
381         (mark_referenced_regs): Check null x.
382         (put_save_restore_and_calculate_local_info): Initialize and
383         finalize regs_set.  Use DF_LR_{IN,OUT} instead of
384         DF_UPWARD_LIVE_{IN,OUT}.  Use loop_outer.
385         (do_init_nothing): Remove.
386         (save_trans_fun, save_con_fun_0, restore_trans_fun,
387         restore_con_fun_0): Remove 1st parameter.
388         (save_con_fun_n, restore_con_fun_n): Ditto.  Use
389         df_simple_dataflow instead of df_analyze_problem.
390         (put_save_restore): Use DF_LR_IN instead of DF_UPWARD_LIVE_IN.
391         Call mark_all_referenced_regs for all insn.  Use bitmap progress.
392         (get_move_insn): New function.
393         (put_save_restore_and_calculate_local_info, put_save_restore): Use
394         the function.
396         * ira.c (insn_contains_asm_1, insn_contains_asm,
397         compute_regs_asm_clobbered, expand_reg_info): New functions.
398         (setup_class_subset_and_move_costs): Use hard_reg_set_subset_p
399         instead of GO_IF_HARD_REG_SUBSET.
400         (setup_reg_subclasses, setup_class_translate): Ditto. Use
401         hard_reg_set_equal_p instead of GO_IF_HARD_REG_EQUAL.
402         (setup_eliminable_regset): Call compute_regs_asm_clobbered.  Use
403         df_set_regs_ever_live instead of regs_ever_live.
404         (setup_reg_renumber): Check reg_equiv_const and
405         reg_equiv_invariant_p.
406         (ira): Remove no_new_pseudos. Add df-problems and analyze.  Call
407         regstat_init_n_sets_and_refs and regstat_compute_ri.  Remove
408         delete_unreachable_blocks.  Use expand_reg_info.  Move
409         setup_preferred_alternate_classes upper.  Remove life_analysis.
410         Prepare df-insfrastructure for reload.
412         * regclass.c (setup_reg_classes): Don't use reg_pref_buffer.
414         * function.[ch] (get_call_invalidated_used_regs): Change 1st
415         parameter type.
416         
417         * gengtype.c (main): Add HARD_REG_SET.
419         * alias.c (value_addr_p): New function.
420         (nonoverlapping_memrefs_p): Use it.
422         * caller-save.c (init_caller_save): Use DF_LR_TOP for IRA instead
423         of global_live_at_start.
424         
425 2007-05-04  Vladimir Makarov  <vmakarov@redhat.com>
427         * ira-conflicts.c: Change pseudo to allocno.
428         * ira-color.c: Ditto.
429         * ira-emit.c: Ditto.
430         * ira-build.c: Ditto.
431         * ira.c: Ditto.
432         (important_classes_num, important_classes): New variables.
433         (setup_cover_classes): Set up the variable values.
434         * ira-costs.c: Ditto.
435         (record_reg_classes, record_address_regs, scan_one_insn,
436         find_pseudo_class_costs):  Process only important classes.
437         * ira-call.c: Ditto.  Add comments about placement optimization.
438         * ira-int.h: Ditto.
439         (allocno) Use one bit field for boolean members.
440         (important_classes_num, important_classes): New external
441         definitions.
443 2007-03-16  Vladimir Makarov  <vmakarov@redhat.com>
445         * flags.h (ira_algorithm): Add IRA_ALGORITHM_MIXED.
447         * opts.c (common_handle_option): Set up IRA_ALGORITHM_MIXED from
448         the option argument.
449         
450         * common.opt (fira-assign-after-call-split, fira-propagate-cost,
451         fira-split-around-calls): New options.
452         (fira-ipra): Switch off by default.
453         
454         * doc/invoke.texi (-fira-algorithm): Add mixed algorithm.
455         (-fno-ira-ipra): Rename to -fira-ipra.
456         (-fno-ira-assign-after-call-split, -fira-propagate-cost,
457         -fno-ira-split-around-calls): Add new options.
458         
459         * ira-conflicts.c (curr_reg_pressure): New variable.
460         (set_pseudo_live, clear_pseudo_live, mark_reg_store,
461         mark_reg_death): Update reg pressure.
462         (add_pseudo_copies): Decrease cost for copy with dead pseudo.
463         (process_bb_node_for_conflicts): Propagate reg pressure.
464         (build_conflict_bit_table): Call process_bb_node_for_conflicts in
465         preorder.
466         (ira_build_conflicts): Add new coloring algorithm.
467         (ira_build_conflicts): Add flag_ira_split_around_calls.
469         * ira-emit.c (change_loop): Print allocation on the region
470         borders.  Use pseudo_cap_member instead of regno.
471         (modify_move_list): Add parameter to create pseudo.
472         (ira_emit): Use pseudo_cap_member instead of regno.
473         
474         * ira-build.c (create_loop_tree_nodes): Set up initial reg
475         pressure.
476         (create_pseudo): Add parameter.  Use the parameter value instead
477         of regno.
478         (print_expanded_pseudo): Use pseudo_cap_member instead of regno.
479         (create_cap_pseudo, create_insn_pseudos, create_bb_pseudos,
480         create_loop_pseudos): Add argument to create_pseudo call.
481         (create_pseudos, ira_build): Process IRA_ALGORITHM_MIXED.
482         (create_loop_tree_node_caps):  Create cap pseudo for all pseudos
483         not having father pseudo.
484         
485         * final.c (rest_of_handle_final): Process INCOMING_REGNO.
487         * toplev.h (flag_ira_assign_after_call_split,
488         flag_ira_propagate_cost, flag_ira_split_around_calls): New flags.
490         * caller-save.c (save_call_clobbered_regs): Move declaration
491         this_insn_sets to the function start.
492         
493         * ira-int.h (ira_loop_tree_node): Add reg_pressure.
494         (pseudo): More comments for regno and cap_member
495         (original_regno_call_crossed_p, ira_max_regno_before,
496         ira_max_regno_call_before): New external variables.
497         (create_pseudo): Add parameter.
498         (reassign_conflict_pseudos, debug_ira_call_data,
499         split_around_calls, get_around_calls_regno): New function
500         prototypes.
502         * ira-color.c (assign_hard_reg): Set best_hard_regno and
503         conflict_regs earlier.  Check register availability earlier.
504         Ignore conflict and copy cost for PSEUDO_MAY_BE_SPILLED_P.
505         (calculate_pseudo_spill_cost): Use pseudo_cap instead of regno.
506         Check father pseudo instead of subloop pseudos.
507         (pop_pseudos_from_stack): Set up PSEUDO_ASSIGNED_P for NO_REGS
508         pseudo.
509         (print_loop_title): Print reg pressure.
510         (color_pass): Use PSEUDO_CAP_MEMBER instead of regno.  Add mixed
511         coloring algorithm.
512         (move_spill_restore): Use PSEUDO_CAP_MEMBER instead of regno.  Use
513         subloop pseudos instead of father pseudo for cost calculation.
514         (setup_curr_costs, reassign_conflict_pseudos): New functions.
515         (retry_ira_color): Don't allocate call used registers when
516         flag_caller_saves or flag_ira_split_around_calls.  Call
517         setup_curr_cost.  Print about spilling pseudo split around calls.
518         (reuse_stack_slot): Choose the slot with minimal memory-memory
519         costs.
521         * ira.c (setup_reg_renumber): Add 2 parameters.  Use cap_number
522         instead of regno.  Initialize caller_save_needed.  Make assertion
523         stricter.
524         (setup_pseudo_assignment_from_reg_renumber): New function.
525         (calculate_allocation_cost): Add assertion.
526         (print_redundant_copies): Use cap_number instead of regno.
527         (original_regno_call_crossed_p, ira_max_regno_before,
528         ira_max_regno_call_before): New global variables.
529         (ira): Process IRA_ALGORITHM_MIXED.  Set up
530         ira_max_regno_call_before and ira_max_regno_before.  New arguments
531         for setup_reg_renumber.  Reassign if pseudo changed its class.
532         Split pseudos around the call if necessary.  Reassign if a pseudo
533         is split.
535         * ira.h: New year for Copyright.
537         * ira-costs.c (reg_pref): Rename to pseudo_pref.
538         (reg_pref_buffer): rename to pseudo_pref_buffer.
539         (find_pseudo_class_costs): Initialize best_cost and best_class.
540         Process IRA_ALGORITHM_MIXED.  Find best cover class for regno.
541         (process_bb_node_for_hard_reg_moves): Process IRA_ALGORITHM_MIXED.
543         * Makefile.in (ira-call.o): Add new file.
545         * reload1.c (calculate_needs_all_insns): Remove unnecessary
546         memory-memory move.
548         * ira-call.c: New file.
549         
550 2007-02-09  Vladimir Makarov  <vmakarov@redhat.com>
552         * common.opt (fipra): Rename to fira-ipra.  Make it default.
553         (fira-move-spills, fira-share-save-slots, fira-share-spill-slots):
554         New.
555         * toplev.h (flag_ipra): Rename to flag_ira_ipra.
556         (flag_ira_move_spills, flag_ira_share_save_slots,
557         flag_ira_share_spill_slots): New external definitions.
558         * doc/invoke.texi (-fipra): Rename to -fno-ira-ipra. 
559         (-fno-ira-move-spills, -fno-ira-share-save-slots,
560         -fno-ira-share-spill-slots): New options.
561         * function.c (get_call_invalidated_used_regs): Rename flag_ipra to
562         flag_ira_ipra.
563         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Ditto.
564         * caller-save.c (setup_save_areas): Use flag_ira_share_save_slots.
565         Rename flag_ipra to flag_ira_ipra.
566         (flag_ira_share_save_slots): Use flag_ira_move_spills.
567         * ira-color.c (assign_hard_reg): Skip pseudos with different cover
568         class.
569         (reuse_stack_slot): Use flag_ira_share_spill_slots.
570         * config/arm/arm.h (IRA_COVER_CLASSES): New macro.
571         
572 2007-02-31  Vladimir Makarov  <vmakarov@redhat.com>
574         * reload.h (debug_save_data): New definition.
575         
576         * caller-save.c (struct bb_info): New.
577         (BB_INFO, BB_INFO_BY_INDEX): New macros.
578         (calculate_local_save_info, set_up_bb_rts_numbers, rpost_cmp,
579         calculate_save_in_out, calculate_save_here,
580         make_global_save_analysis, print_hard_reg_set_and_mode,
581         print_hard_reg_set, print_save_data, debug_save_data,
582         set_hard_reg_saved): New functions.
583         (save_call_clobbered_regs): Make global save analysis and use it
584         to put save/restore code.
585         (insert_one_insn): Check CODE_LABEL.
587 2007-01-19  Vladimir Makarov  <vmakarov@redhat.com>
589         * toplev.h (flag_ipra): New external definition.
591         * common.opt (fipra): New option.
593         * doc/invoke.texi (-fipra); Document the option.
595         * cgraph.h (cgraph_node): New member function_used_regs.
597         * cgraph.c (cgraph_create_node): Initialize function_used_regs.
599         * final.c (update_regs_ever_live): New function.
600         (rest_of_handle_final): Set up function_used_regs and
601         call_used_regs.
603         * ira-build.c (ira_build): Clear function call_used_regs.
605         * function.h: Add hard-reg-set.h header.
606         (emit_status): New member call_used_regs.
607         (get_call_invalidated_used_regs): New definition.
609         * function.c (get_call, get_call_invalidated_used_regs): New
610         functions.
612         * Makefile.in (FUNCTION_H): Add hard-reg-set.h.
613         (caller-save.o): Add dependence on output.h and ira.h
615         * regrename.c (copyprop_hardreg_forward_1): Use function
616         get_call_invalidated_used_regs.
618         * ira-conflicts.c (process_bb_node_for_conflicts): Ditto.
620         * postreload-gcse.c (record_opr_changes,
621         reg_set_between_after_reload_p, reg_used_between_after_reload_p):
622         Ditto.
624         * postreload.c (reload_combine, reload_cse_move2add): Ditto.
626         * rtlanal.c (reg_set_between_p): Ditto.
628         * flow.c (propagate_one_insn): Ditto.
630         * df-scan.c (df_insn_refs_record): Ditto.
632         * gcse.c (compute_hash_table_work, compute_store_table): Ditto.
634         * cselib.c (cselib_process_insn): Ditto.
636         * loop-iv.c (simplify_using_assignment): Ditto.
638         * sched-deps.c (sched_analyze): Ditto.
640         * combine.c (record_dead_and_set_regs): Ditto.
642         * resource.c (mark_set_resources, mark_set_resources): Ditto.
644         * var-tracking.c (var-tracking.c): Ditto.
646         * reload1.c (reload): Ditto.
648         * cse.c (invalidate_for_call): Ditto.  Add parameter.
649         (cse_insn): Pass the parameter.
651         * ira.h (try_to_migrate): Remove the definition.
652         (collect_pseudo_call_clobbered_regs): New external definition.
654         * ira-color.c (collect_pseudo_call_clobbered_regs): New function.
656         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Add cost
657         calculation when IPRA is used.
659         * caller-save.c: Include headers output.h and ira.h.
660         (saved_hard_reg): New structure.
661         (hard_reg_map, hard_reg_map, all_saved_regs): New variables.
662         (all_saved_regs, new_saved_hard_reg, finish_saved_hard_regs,
663         saved_hard_reg_compare_func): New functions.
664         (setup_save_areas): Add code for sharing stack slots.
665         (save_call_clobbered_regs): Use function
666         get_call_invalidated_used_regs.
667         
668 2007-01-12  Vladimir Makarov  <vmakarov@redhat.com>
670         * doc/tm.texi (IRA_HARD_REGNO_ADD_COST_MULTIPLIER): New macro.
672         * ira-conflicts.c (add_pseudo_copies): Add copy between output and
673         died operand pseudos.
675         * ira.c (setup_cover_classes, setup_class_translate): Define and
676         call only when IRA_COVER_CLASSES is defined.
677         (no_alloc_regs): Rename to no_unit_alloc_regs.
678         (setup_eliminable_regset): Set up no_alloc_regs.
680         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Modify cost
681         if IRA_HARD_REGNO_ADD_COST_MULTIPLIER is defined.
683         * config/s390/s390.h (IRA_COVER_CLASSES,
684         IRA_HARD_REGNO_ADD_COST_MULTIPLIER(regno)): Define.
685         
686 2006-12-22  Vladimir Makarov  <vmakarov@redhat.com>
688         * rtl.h (setup_reg_classes): New function prototype.
689         
690         * regclass.c (setup_reg_classes): New function.
692         * global.c (global_alloc): Dump information about register
693         assigning.
695         * ira-int.h (ira_build): Change prototype signature.
697         * ira-color.c (pseudo_compare_func): Rename to
698         pseudo_priority_compare_func.
699         (priority_coloring): Dump information about register
700         assigning.
702         * ira-build.c (ira_build): Return true if we have loops for the
703         allocation.
705         * ira.c (setup_preferred_alternate_classes): New function.
706         (ira): Use it instead of regclass.  Rebuild only if we have loops.
708 2006-12-15  Vladimir Makarov  <vmakarov@redhat.com>
710         * ira.h, ira-int.h, ira.c, ira-build.c, ira-costs.c
711         ira-conflicts.c, ira-color.c, ira-emit.c: New files.
713         * flags.h (ira_algorithm): New enumeration.
714         (flag_ira_algorithm): New external variable declaration.
716         * tree-pass.h (pass_ira): New external variable declaration.
718         * toplev.c (ira.h): New include.
719         (flag_ira_algorithm): New global variable.
720         (backend_init): Call init_ira_once.
722         * toplev.h (flag_ira, flag_ira_biased_coloring): New external
723         variable declarations.
725         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
726         may_move_out_cost): New external variable declarations.
727         
728         * caller-save.c (no_caller_save_reg_set): New global variable.
729         (init_caller_save): Set up no_caller_save_reg_set.
730         
731         * global.c (eliminable_regset): Make it external.
732         (gate_handle_global_alloc): New function.
733         (pass_global_alloc): Add the gate function.
735         * opts.c (decode_options):  Print the warning for -fira.
736         (common_handle_option): Process -fira-algorithm option.
738         * timevar.def (TV_IRA): New pass.
740         * hard-reg-set.h (no_caller_save_reg_set): New external variable
741         declaration.
743         * regmove.c (regmove_optimize): Don't do replacement of output
744         operands by input operands.
745         (rest_of_handle_regmove): Don't do CFG cleanup for IRA.
747         * local-alloc.c (update_equiv_regs): Make it external.  Return
748         true if jump label rebuilding should be done.
749         (gate_handle_local_alloc): New function.
750         (pass_local_alloc): Add the gate function.
752         * alias.c (stack_addr_p): New function.
753         (nonoverlapping_memrefs_p): Add code for IRA.
755         * common.opt (fira, fira-algorithm, fira-biased-coloring): New
756         options.
758         * regclass.c (contains_reg_of_mode, move_cost, may_move_in_cost,
759         may_move_out_cost): Make the variables external.
760         
761         * rtl.h (eliminable_regset): New external variable declaration.
762         (update_equiv_regs): New external function definition.
764         * Makefile.in (IRA_INT_H): New definition.
765         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
766         ira-conflicts.o, ira-color.o, and ira-emit.o.
767         (reload1.o, toplev.o): Add dependence on ira.h.
768         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
769         ira-emit.o): New entries.
771         * passes.c (pass_ira): New pass.
773         * reload1.c (alter_reg): Add a new parameter.
774         (pseudo_reg_compare): New function.
775         (reload): Sort pseudos for IRA.  Call alter_reg with the
776         additional parameter.
777         (count_spilled_pseudo): New variable freq.  Use it.
778         (alter_reg): Add code for IRA.
779         (eliminate_regs_1, finish_spills, emit_input_reload_insns,
780         delete_output_reload): Use additional parameter for alter_reg.
781         (finish_spills, emit_input_reload_insns, delete_output_reload):
782         Call mark_allocation_change.
783         (finish_spills): Call retry_ira_color.
784         
785         * doc/invoke.texi: Describe new options -fira,
786         -fira-biased-coloring, and -fira-algorithm.
787         
788         * doc/passes.texi: Decribe IRA.
790         * doc/tm.texi:  Decribe macro IRA_COVER_CLASSES.
791         
792         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
794         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
796         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
798         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
799         
800         Richard Henderson  <rth@redhat.com>
802         * tree-pass.h (pass_lower_subreg): New external definition.
803         * toplev.h (flag_lower_subreg): New external definition.
804         * rtl.def (CONCATN): New rtl expression.
805         * dwarf2out.c (concatn_loc_descriptor): New function.
806         (loc_descriptor): Process CONCATN.
807         * timevar.def (TV_LOWER_SUBREG): New definition.
808         * emit-rtl.c (gen_reg_rtx_offset): New function.
809         (gen_lowpart_common): Process CONCATN.
810         * simplify-rtx.c (simplify_subreg): Process CONCATN.
811         * common.opt (flower-subreg): New options.
812         * rtl.h (gen_reg_rtx_offset): New external definition.
813         * Makefile.in (OBJS-common): Add lower-subreg.o.
814         (lower-subreg.o): New entry.
815         * passes.c (pass_lower_subreg): Add new pass.
816         * lower-subreg.c: New file.
817         
818 2007-08-30  Richard Guenther  <rguenther@suse.de>
820         PR tree-optimization/33199
821         * tree-ssa-structalias.c (handle_lhs_call): New function.
822         (find_func_aliases): In non-IPA mode make sure that for
823         calls that return a pointer we add a constraint for the
824         result to point to anything.
826 2007-08-30  Richard Guenther  <rguenther@suse.de>
828         * doc/invoke.texi (-mveclibabi): Document new target option.
829         * config/i386/i386.opt (-mveclibabi): New target option.
830         * config/i386/i386.c (ix86_veclib_handler): Handler for
831         vectorization library support.
832         (override_options): Handle the -mveclibabi option, initialize
833         the vectorization library handler.
834         (ix86_builtin_vectorized_function): As fallback call the
835         vectorization library handler, if set.
836         (ix86_veclibabi_acml): New static function for ACML ABI style
837         vectorization support.
839 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
841         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
842         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
843         SImode and update m.  Don't run gen_lowpart_common on arbitrary
844         memory address, force it to register first.
846         PR middle-end/32758
847         * dce.c (dce_process_block): Don't delete setters of
848         artificially used registers.
850 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
852         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
853         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
854         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
856 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
858         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
859         pattern.
860         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
861         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
863 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
865         * system.h: Activate -Wcast-qual as warning-only.
867 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
869         PR target/33168
870         * config/rs6000/rs6000.c (compare_section_name): New function.
871         (rs6000_elf_in_small_data_p): Compare section prefixes instead
872         of full name.
874 2007-08-29  Olivier Hainque  <hainque@adacore.com>
876         * xcoffout.c: #include debug.h.
877         * Makefile.in (xcoffout.o): Add debug.h dependency.
879 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
881         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
882         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
884 2007-08-29  Richard Guenther  <rguenther@suse.de>
886         * tree-pretty-print.c (dump_generic_node): Print
887         label DECL_UID as D.%u.
888         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
890 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
892         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
893         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
895 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
897         PR c++/33194
898         * tree.c (build_type_attribute_qual_variant): Set canonical types
899         on the final, unqualified attribute variant before building the
900         qualified version.
902 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
904         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
905         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
907 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
909         Revert
910         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
911         * config/bfin/bfin.md (composev2hi): Put operands into vector
912         with correct order.
914 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
916         * config/bfin/bfin.md (composev2hi): Put operands into vector
917         with correct order.
919 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
921         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
922         attribute when appropriate.
923         (bfin_handle_l1_text_attribute): New.
924         (bfin_handle_l1_data_attribute): New.
925         (bfin_attribute_table): Add attributes: l1_text, l1_data,
926         l1_data_A and l1_data_B.
927         * doc/extend.texi (node Function Attributes): Document l1_text
928         function attribute.
929         (Variable Attributes): Add Blackfin subsection. Document l1_data,
930         l1_data_A and l1_data_B variable attributes.
932 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
934         * config/bfin/bfin.opt (minline-plt): Add.
935         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
936         call to global functions.
937         * doc/invoke.texi (Option Summary): Mention -minline-plt.
938         (Blackfin Options): Document -minline-plt.
940 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
942         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
943         given a non-function.
944         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
946 2007-08-28  DJ Delorie  <dj@redhat.com>
948         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
950 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
952         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
954 2007-08-28  Richard Guenther  <rguenther@suse.de>
956         * tree.h (struct tree_function_decl): Increase size of
957         function_code bitfield.
959 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
960             Kazu Hirata  <kazu@codesourcery.com>
962         * gcc/config/m68k/linux.h
963         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
964         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
965         (m68k_return_in_memory): New.
966         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
967         New.
969 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
971         PR target/32661
972         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
973         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
974         operand) when top VEC_SELECT extracts scalar element.
975         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
976         (*vec_extract_v4sf_mem): Ditto.
978 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
980         PR middle-end/32370
981         * passes.c (init_optimization_passes): Move pass_df_finish
982         after pass_postreload sublist.
984         PR rtl-optimization/33148
985         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
986         (neg (lt X 0)) if X has scalar int mode.
988         PR debug/32914
989         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
990         initializer, use build_vector_from_ctor if possible to create
991         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
992         even after this, return NULL.
994 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
996         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
998 2007-08-28  Richard Guenther  <rguenther@suse.de>
1000         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
1001         (struct tree_function_decl): Make function_code a bitfield.
1002         Add disregard_inline_limits flag.
1003         * cgraphunit.c (cgraph_process_new_functions): Check
1004         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
1005         (cgraph_preserve_function_body_p): Likewise.
1006         * ipa-inline.c (compute_inline_parameters): Likewise.
1007         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
1008         for GNU C extern inline functions.
1009         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
1010         * tree-inline.c (disregard_inline_limits_p): Remove.
1011         * tree-inline.h (disregard_inline_limits_p): Likewise.
1012         * c-common.c (handle_always_inline_attribute): Set
1013         DECL_DISREGARD_INLINE_LIMITS.
1014         * langhooks.c (add_builtin_function): Verify the function code
1015         fits in the bitfield.
1017 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
1018             Vladimir Yanovsky  <yanov@il.ibm.com>
1019             Revital Eres  <eres@il.ibm.com>
1020             Andrey Belevantsev  <abel@ispras.ru>
1022         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
1023         is set.
1024         * modulo-sched.c: Add documentation regarding do-loop.
1025         (doloop_register_get): Change number of arguments to support
1026         the new do-loop pattern and check whether COUNT_REG has no other
1027         occurences in the loop besides in the control part.
1028         (duplicate_insns_of_cycles): Do not duplicate the insn which
1029         changes count_reg as it is already adjusted.
1030         (generate_prolog_epilog): New argument to support the new
1031         do-loop pattern.  Change the subtract instruction to use
1032         expand_simple_binop.  Call duplicate_insns_of_cycles with new
1033         argument.
1034         (sms_schedule): Call doloop_register_get and
1035         generate_prolog_epilog with new argument.  Do not handle loops
1036         with single sets insns with subreg in their lhs.
1037         * loop-doloop.c (doloop_optimize): Support for another do-loop
1038         pattern.
1039         (doloop_condition_get): Gets an instruction instead of a pattern
1040         and change the return condition when the do-loop pattern is
1041         not parallel.
1042         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
1043         deps when considering to not create edges.
1045 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
1047         * doc/extend.texi (gnu_inline funtion attribute): Document C++
1048         behavior.
1050 2007-08-27  Jason Merrill  <jason@redhat.com>
1052         PR c++/31337
1053         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
1054         zero-sized types after calling gimplify_modify_expr_rhs.
1056 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
1058         * regclass.c (init_reg_autoinc): Fix typo.
1060 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
1061         
1062         Fix PR tree-optimization/33173
1063         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
1065 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
1067         PR target/31385
1068         * config/i386/i386.h (VALID_DFP_MODE_P): New.
1069         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
1070         GPR.
1072 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
1073             David Ung  <davidu@mips.com>
1074             Nigel Stephens <nigel@mips.com>
1076         Separate target-specific initialization from general
1077         back-end initialization.
1079         * toplev.c (init_alignments): New, split out from...
1080         (process_options): ...here.
1081         (backend_init_target):  New, split out from...
1082         (backend_init): ...here.
1083         (lang_dependent_init_target):  New, split out from...
1084         (lang_dependent_init): ...here.
1085         (target_reinit): New.
1086         * toplev.h (target_reinit): Declare.
1087         * expr.c (init_expr_target): Renamed from init_expr_once, since it
1088         now can be called more than once.  Update comments.
1089         * expr.h (init_expr_target): Likewise.
1090         * alias.c (init_alias_target): Renamed from init_alias_once, since it
1091         now can be called more than once.  Explicitly zero
1092         static_reg_base_value.
1093         * emit-rtl.c (init_emit_regs): New, split out from...
1094         (init_emit_once): Here.
1095         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
1096         non-const, so that changes from command-line arguments can overwrite
1097         values provided by the static initializers.
1098         (initial_call_really_used_regs): New, used similarly to the above.
1099         (initial_reg_names): Likewise.
1100         (last_mode_for_init_move_cost): Promoted function-local static to
1101         file-scope static to make it accessible outside init_move_cost.
1102         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
1103         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
1104         reg_names since it is needed for parsing command-line options.
1105         (init_move_cost): Use last_mode_for_init_move_cost instead of
1106         function-local static.
1107         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
1108         call_really_used_regs now.  Reinitialize reg_names.  Also
1109         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
1110         reg_class_superunion.  Clear losing_caller_save_reg_set.
1111         Preserve global registers if called more than once.  Reset
1112         move cost, may_move_in_cost, may_move_out_cost, and
1113         last_mode_for_init_move_cost.
1114         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
1115         can now be invoked more than once.  Update comments.
1116         (init_regs): Update comments.
1117         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
1118         and initial_call_really_used_regs, instead of the non-initial 
1119         variables.  This allows us to save the command-line register settings
1120         after target reinitialization.
1121         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
1122         * rtl.h (init_emit_regs): Declare.
1123         (init_reg_modes_target, init_alias_target): Renamed as described
1124         above.
1125         * reload1.c (init_reload): Update comments.
1126         * optabs.c (init_optabs): Likewise.
1127         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
1128         
1129 2007-08-26  Chao-ying Fu  <fu@mips.com>
1131         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
1132         __typeof().
1134 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1136         * alias.c (memory_modified_1, memory_modified_in_insn_p):
1137         Constify.
1138         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
1139         Likewise.
1140         * bb-reorder.c (copy_bb_p): Likewise.
1141         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
1142         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
1143         block_ends_with_condjump_p): Likewise.
1144         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
1145         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
1146         block_ends_with_condjump_p): Likewise.
1147         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
1148         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
1149         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
1150         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
1151         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
1152         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
1153         debug_true_const_tree instad of debug_true_tree.
1154         * debug.c (do_nothing_debug_hooks): Likewise.
1155         * debug.h (ignore_block, debug_true_const_tree): Constify.
1156         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
1157         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
1158         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
1159         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
1160         dbx_reg_number, is_based_loc, field_type,
1161         simple_type_align_in_bits, simple_decl_align_in_bits,
1162         simple_type_size_in_bits, field_byte_offset, insert_float,
1163         type_tag, member_declared_type, is_redundant_typedef,
1164         secname_for_decl, is_inlined_entry_point): Likewise.
1165         * emit-rtl.c (const_next_insn, const_previous_insn,
1166         const_next_nonnote_insn, const_prev_nonnote_insn,
1167         const_next_real_insn, const_prev_real_insn,
1168         const_next_active_insn, const_prev_active_insn, const_next_label,
1169         const_prev_label): Likewise.
1170         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
1171         Likewise.
1172         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
1173         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
1174         sched_insn_is_legitimate_for_speculation_p): Likewise.
1175         * jump.c (reversed_comparison_code_parts,
1176         reversed_comparison_code, reversed_comparison, condjump_label):
1177         Likewise.
1178         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
1179         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
1180         Likewise.
1181         * rtl.h (const_previous_insn, const_next_insn,
1182         const_prev_nonnote_insn, const_next_nonnote_insn,
1183         const_prev_real_insn, const_next_real_insn,
1184         const_prev_active_insn, const_next_active_insn, const_prev_label,
1185         const_next_label, modified_between_p, modified_in_p,
1186         const_note_storeskeep_with_call_p, condjump_label,
1187         reversed_comparison, reversed_comparison_code,
1188         reversed_comparison_code_parts, memory_modified_in_insn_p,
1189         stack_regs_mentioned): Likewise.
1190         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
1191         keep_with_call_p): Likewise.
1192         * sched-deps.c (deps_may_trap_p, sched_get_condition,
1193         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
1194         sd_lists_size, sd_lists_empty_p): Likewise.
1195         * sched-int.h (sched_insns_conditions_mutex_p,
1196         haifa_classify_insn, no_real_insns_p,
1197         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
1198         sd_lists_size, sd_lists_empty_p): Likewise.
1199         * sdbout.c (sdb_debug_hooks): Likewise.
1200         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
1201         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
1202         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
1203         Likewise.
1204         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
1205         tree_can_throw_internal): Likewise.
1206         * tree-flow-inline.h (phi_nodes): Likewise.
1207         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
1208         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
1209         * tree-gimple.c (const_get_call_expr_in): Likewise.
1210         * tree-gimple.h (const_get_call_expr_in): Likewise.
1211         * tree.c (const_lookup_attribute, attribute_list_equal,
1212         attribute_list_contained): Likewise.
1213         * tree.h (attribute_list_equal, attribute_list_contained,
1214         const_lookup_attribute): Likewise.
1215         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
1217 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
1219         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
1220         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
1222 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
1224         PR target/32991
1225         * config/alpha/constraints.md: Delete "svn:mime-type" property
1226         with svn propdel "svn:mime-type".
1228 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
1230         PR middle-end/33181
1231         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
1232         non NOTE insn doesn't cross basic block.
1233         (noce_try_abs): Likewise.
1234         (noce_process_if_block): Likewise.
1236 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
1238         PR target/33151
1239         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
1240         operand without auto-inc-dec.
1241         * config/rs6000/rs6000.md (floatsidf2_internal): Use
1242         offsettable_mem_operand.
1243         (floatunssidf2_internal): Same.
1244         (fix_truncdfsi2_internal): Same.
1245         (floatsidf_ppc64): Same.
1246         (floatunssidf_ppc64): Same.
1247         (fix_trunctfsi2_internal): Same.
1249 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
1251         PR bootstrap/30620
1252         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
1253         pass defines needed for version.c.
1255 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
1257         * configure.ac (--debug-prefix-map check): Change assembler
1258         version presumed to have feature to 2.18.
1259         * configure: Regenerate.
1261 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1263         * c-common.c (vector_types_convertible_p,
1264         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
1265         self_promoting_args_p): Constify.
1266         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
1267         c_promoting_integer_type_p, self_promoting_args_p,
1268         anon_aggr_type_p, vector_types_convertible_p): Likewise.
1269         * c-decl.c (anon_aggr_type_p): Likewise.
1270         * * c-dump.c (dump_stmt): Likewise.
1271         * c-objc-common.c (has_c_linkage): Likewise.
1272         * c-tree.h (same_translation_unit_p): Likewise.
1273         * c-typeck.c (null_pointer_constant_p,
1274         tagged_types_tu_compatible_p, function_types_compatible_p,
1275         type_lists_compatible_p, lvalue_or_else, lvalue_p,
1276         comptypes_internal, struct tagged_tu_seen_cache,
1277         same_translation_unit_p, alloc_tagged_tu_seen_cache,
1278         c_size_in_bytes): Likewise.
1279         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
1280         hash_ptr, eq_ptr): Likewise.
1281         * langhooks-def.h (lhd_decl_ok_for_sibcall,
1282         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
1283         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
1284         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
1285         Likewise.
1286         * optabs.c (optab_for_tree_code): Likewise.
1287         * optabs.h (optab_for_tree_code): Likewise.
1288         * rtl.h (simplify_rtx): Likewise.
1289         * simplify-rtx.c (simplify_rtx): Likewise.
1290         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
1291         dump_flag, dump_node): Likewise.
1292         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
1293         queue_and_dump_type, dump_flag): Likewise.
1294         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
1295         * tree-pass.h (dump_node): Likewise.
1296         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
1297         supportable_narrowing_operation): Likewise.
1298         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
1299         supportable_narrowing_operation): Likewise.
1300         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
1301         is_negative_overflow_infinity, is_positive_overflow_infinity,
1302         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
1303         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
1304         update_value_range, add_equivalence, ssa_name_nonnegative_p,
1305         ssa_name_nonzero_p, fp_predicate): Likewise.
1306         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
1307         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
1308         ssa_name_nonnegative_p): Likewise.
1310 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
1312         * config.gcc : Add x86_64-elf target.
1314 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
1316         * expr.c (store_expr): Fix order of store_by_pieces arguments.
1318 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
1319             Nigel Stephens <nigel@mips.com>
1321         PR target/11787
1323         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
1324         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
1325         * expr.c (SET_BY_PIECES_P): Define.
1326         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
1327         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
1328         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
1329         store_by_pieces.
1330         * expr.h (SET_RATIO): Define.
1331         (can_store_by_pieces, store_by_pieces): Update prototypes.
1332         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
1333         can_store_by_pieces/store_by_pieces.
1334         (expand_builtin_memcpy_args): Likewise.
1335         (expand_builtin_strncpy): Likewise.
1336         (expand_builtin_memset_args): Likewise.  Also remove special case
1337         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
1338         decide what to do instead.
1339         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
1340         to can_store_by_pieces.
1342         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
1343         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
1345         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
1346         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
1347         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
1348         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
1349         (STORE_BY_PIECES_P): Define.
1351 2007-08-24  Tom Tromey  <tromey@redhat.com>
1353         * varpool.c (varpool_last_needed_node): Fix comment typo.
1354         * c-decl.c (duplicate_decls): Fix comment typo.
1355         (clone_underlying_type): Update comment.
1357 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1359         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
1360         alpha_in_small_data_p, alpha_split_complex_arg,
1361         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1362         Constify.
1363         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
1364         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
1365         Likewise.
1366         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
1367         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
1368         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
1369         * config/darwin.c (darwin_binds_local_p): Likewise.
1370         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
1371         Likewise.
1372         * config/i386/i386-protos.h (i386_pe_binds_local_p,
1373         i386_pe_valid_dllimport_attribute_p): Likewise.
1374         * config/i386/i386.c (ix86_function_regparm,
1375         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
1376         x86_can_output_mi_thunk, ix86_mangle_type,
1377         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
1378         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
1379         i386_pe_binds_local_p): Likewise.
1380         * config/ia64/ia64.c
1381         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
1382         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
1383         ia64_invalid_conversion, ia64_invalid_unary_op,
1384         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1385         Likewise.
1386         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
1387         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
1388         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
1389         * config/mips/mips.c (mips_use_blocks_for_constant_p,
1390         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
1391         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1392         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
1393         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
1394         * config/pa/pa.c (pa_commutative_p): Likewise.
1395         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
1396         Likewise.
1397         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
1398         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
1399         rs6000_use_blocks_for_constant_p,
1400         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
1401         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1402         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
1403         * config/s390/s390.c (s390_mangle_type,
1404         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
1405         Likewise.
1406         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1407         th_in_small_data_p): Likewise.
1408         * config/sh/sh.c (sh_ms_bitfield_layout_p,
1409         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1410         Likewise.
1411         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
1412         sparc_mangle_type): Likewise.
1413         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
1414         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
1415         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
1416         Likewise.
1417         * hooks.c (hook_bool_mode_const_rtx_false,
1418         hook_bool_mode_const_rtx_true,
1419         hook_bool_const_tree_hwi_hwi_const_tree_false,
1420         hook_bool_const_tree_hwi_hwi_const_tree_true,
1421         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
1422         hook_constcharptr_const_tree_null,
1423         hook_constcharptr_const_rtx_null,
1424         hook_constcharptr_const_tree_const_tree_null,
1425         hook_constcharptr_int_const_tree_null,
1426         hook_constcharptr_int_const_tree_const_tree_null): New.
1427         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
1428         hook_bool_tree_hwi_hwi_tree_false,
1429         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
1430         hook_int_tree_tree_1, hook_constcharptr_tree_null,
1431         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
1432         hook_constcharptr_int_tree_null,
1433         hook_constcharptr_int_tree_tree_null): Delete.
1434         (default_can_output_mi_thunk_no_vcall): Constify.
1435         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
1436         hook_bool_tree_hwi_hwi_tree_false,
1437         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
1438         hook_int_tree_tree_1, hook_constcharptr_tree_null,
1439         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
1440         hook_constcharptr_int_tree_null,
1441         hook_constcharptr_int_tree_tree_null): Delete.
1442         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
1443         hook_bool_const_tree_hwi_hwi_const_tree_false,
1444         hook_bool_const_tree_hwi_hwi_const_tree_true,
1445         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
1446         hook_constcharptr_const_tree_null,
1447         hook_constcharptr_const_rtx_null,
1448         hook_constcharptr_const_tree_const_tree_null,
1449         hook_constcharptr_int_const_tree_null,
1450         hook_constcharptr_int_const_tree_const_tree_null): New.
1451         (default_can_output_mi_thunk_no_vcall): Constify.
1452         * integrate.c (function_attribute_inlinable_p): Likewise.
1453         * integrate.h (function_attribute_inlinable_p): Likewise.
1454         * jump.c (rtx_renumbered_equal_p): Likewise.
1455         * output.h (decl_readonly_section, categorize_decl_for_section,
1456         default_use_anchors_for_symbol_p, default_binds_local_p,
1457         default_binds_local_p_1): Likewise.
1458         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
1459         Likewise.
1460         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1461         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
1462         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
1463         TARGET_COMP_TYPE_ATTRIBUTES,
1464         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
1465         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
1466         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
1467         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
1468         TARGET_DWARF_CALLING_CONVENTION): Likewise.
1469         * target.h (can_output_mi_thunk, needs_block_p,
1470         first_cycle_multipass_dfa_lookahead_guard_spec,
1471         vector_alignment_reachable, comp_type_attributes,
1472         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
1473         commutative_p, use_blocks_for_constant_p,
1474         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
1475         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
1476         invalid_within_doloop, valid_dllimport_attribute_p,
1477         split_complex_arg, invalid_arg_for_unprototyped_fn,
1478         invalid_conversion, invalid_unary_op, invalid_binary_op):
1479         Likewise.
1480         * targhooks.c (default_invalid_within_doloop,
1481         hook_invalid_arg_for_unprototyped_fn,
1482         default_builtin_vector_alignment_reachable): Likewise.
1483         (hook_bool_rtx_commutative_p): Delete.
1484         (hook_bool_const_rtx_commutative_p): New.
1485         * targhooks.h (default_invalid_within_doloop,
1486         default_builtin_vector_alignment_reachable,
1487         hook_invalid_arg_for_unprototyped_fn): Constify.
1488         (hook_bool_rtx_commutative_p): Delete.
1489         (hook_bool_const_rtx_commutative_p): New.
1490         * varasm.c (bss_initializer_p, decl_default_tls_model,
1491         categorize_decl_for_section, decl_readonly_section,
1492         default_use_anchors_for_symbol_p, default_binds_local_p,
1493         default_binds_local_p_1): Constify.
1495 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1497         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1498         __NO_BUILTIN if -fno-builtin.
1500 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1502         * config/bfin/bfin.c (print_operand): Report error instead of
1503         ICE for wrong operand.
1505 2007-08-24  Michael Matz  <matz@suse.de>
1507         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
1509 2007-08-24  Richard Guenther  <rguenther@suse.de>
1511         PR middle-end/33166
1512         * tree-ssa.c (useless_type_conversion_p): Split into a
1513         recursive and a non-recursive part.
1514         (useless_type_conversion_p_1): New function.
1515         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
1516         from maybe_fold_offset_to_reference is trivially convertible
1517         to the desired type before doing the simplification.
1519 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1521         * expr.c (store_expr): Optimize initialization of an array
1522         with STRING_CST.
1523         * expr.h (builtin_strncpy_read_str): New prototype.
1524         * builtins.c (builtin_strncpy_read_str): Remove prototype.
1525         No longer static.
1527 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
1529         PR middle-end/33157
1530         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
1531         field when initializing if_info structure.
1533 2007-08-24  Richard Guenther  <rguenther@suse.de>
1535         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
1536         dependencies.
1537         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
1538         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
1539         * tree-inline.c (inlinable_function_p): Fold in common parts of
1540         the cannot_inline_tree_fn langhook.
1541         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
1542         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
1543         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1544         cannot_inline_tree_fn langhook.
1545         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
1546         cannot_inline_tree_fn member.
1548 2007-08-24  Richard Guenther  <rguenther@suse.de>
1550         * expr.c (get_inner_reference): Do computation of bitoffset
1551         from offset in a way we can detect overflow reliably.
1553 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1555         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
1557 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1559         * config/bfin/bfin.opt (mfast-fp): Add.
1560         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
1561         libbffastfp override libgcc if -mfast-fp.
1562         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
1563         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
1564         (Blackfin Options): Document -mfast-fp.
1566 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1568         PR tree-optimization/32573
1569         PR middle-end/32946
1570         * tree-data-ref.c (initialize_data_dependence_relation): Clear
1571         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
1572         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
1573         (build_classic_dist_vector): Return false rather than true if
1574         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
1575         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
1576         returned false.  Don't call save_dist_v before calling
1577         build_classic_dist_vector_1.
1578         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
1579         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
1580         DDR_DIR_VECTS vectors.
1582 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
1584         * configure.ac (leb128): Modify sed statement to work with any
1585         binutils version string.
1586         * configure: Regenerate
1588 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1590         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
1591         Wrap in RTX_CODE macro guard.
1592         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
1593         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
1594         arm_mark_dllimport, arm_pe_encode_section_info,
1595         arm_pe_unique_section): Use ISO-C function declarations.
1596         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
1597         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
1598         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
1599         Likewise.
1600         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
1601         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
1602         defining.
1603         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
1604         warnings.
1605         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
1606         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
1607         (register_move_cost): Use ISO-C function declarations.
1608         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
1609         * config/score/score-protos.h (score_declare_object): Add
1610         ATTRIBUTE_PRINTF_4.
1611         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
1612         warnings.
1613         * final.c (profile_function): Avoid empty if-bodies.
1614         
1615         
1616         * calls.c (must_pass_in_stack_var_size,
1617         must_pass_in_stack_var_size_or_pad): Constify.
1618         * config/alpha/alpha-protos.h (function_value): Likewise.
1619         * config/alpha/alpha.c (alpha_return_in_memory,
1620         alpha_pass_by_reference, function_value,
1621         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
1622         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1623         Likewise.
1624         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
1625         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1626         TARGET_PROMOTE_PROTOTYPES): Likewise.
1627         * config/arm/arm-protos.h (arm_return_in_memory,
1628         arm_pad_arg_upward, arm_function_value): Likewise.
1629         * config/arm/arm.c (arm_pass_by_reference,
1630         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
1631         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1632         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
1633         Likewise.
1634         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
1635         * config/avr/avr-protos.h (avr_function_value): Likewise.
1636         * config/avr/avr.c (avr_return_in_memory,
1637         gas_output_limited_string, gas_output_ascii, avr_function_value,
1638         avr_return_in_memory): Likewise.
1639         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
1640         * config/bfin/bfin.c (bfin_pass_by_reference,
1641         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
1642         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
1643         Likewise.
1644         * config/cris/cris.c (cris_pass_by_reference,
1645         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
1646         * config/crx/crx.c (crx_return_in_memory): Likewise.
1647         * config/darwin.c (function_base, machopic_function_base_name):
1648         Likewise.
1649         * config/fr30/fr30.c (fr30_must_pass_in_stack,
1650         TARGET_PROMOTE_PROTOTYPES): Likewise.
1651         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
1652         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
1653         * config/i386/i386-protos.h (ix86_return_in_memory,
1654         ix86_sol10_return_in_memory): Likewise.
1655         * config/i386/i386.c (ix86_function_value,
1656         ix86_function_sseregparm, ix86_must_pass_in_stack,
1657         type_natural_mode, classify_argument, examine_argument,
1658         construct_container, ix86_pass_by_reference, function_value_32,
1659         function_value_64, ix86_function_value_1, return_in_memory_32,
1660         return_in_memory_64, return_in_memory_ms_64,
1661         ix86_return_in_memory, ix86_sol10_return_in_memory,
1662         TARGET_PROMOTE_PROTOTYPES): Likewise.
1663         * config/ia64/ia64-protos.h (ia64_function_value,
1664         ia64_hpux_function_arg_padding): Likewise.
1665         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
1666         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
1667         ia64_hpux_function_arg_padding): Likewise.
1668         * config/iq2000/iq2000-protos.h (function_arg,
1669         iq2000_function_value): Likewise.
1670         * config/iq2000/iq2000.c (iq2000_return_in_memory,
1671         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
1672         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1673         function_arg, iq2000_function_value): Likewise.
1674         * config/m32c/m32c-protos.h (m32c_function_value,
1675         m32c_promote_function_return): Likewise.
1676         * config/m32c/m32c.c (m32c_pass_by_reference,
1677         m32c_promote_prototypes, m32c_promote_function_return,
1678         m32c_function_value): Likewise.
1679         * config/m32r/m32r.c (m32r_return_in_memory,
1680         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
1681         m32r_in_small_data_p): Likewise.
1682         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
1683         Likewise.
1684         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
1685         m68hc11_function_arg_padding): Likewise.
1686         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
1687         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
1688         m68k_function_value): Likewise.
1689         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
1690         mcore_function_value): Likewise.
1691         * config/mcore/mcore.c (handle_structs_in_regs,
1692         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
1693         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1694         mcore_num_arg_regs, mcore_function_value): Likewise.
1695         * config/mips/mips-protos.h (mips_pad_arg_upward,
1696         mips_function_value): Likewise.
1697         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
1698         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
1699         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1700         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
1701         mips_function_value): Likewise.
1702         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
1703         Likewise.
1704         * config/mmix/mmix.c (mmix_pass_by_reference,
1705         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
1706         mmix_encode_section_info): Likewise.
1707         * config/mn10300/mn10300-protos.h (mn10300_function_value):
1708         Likewise.
1709         * config/mn10300/mn10300.c (mn10300_return_in_memory,
1710         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
1711         mn10300_function_value): Likewise.
1712         * config/mt/mt-protos.h (mt_function_value): Likewise.
1713         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
1714         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
1715         * config/pa/pa-protos.h (function_arg_padding, function_value,
1716         pa_return_in_memory): Likewise.
1717         * config/pa/pa.c (pa_pass_by_reference,
1718         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1719         function_arg_padding, function_value, pa_return_in_memory):
1720         Likewise.
1721         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
1722         * config/rs6000/rs6000-protos.h (rs6000_function_value,
1723         function_arg_padding): Likewise.
1724         * config/rs6000/rs6000.c (rs6000_return_in_memory,
1725         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
1726         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
1727         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1728         function_arg_padding, altivec_expand_dst_builtin,
1729         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
1730         altivec_init_builtins, rs6000_common_init_builtins,
1731         rs6000_function_value): Likewise.
1732         * s390/s390-protos.h (s390_function_value): Likewise.
1733         * config/s390/s390.c (s390_function_arg_size,
1734         s390_pass_by_reference, s390_return_in_memory,
1735         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
1736         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
1737         * config/score/score-protos.h (score_function_value): Likewise.
1738         * config/score/score.c (score_arg_partial_bytes,
1739         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1740         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
1741         score_pass_by_reference, score_add_offset, score_function_value):
1742         Likewise.
1743         * config/sh/sh-protos.h (sh_attr_renesas_p,
1744         sh_promote_prototypes): Likewise.
1745         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
1746         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
1747         sh_attr_renesas_p): Likewise.
1748         * config/sparc/sparc-protos.h (function_value,
1749         function_arg_padding): Likewise.
1750         * config/sparc/sparc.c (sparc_promote_prototypes,
1751         sparc_return_in_memory, sparc_pass_by_reference,
1752         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1753         function_arg_record_value_2, function_arg_record_value_1,
1754         function_arg_record_value, function_arg_record_value,
1755         function_arg_padding, function_value): Likewise.
1756         * config/spu/spu-protos.h (spu_function_value): Likewise.
1757         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
1758         spu_function_value): Likewise.
1759         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
1760         Likewise.
1761         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
1762         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
1763         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1764         Likewise.
1765         * config/v850/v850.c (v850_return_in_memory,
1766         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
1767         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
1768         * config/xtensa/xtensa.c (xtensa_return_in_msb,
1769         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
1770         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1771         Likewise.
1772         * explow.c (promote_mode, hard_function_value): Likewise.
1773         * expr.h (hard_function_value, promote_mode): Likewise.
1774         * function.c (aggregate_value_p): Likewise.
1775         * hooks.c (hook_bool_const_tree_true): New.
1776         * hooks.h (hook_bool_const_tree_true): New.
1777         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
1778         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
1779         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1780         TARGET_RETURN_IN_MSB): Likewise.
1781         * target.h (promote_function_args, promote_function_return,
1782         promote_prototypes, return_in_memory, return_in_msb,
1783         pass_by_reference, must_pass_in_stack, callee_copies,
1784         function_value): Likewise.
1785         * targhooks.c (default_return_in_memory,
1786         hook_pass_by_reference_must_pass_in_stack,
1787         hook_callee_copies_named,
1788         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
1789         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
1790         default_function_value): Likewise. 
1791         * targhooks.h (default_return_in_memory,
1792         hook_pass_by_reference_must_pass_in_stack,
1793         hook_callee_copies_named,
1794         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
1795         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
1796         default_function_value): Likewise.
1797         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
1798         (equiv_class_label_hash, equiv_class_label_eq): Constify.
1799         * tree-vectorizer.c (bb_in_loop_p): Likewise.
1800         * tree.c (needs_to_live_in_memory): Likewise.
1801         * tree.h (struct tree_type, needs_to_live_in_memory,
1802         aggregate_value_p, must_pass_in_stack_var_size,
1803         must_pass_in_stack_var_size_or_pad): Likewise.
1804         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
1805         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
1806         lookup_filename): Likewise.
1808 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
1810         PR target/17390
1811         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
1812         fake fcomi i387 instruction for !TARGET_CMOVE.
1813         (ix86_expand_branch): Expand natural sequence with one jump for
1814         all targets, not only TARGET_CMOVE.
1815         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
1816         pattern to implement fake fcomi sequence.  Split instruction after
1817         reload to correct compare sequences.
1818         (*cmpfp_xf_cc): Ditto.
1819         (*cmpfp_<mode>_cc): Ditto.
1820         (*cmpfp_u_cc): Ditto.
1821         (*cmpfp_<mode>_cc): Ditto.
1823 2007-08-23  Richard Guenther  <rguenther@suse.de>
1825         * tree-pretty-print.c (dump_generic_node): Annotate
1826         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
1828 2007-08-23  Richard Guenther  <rguenther@suse.de>
1830         * builtins.c (expand_builtin_mathfn): Wrap argument in
1831         save_expr directly instead of re-building the call.
1832         (expand_builtin_mathfn_2): Likewise.
1833         (expand_builtin_mathfn_3): Likewise.
1834         (expand_builtin_interclass_mathfn): Likewise.
1835         (expand_builtin_int_roundingfn): Set arg.
1836         (expand_builtin_int_roundingfn_2): Likewise.
1838 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
1840         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
1841         *sse_nand<mode>3, *sse_xor<mode>3): New.
1843 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
1845         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
1846         * config/i386/i386.c (print_operand): Handle ';' code.  Output
1847         semicolon for TARGET_MACHO.
1848         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
1849         emit semicolon after 'lock' prefix.
1850         (sync_double_compare_and_swap<mode>): Ditto.
1851         (*sync_double_compare_and_swapdi_pic): Ditto.
1852         (*sync_compare_and_swap_cc<mode>): Ditto.
1853         (sync_double_compare_and_swap_cc<mode>): Ditto.
1854         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
1855         (sync_old_add<mode>): Ditto.
1856         (sync_add<mode>): Ditto.
1857         (sync_sub<mode>): Ditto.
1858         (sync_ior<mode>): Ditto.
1859         (sync_and<mode>): Ditto.
1860         (sync_xor<mode>): Ditto.
1862 2007-08-22  Chao-ying Fu  <fu@mips.com>
1864         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
1865         in DEF_RTL_EXPR.
1866         (copy_rtx): Handle CONST_FIXED.
1867         (rtx_equal_p): Likewise.
1868         * rtl.h (fixed_value.h): New include.
1869         (rtx_def): Add a new field of fixed_value to u.
1870         (XCNMPFV): Define for accessing fixed_value.
1871         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
1872         Define.
1873         * rtl.def (CONST_FIXED): New constant.
1874         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
1875         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
1876         US_ASHIFT): New codes.
1877         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
1878         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
1879         unsigned_fract_convert, unsigned_sat_fract): Document them.
1880         * varasm.c (assemble_integer): Extend to support fixed-point constants
1881         by using different machine classes.
1882         (decode_addr_const): Handle FIXED_CST.
1883         (const_hash_1): Likewise.
1884         (compare_constant): Likewise.
1885         (copy_constant): Likewise.
1886         (const_rtx_hash_1): Handle CONST_FIXED.
1887         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1888         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1889         MODE_VECTOR_UACCUM.
1890         (initializer_constant_valid_p): Handle FIXED_CST.
1891         (output_constant): Support FIXED_POINT_TYPE.
1892         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
1893         * cse.c (hash_rtx): Support CONST_FIXED.
1894         (exp_equiv_p): Likewise.
1895         (cannon_reg): Likewise.
1896         (fold_rtx): Likewise.
1897         (equiv_constant): Likewise.
1898         (cse_process_notes_1): Likewise.
1899         (count_reg_usage): Likewise.
1900         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
1901         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
1902         (wrap_constant): Check CONST_FIXED.
1903         (cselib_hash_rtx): Support CONST_FIXED.
1904         (cselib_subst_to_values): Likewise.
1905         * df-scan.c (df_uses_record): Likewise.
1906         * gcse.c (want_to_gcse_p): Likewise.
1907         (oprs_unchanged_p): Likewise.
1908         (oprs_not_set_p): Likewise.
1909         (compute_transp): Likewise.
1910         (extract_mentioned_regs_helper): Likewise.
1911         * genemit.c (gen_exp): Likewise.
1912         * local-alloc.c (equiv_init_varies_p): Likewise.
1913         (contains_replace_regs): Likewise.
1914         (memref_referenced_p): Likewise.
1915         * loop-invariant.c (check_maybe_invariant): Likewise.
1916         (hash_invariant_expr_1): Likewise.
1917         (invariant_expr_equal_p): Likewise.
1918         * postreload-gcse.c (oprs_unchanged_p): Likewise.
1919         * regclass.c (reg_scan_mark_refs): Likewise.
1920         * regrename.c (scan_rtx): Likewise.
1921         * resource.c (mark_referenced_resources): Likewise.
1922         (mark_set_resources): Likewise.
1923         * rtlanal.c (rtx_unstable_p): Likewise.
1924         (rtx_varies_p): Likewise.
1925         (count_occurrences): Likewise.
1926         (reg_mentioned_p): Likewise.
1927         (modified_between_p): Likewise.
1928         (modified_in_p): Likewise.
1929         (volatile_insn_p): Likewise.
1930         (volatile_refs_p): Likewise.
1931         (side_effects_p): Likewise.
1932         (may_trap_p_1): Likewise.
1933         (inequality_comparisons_p): Likewise.
1934         (computed_jump_p_1): Likewise.
1935         (commutative_operand_precedence): Likewise.
1936         * sched-deps.c (sched_analyze_2): Likewise.
1937         * sched-vis.c (print_value): Likewise.
1938         * reload.c (operands_match_p): Likewise.
1939         (subst_reg_equivs): Likewise.
1940         * reload1.c (eliminate_regs_1): Likewise.
1941         (elimination_effects): Likewise.
1942         (scan_paradoxical_subregs): Likewise.
1943         * alias.c (rtx_equal_for_memref_p): Likewise.
1944         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
1945         * emit-rtl.c (const_fixed_htab): New hash table.
1946         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
1947         Declare.
1948         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
1949         const_fixed_from_fixed_value): New functions.
1950         (verify_rtx_sharing): Handle CONST_FIXED.
1951         (copy_rtx_if_shared_1): Likewise.
1952         (reset_used_flags): Likewise.
1953         (set_used_flags): Likewise.
1954         (copy_insn_1): Likewise.
1955         (init_emit_once): Create const_fixed_htab.
1956         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
1958 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
1960         PR tree-optimization/32949
1961         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
1962         before failing for ivs with non-constant step.
1964 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
1966         * doc/md.texi (Iterators): Renamed from Macros.  All contents
1967         changed to reflect rename of respectively define_code_macro and
1968         define_mode_macro to define_code_iterator and define_mode_iterator.
1969         (Mode Iterators, Code Iterators): Similar.
1970         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
1971         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
1972         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
1973         (initialize_iterators, find_iterator, check_code_iterator)
1974         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
1975         (read_mapping, read_rtx_1): Similar.
1976         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
1977         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
1978         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
1979         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
1980         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
1981         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
1982         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
1983         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
1984         config/rs6000/sync.md, config/rs6000/rs6000.md,
1985         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
1986         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
1987         config/vax/vax.md, config/bfin/bfin.md: Similar.
1989 2007-08-22  David Daney  <ddaney@avtrex.com>
1991         * doc/install.texi (Testing): Mention testing on a simulator.
1993 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
1995         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
1997         * doc/libgcc.texi (Decimal float library routines): Fix formatting
1998         and rearrange floating point conversion functions into different
1999         categories.
2001 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2003         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
2004         dfa_post_advance_cycle): New scheduler hooks.
2005         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
2006         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
2007         new hooks.
2008         (TARGET_SCHED): Use them.
2009         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
2010         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
2011         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
2013         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
2014         function to facilitate debugging.
2015         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
2016         (output_insn_has_dfa_reservation_p): New static function to output
2017         insn_has_dfa_reservation_p ().
2018         (write_automata): Use it.
2019         * genattr.c (main): Output declaration for
2020         insn_has_dfa_reservation_p ().
2022 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
2023             Richard Guenther <rguenther@suse.de>
2024         
2025         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
2026         * simplify_rtx (simplify_binary_operation_1): Likewise.
2027                 
2028 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2030         PR rtl-optimization/32557
2031         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
2032         of REGNO (mws->mw_reg).
2034 2007-08-22  Richard Guenther  <rguenther@suse.de>
2036         PR middle-end/33007
2037         * builtins.c (expand_builtin_int_roundingfn): Replace call
2038         argument wrapped with SAVE_EXPR directly.
2039         (expand_builtin_int_roundingfn_2): Likewise.
2041 2007-08-22  Richard Guenther  <rguenther@suse.de>
2043         * tree-inline.c (inlinable_function_p): Restore disregarding
2044         inline limits for GNU extern inline functions.
2046 2007-08-22  Richard Guenther  <rguenther@suse.de>
2048         PR middle-end/32563
2049         * tree.c (host_integerp): Treat sizetype as signed as it is
2050         sign-extended.
2052 2007-08-21  Ian Lance Taylor  <iant@google.com>
2054         PR tree-optimization/33134
2055         * tree-vrp.c (adjust_range_with_scev): Call
2056         set_value_range_to_value.
2058 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
2060         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
2061         prototype.
2062         
2063 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
2065         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
2066         whitespace.
2068 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
2070         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
2071         cases to set eight bytes at a time.
2072         (expand_block_move): Likewise.
2073         
2074 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
2076         PR debug/32610
2077         * dwarf2out.c (gen_decl_die): Don't call
2078         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
2080 2007-08-21  Paul Brook  <paul@codesourcery.com>
2081             Nathan Sidwell  <nathan@codesourcery.com>
2082             Mark Mitchell  <mark@codesourcery.com>
2083             Joseph Myers  <joseph@codesourcery.com>
2085         * configure.ac: Add --with-pkgversion and --with-bugurl.
2086         * configure: Regenerate.
2087         * doc/install.texi: Document them.
2088         * version.c (version_string): Remove VERSUFFIX.
2089         (VERSUFFIX): Remove.
2090         (pkgversion_string): New.
2091         (bug_report_url): Do not hard-code initializer.
2092         * version.h (pkgversion_string): Declare.
2093         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
2094         Define.
2095         (version.o): Define PKGVERSION and BUGURL.
2096         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
2097         (%.pod): Define BUGURL.
2098         * gcc.c (process_command, main): Use pkgversion_string.
2099         * toplev.c (compile_file, print_version): Likewise.
2100         * protoize.c (main): Likewise.
2101         * gcov.c (print_version): Likewise.  Update copyright date.
2102         * gcov-dump.c (print_version): Likewise.  Update copyright date.
2103         * mips-tdump.c (main): Likewise.  Update copyright date.
2104         * mips-tfile.c (main): Likewise.  Update copyright date.
2105         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
2106         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
2107         shorten description.
2108         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
2109         * doc/gccint.texi: Likewise.
2110         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
2111         Update copyright date.
2113 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
2115         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
2116         (ix86_expand_strlensi_unroll_1): Ditto.
2117         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
2118         (ix86_expand_carry_flag_compare): Update comment.
2120 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
2122         PR middle-end/32912
2123         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
2124         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
2126 2007-08-21  Richard Guenther  <rguenther@suse.de>
2128         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
2130 2007-08-21  Richard Guenther  <rguenther@suse.de>
2132         PR middle-end/33122
2133         * fold-const.c (fold_binary): Remove index +p PTR folding.
2134         Fix types of POINTER_PLUS_EXPR generated by folding of
2135         (PTR +p B) +p A.
2137 2007-08-20  Chao-ying Fu  <fu@mips.com>
2139         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
2140         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
2141         RID_ONEWAY, so that it can be checked in declspecs_add_type.
2142         (c_common_fixed_point_type_for_size): Declare.
2143         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
2144         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
2145         (c_token_starts_declspecs): Likewise.
2146         (c_parser_declspecs): Likewise.
2147         (c_parser_attributes): Likewise.
2148         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
2149         (c_declspecs): Add saturating_p.
2150         * c-decl.c (build_null_declspecs): Initialize saturating_p.
2151         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
2152         _Sat.  Handle RID_SAT.
2153         Avoid using void, bool, char, int, float, double, _Decimal32,
2154         _Decimal64, _Decimal128, and complex with _Sat.
2155         Handle RID_FRACT and RID_ACCUM.
2156         Make sure _Sat is used with _Fract or _Accum.
2157         (finish_declspecs): Handle cts_fract and cts_accum.
2158         * c-common.c (fixed-value.h): New include.
2159         (constant_expression_warning): Handle FIXED_CST.
2160         (overflow_warning): Likewise.
2161         (warnings_for_convert_and_check): Likewise.
2162         (c_common_fixed_point_type_for_size): New.
2163         (c_common_type_for_mode): Handle fixed-point modes to
2164         return various saturating/non-saturating, signed/unsigned types.
2165         (c_common_signed_or_unsigned_type): Support fixed-point types.
2166         (shorten_compare): Check fixed-point zero.
2167         Handle FIXED_POINT_TYPE.
2168         (c_common_truthvalue_conversion): Handle FIXED_CST.
2169         Handle FIXED_POINT_TYPE.
2170         (c_common_nodes_and_builtins): Record builtin types for fixed-point
2171         types.
2172         (handle_mode_attribute): Handle fixed-point modes.  Need to check
2173         if the signness of base type and fixed-point modes are consistent.
2174         (handle_vector_size_attribute): Handle fixed-point modes.
2175         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
2176         (warn_for_div_by_zero): Check fixed-point zero.
2177         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
2178         a common fixed-point type based on fbit, ibit, sign, and saturation.
2179         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
2180         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
2181         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
2182         (convert_for_assignment): Support FIXED_POINT_TYPE.
2183         (digest_init): Handle FIXED_POINT_TYPE.
2184         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
2185         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
2186         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
2187         GE_EXPR, LT_EXPR, GT_EXPR.
2188         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
2189         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
2190         * target.h (gcc_target): Add fixed_point_supported_p.
2191         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
2192         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
2193         (default_fixed_point_supported_p): Define.
2194         * targhooks.h (default_fixed_point_supported_p): Declare.
2195         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
2196         * doc/install.texi (Configuration): Add --enable-fixed-point.
2197         * configure.ac (--enable-fixed-point): New to enable fixed-point
2198         arithmetic extension to C.  For mips targets, we enable it by default.
2199         * configure, config.in: Regenerate.
2201 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
2203         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
2205 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
2207         * dwarf2out.c (text_section_used): Move declaration outside ifdef
2208         DWARF2_DEBUGGING_INFO.
2209         (cold_text_section_used): Same.
2210         (cold_text_section): Same.
2212 2007-08-20  Richard Guenther  <rguenther@suse.de>
2214         * c-typeck.c (convert_for_assignment): Use the type of
2215         the member for the initialization.
2217 2007-08-20  Richard Guenther  <rguenther@suse.de>
2219         * c-objc-common.c (c_disregard_inline_limits): Remove.
2220         * c-objc-common.h (c_disregard_inline_limits): Likewise.
2221         * cgraphunit.c (cgraph_process_new_functions): Call
2222         disregard_inline_limits_p.
2223         (cgraph_preserve_function_body_p): Likewise.
2224         * ipa-inline.c (compute_inline_parameters): Likewise.
2225         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
2226         Remove.
2227         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
2228         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
2229         disregard_inline_limits langhook.
2230         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
2231         Remove.
2232         * langhooks.h (lang_hooks_for_tree_inlining): Remove
2233         disregard_inline_limits langhook.
2234         * tree-inline.c (disregard_inline_limits_p): New function.
2235         * tree-inline.h (disregard_inline_limits_p): Declare.
2237 2007-08-20  Richard Guenther  <rguenther@suse.de>
2239         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
2240         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
2241         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
2242         auto_var_in_fn_p langhook.
2243         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
2244         move ...
2245         * tree.c (auto_var_in_fn_p): ... here.
2246         (find_var_from_fn): Call auto_var_in_fn_p directly.
2247         * langhooks.h (lang_hooks_for_tree_inlining): Remove
2248         auto_var_in_fn_p langhook.
2249         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
2250         (copy_body_r): Likewise.
2251         (self_inlining_addr_expr): Likewise.
2252         * tree.h (auto_var_in_fn_p): Declare.
2254 2007-08-20  Richard Guenther  <rguenther@suse.de>
2256         * tree.c (WALK_SUBTREE): Call walk_tree_1.
2257         (walk_type_fields): Take lh parameter.
2258         (walk_tree): Rename to ...
2259         (walk_tree_1): ... this.  Do not call the walk_subtrees
2260         langhook but the now passed callback.  Pass lh on recursion.
2261         (walk_tree_without_duplicates): Rename to ...
2262         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
2263         and call walk_tree_1.
2264         * tree.h (walk_tree_lh): New typedef.
2265         (walk_tree_1): Declare.
2266         (walk_tree_without_duplicates_1): Likewise.
2267         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
2268         (walk_tree_without_duplicates): New define to
2269         walk_tree_without_duplicates_1 with NULL lh parameter.
2270         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
2271         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
2272         langhook.
2273         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
2274         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
2275         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
2276         initializer.
2278 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2280         PR middle-end/30564
2281         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
2282         code in front of the compacting of basic blocks.
2283         Move the folding of statements inbetween the cgraph checking
2284         and compacting of basic blocks.
2286 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2287            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
2289         PR target/32522
2290         * config/alpha/alpha.c (va_list_skip_additions): Check for
2291         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
2292         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
2293         PLUS_EXPR when checking ap.__base.
2294         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
2295         when doing addition on pointer types.  Use size_int instead of
2296         build_int_cst.
2297         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
2298         ptr_type in the second operand.
2300 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
2302         PR target/33115
2303         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
2305 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2307         PR middle-end/32940
2308         * cfgexpand.c  (expand_one_register_var): Mark pointer
2309         DECL_ARTIFICIAL as REG_POINTER also.
2310         * stmt.c (expand_decl): Likewise.
2312 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
2314         Fix PR 32772
2315         Fix PR 32716
2316         Fix PR 32328
2317         Fix PR 32303
2319         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
2320         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
2321         on_worklist argument and avoid adding things to worklist multiple
2322         times.
2323         (add_to_worklist): Ditto.
2324         (mark_aliases_call_clobbered): Mark entire structure clobbered if
2325         single SFT is clobbered.
2326         (set_initial_properties): Ditto.
2327         (compute_call_clobbered): Update for changes to function
2328         arguments.
2329         (create_overlap_variables_for): Always create SFT for offset 0.
2330         (create_structure_vars): Handle PHI's, since we are in SSA form at
2331         this point.
2332         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
2333         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
2334         TARGET_MEM_REF.
2335         (add_vars_for_offset): Figure out aliases from access + points-to.
2336         (add_virtual_operand): Use add_vars-for_offset.
2337         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
2338         (add_call_clobber_ops): Remove makes_clobbering_call set.
2339         (get_expr_operands): Always pass through the INDIRECT_REF
2340         reference.
2341         * tree-ssa-structalias.c (struct constraint_graph): Remove
2342         variables member.
2343         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
2344         address_taken, pt_used, number_incoming.
2345         (FIRST_ADDR_NODE): Removed.
2346         (merge_graph_nodes): Remove broken code for the moment.
2347         (init_graph): New function.
2348         (build_pred_graph): Remove code to init_graph.
2349         Add location equivalence support.
2350         (struct scc_info): Rename roots to deleted.
2351         (scc_visit): Ditto.
2352         (init_scc_info): Ditto
2353         (init_topo_info): Use graph->size.
2354         (compute_topo_order): Ditto.
2355         (do_da_constraint): Removed.
2356         (do_sd_constraint): Remove calls to find().
2357         set_union_with_increment should always get 0 as last arg here.
2358         (do_complex_constraint): Replace do_da_constraint with assert.
2359         Stop calling find.
2360         (struct equiv_class_label): New.
2361         (pointer_equiv_class_table): Ditto.
2362         (location_equiv_class_table): Ditto.
2363         (equiv_class_label_hash): Ditto.
2364         (equiv_class_label_eq): Ditto
2365         (equiv_class_lookup): Ditto.
2366         (equiv_class_ladd): Ditto.
2367         (pointer_equiv_class): Ditto.
2368         (location_equiv_class): Ditto.
2369         (condense_visit): Rename and rewrite from label_visit to do only
2370         SCC related stuff for HU.
2371         (label_visit): Do HU work for HU.
2372         (perform_var_substitution): Update to do HU and location
2373         equivalence.
2374         (free_var_substitution_info): Update to free HU and location
2375         equivalence structures.  */
2376         (find_equivalent_node): Update for pointer but not location
2377         equivalence.
2378         (unite_pointer_equivalences): New function.
2379         (move_complex_constraints): Rewrite to only do moving.
2380         (rewrite_constraints): Split out of move_complex_constraints.
2381         (solve_graph): Use graph->size.
2382         (process_constraint_1): Add from_call argument, use it.
2383         Split *a = &b into two constraints.
2384         (process_constraint): Use new process_constraint_1.
2385         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
2386         (get_constraint_for): Handle non-pointer integers properly.
2387         Remove code that used to handle structures.
2388         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
2389         with unknown addends.
2390         (handle_rhs_call): New function.
2391         (find_func_aliases): Use handle_rhs_call.
2392         (set_uids_in_ptset): Add an assert.
2393         (set_used_smts): Fix bug in not considering unified vars.
2394         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
2395         (compute_points_to_sets): Update for other function changes.
2396         (delete_points_to_sets): Ditto.
2397         (ipa_pta_execute): Ditto.
2398         (pass_ipa_pta): We need to update SSA after ipa_pta.
2399         
2400 2007-08-19  Jan Hubicka  <jh@suse.cz>
2402         * i386.md: Replace "rim" and "mri" constraints by "g".
2404 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
2406         * dwarf2out.c (text_section_used, cold_text_section_used,
2407         cold_text_section, dwarf2out_note_section_used): New.
2408         (dwarf2out_init): Initialize cold_text_section.
2409         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
2410         dwarf2out_note_section_used.
2411         (size_of_aranges): Only count entry for text section if it was
2412         used.  Count entry for cold text section if it was used.
2413         (output_aranges): Only output entries for text section and cold
2414         text section if they were used.
2416 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
2418         * tree-pretty-print.c (debug_generic_expr): Add a comment about
2419         the function.
2420         (debug_generic_stmt): Likewise.
2421         (debug_tree_chain): Likewise.
2423 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2425         * tree-data-refs.c (split_constant_offset): Expose.
2426         * tree-data-refs.h (split_constant_offset): Add declaration.
2428         * tree-vectorizer.h (dr_alignment_support): Renamed
2429         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
2430         Added a new value dr_explicit_realign.
2431         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
2432         dr_offset, dr_step, and dr_aligned_to, along with new access
2433         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
2434         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
2435         STMT_VINFO_DR_ALIGNED_TO.
2437         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
2438         documentation.
2439         In case of outer-loop vectorization with non-fixed misalignment - use
2440         the dr_explicit_realign scheme instead of the optimized realignment
2441         scheme.
2442         (new_stmt_vec_info): Initialize new fields.
2444         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
2445         'nested_in_vect_loop' case. Change verbosity level.
2446         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
2447         Don't fail on zero step in the outer-loop for loads.
2448         (vect_analyze_data_refs): Call split_constant_offset to calculate
2449         base, offset and init relative to the outer-loop.
2451         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
2452         BSI function argument with a new function argument - at_loop.
2453         Simplify the condition that determines STEP. Takes additional argument
2454         INV_P. Support outer-loop vectorization (handle the
2455         nested_in_vect_loop case), including zero step in the outer-loop. Call
2456         vect_create_addr_base_for_vector_ref with additional argument.
2457         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
2458         Updated function documentation. Handle the 'nested_in_vect_loop' case.
2459         Fixed and simplified calculation of step.
2460         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
2461         of bsi, and with additional argument. Call bump_vector_ptr with
2462         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
2463         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
2464         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
2465         when the realignment setup needs to take place inside the loop.
2466         Support the dr_explicit_realign scheme. Allow generating the optimized
2467         realignment scheme for outer-loop vectorization. Added documentation.
2468         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
2469         the 'nested_in_vect_loop' case, including loads that are invariant in
2470         the outer-loop and the realignment schemes. Handle the case when the
2471         realignment setup needs to take place inside the loop. Call
2472         vect_setup_realignment with additional arguments.  Call
2473         vect_create_data_ref_ptr with additional argument and with loop instead
2474         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
2475         (vect_gen_niters_for_prolog_loop): Call
2476         vect_create_addr_base_for_vector_ref with additional arguments.
2477         (vect_create_cond_for_align_checks): Likewise.
2478         (bump_vector_ptr): Updated to support the new dr_explicit_realign
2479         scheme: takes additional argument bump; argument ptr_incr is now
2480         optional; updated documentation.
2481         (vect_init_vector): Takes additional argument (bsi). Use it, if
2482         available, to insert the vector initialization.
2483         (get_initial_def_for_induction): Pass additional argument in call to
2484         vect_init_vector.
2485         (vect_get_vec_def_for_operand): Likewise.
2486         (vect_setup_realignment): Likewise.
2487         (vectorizable_load): Likewise.
2489 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2491         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
2492         as argument instead of struct loop.
2493         (nested_in_vect_loop_p): New function.
2494         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
2495         vect_used_in_outer.
2496         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
2497         from other phis in the loop.
2498         (destroy_loop_vec_info): Add additional argument to declaration.
2500         * tree-vectorizer.c (supportable_widening_operation): Also check if
2501         nested_in_vect_loop_p (don't allow changing the order in this case).
2502         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
2503         of struct loop. Call nested_in_vect_loop_p and don't require
2504         flag_unsafe_math_optimizations if it returns true.
2505         (new_stmt_vec_info): When setting def_type for phis differentiate 
2506         loop-header phis from other phis.
2507         (bb_in_loop_p): New function.
2508         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
2509         just update their loop_vinfo.  Order of BB traversal now matters -
2510         call dfs_enumerate_from with bb_in_loop_p.
2511         (destroy_loop_vec_info): Takes additional argument to control whether
2512         stmt_vinfo of the loop stmts should be destroyed as well.
2513         (vect_is_simple_reduction): Allow the "non-reduction" use of a
2514         reduction stmt to be defines by a non loop-header phi.
2515         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
2517         * tree-vect-transform.c (vectorizable_reduction): Call
2518         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
2519         (vectorizable_call): Likewise.
2520         (vectorizable_conversion): Likewise.
2521         (vectorizable_operation): Likewise.
2522         (vectorizable_type_promotion): Likewise.
2523         (vectorizable_type_demotion): Likewise.
2524         (vectorizable_store): Likewise.
2525         (vectorizable_live_operation): Likewise.
2526         (vectorizable_reduction): Likewise. Also pass loop_info to
2527         vect_is_simple_reduction instead of loop.
2528         (vect_init_vector): Call nested_in_vect_loop_p.
2529         (get_initial_def_for_reduction): Likewise.
2530         (vect_create_epilog_for_reduction): Likewise.
2531         (vect_init_vector): Check which loop to work with, in case there's an
2532         inner-loop.
2533         (get_initial_def_for_inducion): Extend to handle outer-loop
2534         vectorization. Fix indentation.
2535         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
2536         In the case vect_induction_def get the vector def from the induction
2537         phi node, instead of calling get_initial_def_for_inducion.
2538         (get_initial_def_for_reduction): Extend to handle outer-loop 
2539         vectorization.
2540         (vect_create_epilog_for_reduction): Extend to handle outer-loop
2541         vectorization.
2542         (vect_transform_loop): Change assert to just skip this case.  Add a
2543         dump printout.
2544         (vect_finish_stmt_generation): Add a couple asserts.
2546         (vect_estimate_min_profitable_iters): Multiply
2547         cost of inner-loop stmts (in outer-loop vectorization) by estimated
2548         inner-loop bound.
2549         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
2550         this is an inner-loop reduction in outer-loop vectorization.
2552         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
2553         Same code as what used to be vect_analyze_scalar_cycles, only with
2554         additional argument loop, and loop_info passed to
2555         vect_is_simple_reduction instead of loop.
2556         (vect_analyze_scalar_cycles): Code factored out into
2557         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
2558         Updated documentation.
2559         (analyze_operations): Check for inner-loop loop-closed exit-phis during
2560         outer-loop vectorization that are live or not used in the outerloop,
2561         cause this requires special handling.
2562         (vect_enhance_data_refs_alignment): Don't consider versioning for
2563         nested-loops.
2564         (vect_analyze_data_refs): Check that there are no datarefs in the
2565         inner-loop.
2566         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
2567         and vect_used_in_outer_by_reduction cases.
2568         (process_use): Also consider the case of outer-loop stmt defining an
2569         inner-loop stmt and vice versa.
2570         (vect_analyze_loop_1): New function.
2571         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
2572         loops.  Call vect_analyze_loop_1.
2573         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
2574         been vectorized.  Call destroy_loop_vec_info with additional argument.
2576         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
2577         in the inner-loop when doing outer-loop vectorization. Add
2578         documentation and printout.
2579         (vect_recog_dot_prod_pattern): Likewise. Also add check for
2580         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
2582 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
2584         * tree-affine.h (print_aff): New prototype.
2585         (debug_aff): Likewise.
2586         * tree-affine.c (print_aff): New function.
2587         (debug_aff): Likewise.
2589 2007-08-18  Paul Brook  <paul@codesourcery.com>
2590             Joseph Myers  <joseph@codesourcery.com>
2592         * common.opt (-fdebug-prefix-map=): New option.
2593         * opts.c: Include debug.h.
2594         (common_handle_option): Handle -fdebug-prefix-map.
2595         * final.c: Include ggc.h.
2596         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
2597         remap_debug_filename): New.
2598         * Makefile.in (final.o, opts.o): Update dependencies.
2599         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
2600         * configure.ac: Check for assembler --debug-prefix-map support.
2601         * configure, config.in: Regenerate.
2602         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
2603         (ASM_DEBUG_SPEC): Include ASM_MAP.
2604         * doc/install.texi (--with-debug-prefix-map): Document.
2605         * doc/invoke.texi (-fdebug-prefix-map): Document.
2606         * dbxout.c (dbxout_init, dbxout_start_source_file,
2607         dbxout_source_file): Call remap_debug_filename.
2608         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
2609         dwarf2out_start_source_file, dwarf2out_finish): Call
2610         remap_debug_filename.
2611         (file_table_relative_p): Do not check d->emitted_number.
2612         * toplev.c (output_file_directive): Call remap_debug_filename.
2613         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
2614         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
2616 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2618         * loop-invariant.c (find_invariants_to_move): Add missing macro
2619         argument.
2621 2007-08-17  Tom Tromey  <tromey@redhat.com>
2623         * tree.h (struct tree_label_decl): Removed old "java" fields.
2625 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
2626             Nigel Stephens  <nigel@mips.com>
2628         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
2629         Treat -mno-data-in-code and -mcode-xonly as aliases for
2630         -mcode-readable=no and -mcode-readable=pcrel respectively.
2631         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
2632         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
2633         (MULTILIB_DIRNAMES): Update accordingly.
2635 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
2637         * Makefile.in (version.o): Depend on $(REVISION) only if
2638         REVISION_s is defined.
2640 2007-08-17  Sa Liu  <saliu@de.ibm.com>
2641             Ulrich Weigand  <uweigand@de.ibm.com>
2643         PR middle-end/32970
2644         * tree.c (reconstruct_complex_type): For a pointer to a vector,
2645         use build_qualified_type to retain qualifiers of the base type.
2647 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
2649         * config/score/score.md : Update pattern tablejump.
2650         * config/score/score.c : Update score_initialize_trampoline 
2651         function.
2652         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
2653         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
2654         * doc/contrib.texi: Add my entry.
2656 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
2658         * Makefile.in (REVISION): New.
2659         (REVISION_c): New.
2660         (REVISION_s): New.
2661         (version.o): Also depend on $(REVISION). Add
2662         -DREVISION=$(REVISION_s).
2664         * version.c (version_string): Add REVISION.
2666 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
2668         * tree-eh.c (lower_try_finally_onedest): Reset the locus
2669         of GOTO that's relocated to a different block.
2671 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2673         * c-common.c (const_strip_array_types): New.
2674         * c-common.h (lang_missing_noreturn_ok_p): Delete.
2675         (const_strip_array_types): New.
2676         * c-objc-common.c (c_disregard_inline_limits,
2677         c_warn_unused_global_decl): Constify.
2678         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
2679         c_vla_type_p, c_incomplete_type_error): Likewise.
2680         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
2681         * hooks.c (hook_bool_const_tree_false): New.
2682         * hooks.h (hook_bool_const_tree_false): Likewise.
2683         * langhooks-def.h (lhd_warn_unused_global_decl,
2684         lhd_incomplete_type_error, lhd_expr_size,
2685         lhd_tree_inlining_disregard_inline_limits,
2686         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
2687         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
2688         * langhooks.c (lhd_warn_unused_global_decl,
2689         lhd_incomplete_type_error,
2690         lhd_tree_inlining_disregard_inline_limits,
2691         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
2692         lhd_expr_size): Likewise.
2693         * langhooks.h (lang_hooks_for_tree_inlining,
2694         lang_hooks_for_tree_dump, lang_hooks_for_types,
2695         lang_hooks_for_decls, lang_hooks): Likewise.
2696         * pointer-set.c (pointer_set_t, pointer_set_create,
2697         pointer_set_contains, insert_aux, pointer_set_insert,
2698         pointer_set_traverse, pointer_map_t, pointer_map_create,
2699         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
2700         Likewise.
2701         * pointer-set.h (pointer_set_contains, pointer_set_insert,
2702         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
2703         pointer_map_traverse): Likewise.
2704         * predict.c (assert_is_empty): Likewise.
2705         * tree-affine.c (free_name_expansion): Likewise.
2706         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
2707         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
2708         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
2710 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
2712         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
2713         field.
2714         (destroy_loop_vec_info): Add call to VEC_free.
2715         * tree-vectorizer.h (may_alias_ddrs): Define.
2716         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
2717         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
2718         Change reporting to dump.
2719         (vect_is_duplicate_ddr): New.
2720         (vect_mark_for_runtime_alias_test): New.
2721         (vect_analyze_data_ref_dependences) Add call to
2722         vect_mark_for_runtime_alias_test.
2723         (vect_enhance_data_refs_alignment): Define local variable
2724         vect_versioning_for_alias_required, don't perform
2725         peeling for alignment if versioning for alias is
2726         required.
2727         (vect_enhance_data_refs_alignment): Use
2728         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
2729         PARAM_VECT_MAX_VERSION_CHECKS.
2730         * tree-vect-transform.c
2731         (vect_create_cond_for_alias_checks): New.
2732         (vect_transform_loop): Add call to
2733         vect_create_cond_for_alias_checks.
2734         (vect_vfa_segment_size): New.
2735         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
2736         Rename.
2737         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
2738         * gcc/doc/invoke.texi
2739         (vect-max-version-for-alignment-checks): Document.
2740         (vect-max-version-for-alias-checks): Document.
2741         (vect-max-version-checks): Remove.
2742      
2743 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
2745         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
2746         the same line as the instruction for all asm dialects.
2747         (*rep_movsi): Ditto.
2748         (*rep_movsi_rex64): Ditto.
2749         (*rep_movqi): Ditto.
2750         (*rep_movqi_rex64): Ditto.
2751         (*rep_stosdi_rex64): Ditto.
2752         (*rep_stossi): Ditto.
2753         (*rep_stossi_rex64): Ditto.
2754         (*rep_stosqi): Ditto.
2755         (*rep_stosqi_rex64): Ditto.
2756         (*cmpstrnqi_nz_1): Ditto.
2757         (*cmpstrnqi_nz_rex_1): Ditto.
2758         (*cmpstrnqi_1): Ditto.
2759         (*cmpstrnqi_rex_1): Ditto.
2760         (*strlenqi_1): Ditto.
2761         (*strlenqi_rex_1): Ditto.
2762         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
2763         prefix on the same line as the instruction for all asm dialects.
2764         (sync_double_compare_and_swap<mode>): Ditto.
2765         (*sync_double_compare_and_swapdi_pic): Ditto.
2766         (*sync_compare_and_swap_cc<mode>): Ditto.
2767         (sync_double_compare_and_swap_cc<mode>): Ditto.
2768         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
2769         (sync_old_add<mode>): Ditto.
2770         (sync_add<mode>): Ditto.
2771         (sync_sub<mode>): Ditto.
2772         (sync_ior<mode>): Ditto.
2773         (sync_and<mode>): Ditto.
2774         (sync_xor<mode>): Ditto.
2776 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
2778         PR middle-end/32897
2779         * reload.c (find_reloads): Check that the memory returned by
2780         find_reloads_toplev was not the result of forcing a constant
2781         to memory.
2782         (find_reloads_toplev): Always use simplify_gen_subreg to get
2783         the subreg of a constant.  If the result is also a constant,
2784         but not a legitimate one, force it into the constant pool
2785         and reload its address.
2787 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
2789         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
2790         POPCOUNT.
2792 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
2794         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
2795         directive for the current vector ABI.
2797 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
2799         PR target/32963
2800         * caller-save.c (reg_save_code): Set invalide status on restore code.
2801         
2802 2007-08-15  Diego Novillo  <dnovillo@google.com>
2804         * tree-ssa-alias.c (compute_memory_partitions): Use
2805         alias_bitmap_obstack to allocate bitmaps.
2806         (reset_alias_info): Factor out of init_alias_info.
2807         Mark all name tags not associated to an SSA name for renaming.
2808         (init_alias_info): Call it.
2809         (create_name_tags): Tidy.  Add comments.
2810         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
2812 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2814         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
2815         scheduler dependencies.
2817 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2819         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
2820         "register_operand".
2821         (*iorsi_1_zext): Likewise.
2822         (*iorsi_1_zext_imm): Likewise.
2823         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
2824         with "rm"/"xm" constraint.
2825         (sse2_vmsqrtv2df2): Likewise.
2827 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
2829         PR middle-end/33074
2830         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
2831         REG_LIBCALL note.
2833 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
2835         * tree-pass.h (PROP_pta): Removed.
2836         (TODO_rebuild_alias): New.
2837         (pass_may_alias): Removed.
2838         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
2839         aliasing if we changed something.
2840         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
2841         SSA internally.
2842         (pass_may_alias): Removed.
2843         (create_structure_vars): Return TODO_rebuild_alias.
2844         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
2845         * tree-sra.c (tree_sra): Only rebuild aliasing if something
2846         changed.
2847         (tree_sra_early): We never affect aliasing right now.
2848         * tree-flow.h (compute_may_aliases): New prototype.
2849         * passes.c: Remove pass_may_alias from the passes.
2850         (execute_function_todo): Support TODO_rebuild_alias.    
2852 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
2854         * i386.c: (legitimize_address): Move dllimported variable check
2855         infront of legitimizing pic address of CONST symbols.
2857 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
2859         PR tree-optimization/32941
2860         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
2861         (goto_queue_cmp): Remove.
2862         (find_goto_replacement): Change search method.
2863         (maybe_record_in_goto_queue): Add assert.
2864         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
2865         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
2867 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2869         * alias.c (component_uses_parent_alias_set): Constify.
2870         * alias.h (component_uses_parent_alias_set): Likewise.
2871         * cfgrtl.c (print_rtl_with_bb): Likewise.
2872         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
2873         mpz_get_double_int): Likewise.
2874         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
2875         mpz_get_double_int): Likewise.
2876         * expr.c (is_aligning_offset, undefined_operand_subword_p,
2877         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
2878         Likewise.
2879         * expr.h (safe_from_p): Likewise.
2880         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
2881         Likewise.
2882         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
2883         zero_sized_type, goa_lhs_expr_p): Likewise.
2884         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
2885         * rtl.h (print_rtl_with_bb): Likewise.
2886         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
2887         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
2888         * tree-flow-inline.h (bb_stmt_list): Constify.
2889         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
2890         cbsi_stmt): New.
2891         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
2892         const_first_stmt, const_last_stmt): New.
2893         (block_may_fallthru, empty_block_p): Constify.
2894         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
2895         EXPR_ONLY_BODY): New.
2896         (expr_first, expr_last, expr_only): Use macro for body.
2897         (const_expr_first, const_expr_last, const_expr_only): New.
2898         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
2899         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
2900         ctsi_prev, ctsi_stmt): New.
2901         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
2902         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
2903         * tree-ssa-loop-niter.c (loop_only_exit_p,
2904         derive_constant_upper_bound): Likewise.
2905         * tree-ssa-phiopt.c (empty_block_p): Likewise.
2906         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
2907         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
2908         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
2909         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
2910         * tree.c (get_type_static_bounds): Likewise.
2911         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
2912         (get_type_static_bounds): Constify.
2914 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2916         PR target/30315
2917         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
2918         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
2919         (*<addsub><mode>3_cc_overflow): New.
2920         (*add<mode>3_cconly_overflow): New.
2921         (*sub<mode>3_cconly_overflow): New.
2922         (*<addsub>si3_zext_cc_overflow): New.
2923         * config/i386/predicates.md (fcmov_comparison_operator): Accept
2924         CCCmode for LTU, GTU, LEU and GEU.
2925         (ix86_comparison_operator): Likewise.
2926         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
2927         * config/i386/i386.c (put_condition_code): Support CCCmode.
2928         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
2929         or MINUS expressions.
2931 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
2933         PR c/30428
2934         * c-typeck.c (build_binary_op): Disallow vector float types with
2935         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
2937 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
2939         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
2940         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
2941         (dep_def): New typedef.
2942         (init_dep_1, sd_debug_dep): Declare functions.
2943         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
2944         (debug_dep_links): Remove.
2945         (struct _deps_list): New field 'n_links'.
2946         (DEPS_LIST_N_LINKS): New macro.
2947         (FOR_EACH_DEP_LINK): Remove.
2948         (create_deps_list, free_deps_list, delete_deps_list): Remove
2949         declaration.
2950         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
2951         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
2952         (copy_deps_list_change_con, move_dep_link): Ditto.
2953         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
2954         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
2955         'dep_count'.
2956         (INSN_BACK_DEPS): Remove.
2957         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
2958         New macros.
2959         (INSN_DEP_COUNT): Remove.
2960         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
2961         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
2962         Declare global variables.
2963         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
2964         (add_forw_dep, compute_forward_dependences): Remove declarations.
2965         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
2966         (add_back_forw_dep, delete_back_forw_dep): Ditto.
2967         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
2968         functions.
2969         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
2970         New constants.
2971         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
2972         (sd_list_types_def): New typedef.
2973         (sd_next_list): Declare function.
2974         (struct _sd_iterator): New type.
2975         (sd_iterator_def): New typedef.
2976         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
2977         functions.
2978         (FOR_EACH_DEP): New cycle wrapper.
2979         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
2980         Declare functions.
2981         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
2982         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
2983         Ditto.
2985         * sched-deps.c (init_dep_1): Make global.
2986         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
2987         constants.
2988         (dump_dep): New static function.
2989         (dump_dep_flags): New static variable.
2990         (sd_debug_dep): New function.
2991         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
2992         the list.
2993         (move_dep_link): Use remove_from_deps_list (), instead of
2994         detach_dep_link ().
2995         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
2996         (dep_link_is_detached_p): New static function.
2997         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
2998         instead.
2999         (dn_pool, dl_pool): New alloc_pools.
3000         (dn_pool_diff, dl_pool_diff): New static variables.
3001         (create_dep_node, delete_dep_node): New static function.
3002         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
3003         (deps_list_empty_p): Make it static.  Use 'n_links' field.
3004         (deps_pools_are_empty_p): New static function.
3005         (alloc_deps_list, delete_deps_list): Remove.
3006         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
3007         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
3008         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
3009         (forward_dependency_cache): Remove.
3010         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
3011         'back' from the names.  Change signature to use dep_t instead of
3012         equivalent quad.
3013         (add_back_dep): Ditto.  Make global.
3014         (check_dep_status): Rename to check_dep ().
3015         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
3016         New functions.
3017         (sd_finish_insn): Ditto.
3018         (sd_find_dep_between_no_cache): New static function.
3019         (sd_find_dep_between): New function.
3020         (ask_dependency_caches, set_dependency_caches): New static functions.
3021         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
3022         (add_or_update_dep_1): Separate pieces of functionality into
3023         ask_dependency_caches (), update_dependency_caches (),
3024         change_spec_dep_to_hard (), update_dep ().
3025         (get_back_and_forw_lists): New static function.
3026         (sd_add_dep): Separate setting of dependency caches into
3027         set_dependency_caches ().
3028         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
3029         New functions.
3030         (sd_delete_dep): Ditto.
3031         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
3032         (dump_lists): New static function.
3033         (sd_debug_lists): New debug function.
3034         (delete_all_dependences, fixup_sched_groups): Update to use
3035         sd_* infrastructure.
3036         (sched_analyze_2): Create data-speculative dependency only if
3037         data-speculation is enabled.
3038         (sched_analyze_insn): If insn cannot be speculative, make all its
3039         dependencies non-speculative.
3040         (sched_analyze): Use sd_init_insn ().
3041         (add_forw_dep, compute_forward_dependencies): Remove.
3042         (delete_dep_nodes_in_back_deps): New static function.
3043         (sched_free_deps): New function.
3044         (init_dependency_caches): Init alloc_pools.
3045         (extend_depedency_caches): Update after removing of
3046         forward_dependency_cache.
3047         (free_dependency_caches): Ditto.  Free alloc_pools.
3048         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
3049         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
3050         Ditto.
3051         (add_back_forw_dep, delete_back_forw_dep): Ditto.
3052         (add_dependence): Use init_dep ().
3053         (get_dep_weak_1): New static function.
3054         (get_dep_weak): Move logic to get_dep_weak_1 ().
3055         (dump_ds): New static function moved from haifa-sched.c:
3056         debug_spec_status ().
3057         (debug_ds): New debug function.
3058         (check_dep_status): Rename to check_dep ().  Update to check whole
3059         dependencies.
3061         * haifa-sched.c (spec_info): Make global.
3062         (added_recovery_block_p): Rename to
3063         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
3064         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
3065         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
3066         to use new interfaces.
3067         (ok_for_early_queue_removal): Ditto.
3068         (schedule_block): Initialize logical uids of insns emitted by the
3069         target.
3070         (sched_init): Initialize new variable.
3071         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
3072         interfaces.
3073         (extend_global): Initialize insn data.
3074         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
3075         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
3076         new interfaces.
3077         (add_to_speculative_block): Update to use new interfaces.
3078         (create_recovery_block): Set new variables.
3079         (create_check_block_twin, fix_recovery_deps): Update to use new
3080         interfaces.
3081         (sched_insn_is_legitimate_for_speculation_p): New function.
3082         (speculate_insn): Move checking logic to
3083         sched_insn_is_legitimate_for_speculation_p ().
3084         (sched_remove_insn): Finalize sched-deps information of instruction.
3085         (clear_priorities, add_jump_dependencies): Update to use new
3086         interfaces.
3087         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
3088         
3089         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
3090         to use new interfaces.
3091         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
3092         (new_ready): Try to use control speculation only if it is available.
3093         (add_branch_dependences): Update to use new interfaces.
3094         (compute_block_backward_dependences): Rename to
3095         compute_block_dependences ().  Call
3096         targetm.sched.dependencies_evaluation_hook ().
3097         (free_block_dependencies): New static function.
3098         (debug_dependencies): Update to use new interfaces.
3099         (schedule_region): Remove separate computation of forward dependencies.
3100         Move call of targetm.sched.dependencies_evaluation_hook () to
3101         compute_block_dependences ().  Free dependencies at the end of
3102         scheduling the region.
3104         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
3105         new interfaces.
3106         (add_deps_for_risky_insns): Ditto.
3107         (schedule_ebb): Remove separate computation of forward dependencies.
3108         Free dependencies at the end of scheduling the ebb.
3110         * ddg.c (create_ddg_dependence): Update to use new interfaces.
3111         (build_intra_loop_deps): Ditto.  Remove separate computation of
3112         forward dependencies.  Free sched-deps dependencies.
3114         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
3115         to use new interfaces.
3116         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
3118         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
3119         new interfaces.
3120         (is_costly_group): Ditto.
3122 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3124         * alias.c (rtx_equal_for_memref_p): Constify.
3125         * basic-block.h (const_edge, const_basic_block): New.
3126         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
3127         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
3128         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
3129         probably_never_executed_bb_p, edge_probability_reliable_p,
3130         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
3131         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
3132         Likewise.
3133         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
3134         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
3135         Likewise.
3136         * cfganal.c (flow_active_insn_p, forwarder_block_p,
3137         flow_nodes_print, dfs_enumerate_from): Likewise.
3138         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
3139         control_flow_insn_p, count_basic_blocks): Likewise.
3140         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
3141         get_loop_body_with_size, loop_exit_edge_p): Likewise.
3142         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
3143         average_num_loop_insns, loop_exit_edge_p,
3144         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
3145         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
3146         average_num_loop_insns, seq_cost): Likewise.
3147         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
3148         * dominance.c (dominated_by_p): Likewise.
3149         * emit-rtl.c (validate_subreg): Likewise.
3150         * except.c (can_throw_internal, can_throw_external): Likewise.
3151         * except.h (can_throw_internal, can_throw_external): Likewise.
3152         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
3153         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
3154         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
3155         simple_mem, store_ops_ok, load_kills_store, find_loads,
3156         store_killed_in_insn, store_killed_after, store_killed_before,
3157         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
3158         Likewise.
3159         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
3160         noce_mem_write_may_trap_or_fault_p): Likewise.
3161         * pointer-set.c (pointer_set_contains, pointer_map_contains):
3162         Likewise.
3163         * pointer-set.h (pointer_set_contains, pointer_map_contains):
3164         Likewise.
3165         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
3166         probably_cold_bb_p, probably_never_executed_bb_p,
3167         edge_probability_reliable_p, br_prob_note_reliable_p,
3168         can_predict_insn_p): Likewise.
3169         * regclass.c (reg_set_to_hard_reg_set): Likewise.
3170         * resource.c (return_insn_p): Likewise.
3171         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
3172         Likewise.
3173         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
3174         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
3175         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
3176         verify_gimple_modify_stmt): Likewise.
3177         * tree-chrec.c (is_not_constant_evolution,
3178         is_multivariate_chrec_rec, is_multivariate_chrec,
3179         chrec_contains_symbols, chrec_contains_undetermined,
3180         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
3181         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
3182         eq_evolutions_p, scev_direction): Likewise.
3183         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
3184         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
3185         chrec_contains_symbols_defined_in_loop,
3186         chrec_contains_undetermined, tree_contains_chrecs,
3187         evolution_function_is_affine_multivariate_p,
3188         evolution_function_is_univariate_p, chrec_zerop,
3189         evolution_function_is_constant_p, evolution_function_is_affine_p,
3190         evolution_function_is_affine_or_constant_p,
3191         tree_does_not_contain_chrecs, chrec_type): Likewise.
3192         * tree-data-ref.c (tree_fold_divides_p,
3193         object_address_invariant_in_loop_p, dr_may_alias_p,
3194         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
3195         same_access_functions, constant_access_functions,
3196         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
3197         Likewise.
3198         * tree-flow.h (scev_direction): Likewise.
3199         * tree-gimple.c (is_gimple_stmt): Likewise.
3200         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
3201         Likewise.
3202         * tree-pretty-print.c (op_prio): Likewise.
3203         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
3204         analyzable_condition, backedge_phi_arg_p): Likewise.
3205         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
3206         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
3207         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
3208         Likewise.
3210 2007-08-13  Dan Hipschman  <dsh@google.com>
3212         PR c/32953
3213         * c-format.c (check_format_arg): Move check for zero-length
3214         format strings below the check for unterminated strings.
3216 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
3218         PR C/30427
3219         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
3220         types.
3222 2007-08-13  Nick Clifton  <nickc@redhat.com>
3224         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
3226 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3228         PR fortran/32860
3229         * c-format.c (gcc_gfc_length_specs): New array.
3230         (gcc_gfc_char_table): Add unsigned specifier, and references to
3231         the l length modifier.
3232         (format_types_orig): Use the new gcc_gfc_length_specs.
3234 2007-08-12  Sa Liu  <saliu@de.ibm.com>
3236         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
3237         and with REG_RETVAL note after split.
3239 2007-08-11  David Daney  <ddaney@avtrex.com>
3241         * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
3242         as ATTRIBUTE_UNUSED.
3244 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
3245             Segher Boessenkool  <segher@kernel.crashing.org>
3247         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
3248         HAVE_LOCAL_CPU_DETECT not defined.
3250 2007-08-11  Jan Hubicka  <jh@suse.cz>
3252         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
3253         (cgraph_process_new_functions): Honor previous value of
3254         disregard_inline_limits.
3255         * ipa-inline.c (compute_inline_parameters): Likewise.
3257 2007-08-11  Ian Lance Taylor  <iant@google.com>
3259         * alias.h (alias_set_type): Define new type.
3260         (ALIAS_SET_MEMORY_BARRIER): Use it.
3261         * rtl.h: Include alias.h.
3262         (struct mem_attrs): Use alias_set_type.
3263         * tree.h: Include alias.h
3264         (struct tree_type): Use alias_set_type.
3265         (struct tree_struct_field_tag): Likewise.
3266         (struct tree_decl_common): Likewise.
3267         * alias.c (struct alias_set_entry): Use alias_set_type.
3268         (get_alias_set_entry, alias_set_subset_of): Likewise.
3269         (alias_sets_conflict_p): Likewise.
3270         (alias_sets_must_conflict_p): Likewise.
3271         (objects_must_conflict_p): Likewise.
3272         (get_alias_set, new_alias_set): Likewise.
3273         (record_alias_subset, record_component_aliases): Likewise.
3274         (varargs_set, frame_set): Change to alias_set_type.
3275         (get_varargs_alias_set): Use alias_set_type.
3276         (get_frame_alias_set): Likewise.
3277         * builtins.c (setjmp_alias_set): Change to alias_set_type.
3278         * dse.c (struct store_info): Use alias_set_type.
3279         (struct read_info, struct clear_alias_mode_holder): Likewise.
3280         (clear_alias_set_lookup, canon_address): Likewise.
3281         (record_store, check_mem_read_rtx): Likewise.
3282         (dse_record_singleton_alias_set): Likewise.
3283         (dse_invalidate_singleton_alias_set): Likewise.
3284         * emit-rtl.c (get_mem_attrs): Likewise.
3285         (set_mem_attributes_minus_bitpos): Likewise.
3286         (set_mem_alias_set): Likewise.
3287         * expr.c (store_constructor_field, store_field): Likewise.
3288         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
3289         * langhooks.c (lhd_get_alias_set): Likewise.
3290         * langhooks-def.h (lhd_get_alias_set): Likewise.
3291         * reload1.c (alter_reg): Likewise.
3292         * tree-flow.h (struct fieldoff): Likewise.
3293         * tree-ssa-alias.c (struct alias_map_d): Likewise.
3294         (may_alias_p, get_smt_for, create_sft): Likewise.
3295         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
3296         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
3297         (merge_smts_into): Likewise.
3298         * varasm.c (const_alias_set): Likewise.
3299         * c-common.c (strict_aliasing_warning): Likewise.
3300         (c_common_get_alias_set): Likewise.
3301         * dse.h (dse_record_singleton_alias_set): Update declaration.
3302         (dse_invalidate_singleton_alias_set): Likewise.
3303         * emit-rtl.h (set_mem_alias_set): Likewise.
3304         * c-common.h (c_common_get_alias_set): Likewise.
3305         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
3306         * print-tree.c (print_node): Likewise.
3307         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
3308         alias_set_type.
3309         (alpha_setup_incoming_varargs): Use alias_set_type.
3310         * config/i386/i386.c (setup_incoming_varargs_64): Use
3311         alias_set_type.
3312         (setup_incoming_varargs_ms_64): Likewise.
3313         (ix86_GOT_alias_set): Likewise.
3314         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
3315         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
3316         (set): Change to alias_set_type.
3317         (get_TOC_alias_set): Use alias_set_type.
3318         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
3319         declaration.
3320         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
3321         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
3322         alias_set_type.
3323         (struct_value_alias_set): Likewise.
3324         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
3326 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
3328         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
3329         * config/vxworks.h (TARGET_VXWORKS): Override.
3330         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
3331         "mips" if TARGET_VXWORKS.
3333 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
3335         * calls.c (avoid_likely_spilled_reg): New function.
3336         (expand_call): Use it.
3338 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3340         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
3342 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
3344         * config/mips/predicates.md (const_call_insn_operand): Invoke
3345         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
3347 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
3349         PR target/33042
3350         * config/rs6000/driver-rs6000.c: Include link.h.
3351         Use ElfW instead of wordsize-specif typedef.
3353 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3355         * system.h (CONST_CAST): New.
3356         * c-decl.c (c_make_fname_decl): Use it.
3357         * c-lex.c (cb_ident, lex_string): Likewise.
3358         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
3359         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
3360         give_switch, set_multilib_dir): Likewise.
3361         * gengtype-parse.c (string_seq, typedef_name): Likewise.
3362         * passes.c (execute_one_pass): Likewise.
3363         * prefix.c (update_path): Likewise.
3364         * pretty-print.c (pp_base_destroy_prefix): Likewise.
3365         * tree.c (build_string): Likewise.
3367 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
3369         * tree-flow-inline.h (is_exec_stmt): Remove.
3370         (is_label_stmt): Remove.
3371         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
3372         is_label_stmt.
3374 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3376         * lower-subreg.c (resolve_shift_zext): Don't adjust
3377         src_reg_num for wordmode operands.
3379 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
3380             David Ung  <davidu@mips.com>
3382         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
3383         (TARGET_SCHED_REORDER2): Define.
3384         (mips_maybe_swap_ready): New.
3385         (mips_last_74k_agen_insn): New.
3386         (mips_74k_agen_init): New.
3387         (mips_74k_agen_reorder): New function to group loads and stores
3388         in the ready queue.
3389         (mips_sched_init): New.  
3390         (mips_sched_reorder): Don't do initialization here.  Call
3391         mips_74k_agen_reorder.
3392         (mips_variable_issue): Call mips_74k_agen_init.
3394 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
3396         * tree-flow-inline.h (get_filename): Remove.
3398 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
3400         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
3401         argument.
3402         (mips_fetch_insns): Delete in favor of...
3403         (mips_load_store_insns): ...this new function.
3404         * config/mips/mips.c (mips_address_insns): Add a boolean argument
3405         to say whether multiword moves _might_ be split.
3406         (mips_fetch_insns): Delete in favor of...
3407         (mips_load_store_insns): ...this new function.
3408         (mips_rtx_costs): Update the call to mips_address_insns.
3409         (mips_address_cost): Likewise.
3410         * config/mips/mips.md (length): Use mips_load_store_insns instead
3411         of mips_fetch_insns.
3412         * config/mips/constraints.md (R): Use mips_address_insns rather
3413         than mips_fetch_insns.  Assume that the move never needs to be split.
3415 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
3417         * config/mips/mips.opt (mhard-float, msoft-float):  Make these
3418         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
3419         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
3420         * config/mips/mips.h (mips16_hard_float): Delete.
3421         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI):  Delete these
3422         definitions, and replace with....
3423         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
3424         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
3425         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
3426         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
3427         (override_options):  Replace MASK_SOFT_FLOAT references with
3428         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
3429         and mips16_hard_float when TARGET_MIPS16.
3430         
3431 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3433         PR c/32796
3434         * c-typeck.c (build_binary_op): Check for non pointer types before
3435         calling int_fits_type_p.
3437 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3439         PR middle-end/32813
3440         * fold-const.c (omit_one_operand): Return only the ommitted expression
3441         if the result is an empty statement.
3442         (pedantic_omit_one_operand): Likewise.
3444 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
3446         * c-typeck.c (readonly_error): Improve error for assignment.
3447         
3448         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
3449         expression. 
3450         (pp_c_expression): Ditto.
3452 2007-08-09  Simon Baldwin  <simonb@google.com>
3454         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
3455         break that was preventing simplify_associative_operation() for xor.
3457 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
3458             Nigel Stephens  <nigel@mips.com>
3460         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
3461         Document change in interpretation of value from boolean to
3462         tri-state integer.
3463         * optabs.c (expand_ffs, expand_ctz): New functions to compute
3464         ffs and ctz using clz.
3465         (expand_unop):  Call them.
3466         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
3467         result value.
3468         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
3469         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
3470         enable the new ffs expansion on this target.
3472 2007-08-09  Jan Hubicka  <jh@suse.cz>
3474         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
3475         (expand_ternary_op): Likewise.
3476         (expand_vec_shift_expr): Likewise.
3477         (expand_binop_directly): Likewise.
3478         (expand_binop): Likewise.
3479         (sign_expand_binop): Likewise.
3480         (expand_twoval_unop): Likewise.
3481         (expand_twoval_binop): Likewise.
3482         (expand_twoval_binop_libfunc): Likewise.
3483         (widen_clz): Likewise.
3484         (widen_bswap): Likewise.
3485         (expand_parity): Likewise.
3486         (expand_unop): Likewise.
3487         (expand_abs_nojump): Likewise.
3488         (expand_copysign): Likewise.
3489         (emit_no_conflict_block): Likewise.
3490         (emit_libcall_block): Likewise.
3491         (can_compare_p): Likewise.
3492         (prepare_cmp_insn): Likewise.
3493         (emit_cmp_and_jump_insn_1): Likewise.
3494         (prepare_float_lib_cmp): Likewise.
3495         (emit_conditional_add): Likewise.
3496         (gen_add2_insn): Likewise.
3497         (have_add2_insn): Likewise.
3498         (gen_sub2_insn): Likewise.
3499         (have_sub2_insn): Likewise.
3500         (can_extend_p): Likewise.
3501         (can_fix_p): Likewise.
3502         (can_float_p): Likewise.
3503         (expand_float): Likewise.
3504         (expand_fix): Likewise.
3505         (expand_sfix_optab): Likewise.
3506         (new_optab): Likewise.
3507         (new_convert_optab): Likewise.
3508         (init_libfuncs): Likewise.
3509         (init_interclass_conv_libfuncs): Likewise.
3510         (init_intraclass_conv_libfuncs): Likewise.
3511         (set_conv_libfunc): Likewise.
3512         (init_optabs): Likewise.
3513         (debug_optab_libfuncs): Likewise.
3514         (gen_cond_trap): Likewise.
3515         * optabs.h (optab_handler, convert_optab_hanlder): New.
3516         * genopinit.c: Update optabs generation table.
3517         * reload.c (find_reloads_address_1): Use optabs accestors.
3518         * builtins.c (expand_builtin_mathfn): Likewise.
3519         (expand_builtin_mathfn_2): Likewise.
3520         (expand_builtin_mathfn_3): Likewise.
3521         (expand_builtin_interclass_mathfn): Likewise.
3522         (expand_builtin_sincos): Likewise.
3523         (expand_builtin_cexpi): Likewise.
3524         (expand_builtin_powi): Likewise.
3525         (expand_builtin_strlen): Likewise.
3526         * dojump.c (do_jump): Likewise.
3527         * expr.c (convert_move): Likewise.
3528         (move_by_pieces): Likewise.
3529         (move_by_pieces_ninsns): Likewise.
3530         (can_store_by_pieces): Likewise.
3531         (store_by_pieces_1): Likewise.
3532         (emit_move_via_integer): Likewise.
3533         (emit_move_complex): Likewise.
3534         (emit_move_ccmode): Likewise.
3535         (emit_move_insn_1): Likewise.
3536         (emit_single_push_insn): Likewise.
3537         (store_constructor): Likewise.
3538         (expand_expr_real_1): Likewise.
3539         (do_store_flag): Likewise.
3540         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
3541         (enumerate_modes): Likewise.
3542         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
3543         (supportable_widening_operation): Likewise.
3544         (supportable_narrowing_operation): Likewise.
3545         * expmed.c (store_bit_field_1): Likewise.
3546         (extract_bit_field_1): Likewise.
3547         (expand_mult_highpart_optab): Likewise.
3548         (expand_smod_pow2): Likewise.
3549         (expand_divmod): Likewise.
3550         (emit_store_flag): Likewise.
3551         * tree-vect-patterns.c
3552         (vect_pattern_recog_1): Likewise.
3553         * tree-ssa-loop-prefetch.c
3554         (nontemporal_store_p): Likewise.
3555         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
3556         (vect_create_epilog_for_reduction): Likewise.
3557         (vectorizable_reduction): Likewise.
3558         (vectorizable_operation): Likewise.
3559         (vect_strided_store_supported): Likewise.
3560         (vectorizable_store): Likewise.
3561         (vect_strided_load_supported): Likewise.
3562         (vectorizable_load): Likewise.
3563         * combine.c (simplify_comparison): Likewise.
3564         * tree-vect-generic.c
3565         (type_for_widest_vector_mode): Likewise.
3566         (expand_vector_operations_1): Likewise.
3567         * config/spu/spu.c (spu_expand_mov): Likewise.
3568         (spu_emit_vector_compare): Likewise.
3569         * config/rs6000/rs6000.c
3570         (rs6000_emit_vector_compare): Likewise.
3571         * stmt.c (add_case_node): Likewise.
3572         * reload1.c (gen_reload):
3574 2007-08-09  Michael Matz  <matz@suse.de>
3576         * tree.h (fixed_zerop): Declare as taking a const_tree.
3577         * tree.c (fixed_zerop): Take a const_tree.
3579 2007-08-09  Ira Rosen  <irar@il.ibm.com>
3581         * tree-vect-transform.c (vectorizable_store): Remove call to
3582         copy_virtual_operands() and call mark_symbols_for_renaming() for
3583         the created vector store.
3584         (vect_setup_realignment): Don't call copy_virtual_operands() and
3585         update_vuses_to_preheader(). 
3586         (vectorizable_load): Don't call copy_virtual_operands(). 
3587         (update_vuses_to_preheader): Remove.
3589 2007-08-08  Chao-ying Fu  <fu@mips.com>
3591         * tree.def (FIXED_POINT_TYPE): New type.
3592         (FIXED_CST): New constant.
3593         (FIXED_CONVERT_EXPR): New expr.
3594         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
3595         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
3596         * tree.h (struct tree_base): Add saturating_flag.
3597         Remove one bit of spare for saturating_flag.
3598         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
3599         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
3600         FIXED_POINT_TYPE_P): Define.
3601         (TYPE_SATURATING): Define.
3602         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
3603         (struct tree_fixed_cst): New.
3604         (TYPE_IBIT, TYPE_FBIT): Define.
3605         (tree_node): Add fixed_cst.
3606         (enum tree_index): Add new enumeration values of
3607         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
3608         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
3609         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
3610         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
3611         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
3612         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
3613         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
3614         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
3615         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
3616         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
3617         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
3618         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
3619         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
3620         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
3621         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
3622         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
3623         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
3624         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
3625         (sat_short_fract_type_node, sat_fract_type_node,
3626         sat_long_fract_type_node, sat_long_long_fract_type_node,
3627         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
3628         sat_unsigned_long_fract_type_node,
3629         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
3630         fract_type_node, long_fract_type_node, long_long_fract_type_node,
3631         unsigned_short_fract_type_node, unsigned_fract_type_node,
3632         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
3633         sat_short_accum_type_node, sat_accum_type_node,
3634         sat_long_accum_type_node, sat_long_long_accum_type_node,
3635         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
3636         sat_unsigned_long_accum_type_node,
3637         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
3638         accum_type_node, long_accum_type_node, long_long_accum_type_node,
3639         unsigned_short_accum_type_node, unsigned_accum_type_node,
3640         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
3641         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
3642         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
3643         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
3644         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
3645         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
3646         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
3647         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
3648         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
3649         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
3650         sat_uda_type_node, sat_uta_type_node): New macro.
3651         (make_fract_type, make_accum_type): Declare.
3652         (make_signed_fract_type, make_unsigned_fract_type,
3653         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
3654         make_signed_accum_type, make_unsigned_accum_type,
3655         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
3656         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
3657         make_or_reuse_sat_signed_fract_type,
3658         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
3659         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
3660         make_or_reuse_sat_unsigned_accum_type): New macro.
3661         (fixed_zerop): Declare.
3662         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
3663         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3664         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3665         LONG_LONG_ACCUM_TYPE_SIZE): Define.
3666         * treestruct.def: Add TS_FIXED_CST.
3667         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
3668         (tree.o): Likewise.
3669         (tree-dump.o): Likewise.
3670         (print-tree.o): Likewise.
3671         (tree-pretty-print.o): Likewise.
3672         (fold-const.o): Likewise.
3673         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
3674         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
3675         (is_gimple_min_invariant): Handle FIXED_CST.
3676         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
3677         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
3678         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3679         (layout_type): Handle FIXED_POINT_TYPE.
3680         (make_fract_type, make_accum_type): New functions.
3681         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
3682         * tree-dump.c (fixed-value.h): New include.
3683         (dump_fixed): New function.
3684         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
3685         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
3686         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
3687         * tree-pretty-print.c (fixed-value.h): New include.
3688         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
3689         FIXED_CONVERT_EXPR.
3690         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
3691         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
3692         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
3693         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
3694         for non-saturating fixed-point types.
3695         (reassociate_bb): Likewise.
3696         * emit-rtl.c (fixed-value.h): New include.
3697         (fconst0, fconst1): New array.
3698         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
3699         * tree-vect-generic.c expand_vector_operation): Support
3700         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
3701         MODE_VECTOR_UACCUM.
3702         (type_for_widest_vector_mode): Add one parameter for the 
3703         saturating flag.
3704         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
3705         vector mode.
3706         Pass the satp parameter to type_for_mode for fixed-point types.
3707         (expand_vector_operations_1): Pass the saturating flag to
3708         type_for_widest_vector_mode.
3709         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
3710         and MODE_VECTOR_UACCUM.
3711         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
3712         (vectorizable_condition): Likewise.
3713         * tree.c (fixed-value.h): New include.
3714         (tree_code_size): Support FIXED_CST.
3715         (build_fixed): New function.
3716         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
3717         (fixed_zerop): New function.
3718         (tree_node_structure): Support FIXED_CST.
3719         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
3720         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
3721         (type_hash_eq): Handle FIXED_POINT_TYPE.
3722         (simple_cst_equal): Support FIXED_CST.
3723         (iterative_hash_expr): Handle FIXED_CST.
3724         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
3725         (get_narrower): Likewise.
3726         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
3727         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
3728         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
3729         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
3730         nodes.
3731         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
3732         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3733         (initializer_zerop): Support FIXED_CST.
3734         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
3735         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
3736         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
3737         (is_base_type): Handle FIXED_POINT_TYPE.
3738         (add_type_attribute): Handle FIXED_POINT_TYPE.
3739         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
3740         * print-tree.c (fixed-value.h): New include.
3741         (print_node_brief): Support FIXED_CST.
3742         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
3743         * c-pretty-print.c (fixed-value.h): New include.
3744         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
3745         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
3746         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
3747         Support fixed-point types for inner items in VECTOR_TYPE.
3748         (pp_c_direct_declarator): Likewise.
3749         (pp_c_declarator): Likewise.
3750         (pp_c_fixed_constant): New function.
3751         (pp_c_constant): Handle FIXED_CST.
3752         (pp_c_primary_expression): Likewise.
3753         (pp_c_expression): Likewise.
3754         * fold-const.c (fixed-value.h): New include.
3755         (negate_expr_p): Return true for FIXED_CST.
3756         (fold_negate_expr): Support FIXED_CST.
3757         (split_tree): Support FIXED_CST.
3758         (const_binop): Support FIXED_CST.
3759         (fold_convert_const_int_from_fixed): New function to convert from
3760         fixed to int.
3761         (fold_convert_const_real_from_fixed): New function to convert from
3762         fixed to real.
3763         (fold_convert_const_fixed_from_fixed): New function to convert from
3764         fixed to another fixed.
3765         (fold_convert_const_fixed_from_int): New function to convert from
3766         int to fixed.
3767         (fold_convert_const_fixed_from_real): New function to convert from
3768         real to fixed.
3769         (fold_convert_const): Support conversions from fixed to int, from
3770         fixed to real, from fixed to fixed, from int to fixed, and from real
3771         to fixed.
3772         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
3773         (operand_equal_p): Support FIXED_CST.
3774         (make_range): For fixed-point modes, we need to pass the
3775         saturating flag as the 2nd parameter.
3776         (tree_swap_operands_p): Handle FIXED_CST.
3777         (fold_plusminus_mult_expr): For fract modes, we cannot generate
3778         constant 1.
3779         (fold_unary): Support FIXED_CONVERT_EXPR.
3780         (fold_binary): Handle FIXED_CST.
3781         Make sure the type is not saturating, before associating operations.
3782         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
3783         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
3784         (fold_negate_const): Support FIXED_CST.
3785         (fold_relational_const): Support FIXED_CST.
3786         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
3787         (gimplify_expr): Handle FIXED_CST.
3788         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
3789         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
3790         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
3791         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
3792         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3793         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3794         LONG_LONG_ACCUM_TYPE_SIZE.
3795         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
3796         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
3797         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
3798         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
3799         MODE_ACCUM, and MODE_UACCUM.
3800         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
3801         fixed-point types to disable reduction.
3802         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
3804 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
3806         * config/rs6000/x-rs6000: New file.
3807         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
3808         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
3809         (EXTRA_SPEC_FUNCTIONS): Define.
3810         (HAVE_LOCAL_CPU_DETECT): Define.
3811         (CC1_CPU_SPEC): Define.
3812         * config/rs6000/driver-rs6000.c: New file.
3813         * config/rs6000/aix.h (CC1_SPEC): Define.
3814         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
3815         * config.host: Add x-rs6000 to host_xmake_file if host and target
3816         are rs6000 or powerpc.
3818 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
3820         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
3822 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3823             Sandra Loosemore  <sandra@codesourcery.com>
3824             Chao-ying Fu  <fu@mips.com>
3825             Nigel Stephens  <nigel@mips.com>
3826             David Ung  <davidu@mips.com>
3828         * doc/invoke.texi (-mcode-readable): Document.
3829         * config/mips/mips.opt (mcode-readable): New option.
3830         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
3831         * config/mips/mips.h (mips_code_readable_setting): New enum.
3832         (mips_code_readable): Declare.
3833         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
3834         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
3835         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
3836         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
3837         boiler-plate comments.
3838         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
3839         * config/mips/mips.c (mips_code_readable): New variable.
3840         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
3841         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
3842         context and -mcode-readable setting to restrict the use of
3843         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
3844         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
3845         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
3846         (mips_blocks_for_constant_p): Only return false for
3847         TARGET_MIPS16_PCREL_LOADS.
3848         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
3849         for MIPS16.  Handle SYMBOL_32_HIGH.
3850         (mips_const_insns): Allow HIGHs for MIPS16 too.
3851         (mips_unspec_address_offset): New function, split out from...
3852         (mips_unspec_address): ...here.
3853         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
3854         16-bit symbolic constants.  Assert approropiate conditions for
3855         using the "la" and "dla" macros.
3856         (mips_handle_option): Handle -mcode-readable=.
3857         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
3858         Set up mips_lo_relocs[SYMBOL_32_HIGH].
3859         (mips_strip_unspec_address): New function, split out from...
3860         (print_operand_reloc): ...here.
3861         (print_operand): Pass constants through mips_strip_unspec_address.
3862         (print_operand_address): Likewise.
3863         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
3864         (mips_select_rtx_section): Remove MIPS16 handling.
3865         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
3866         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
3867         (mips16_lay_out_constants): Do nothing unless
3868         TARGET_MIPS16_PCREL_LOADS.
3869         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
3870         * config/mips/mips.md: Split HIGHs for MIPS16.
3871         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
3873 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3875         * config/mips/mips-protos.h (mips_emit_move): Declare.
3876         * config/mips/mips.c (mips_emit_move): New function.
3877         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
3878         (mips_legitimize_const_move): Likewise.
3879         (mips_legitimize_move): Likewise.
3880         (mips_split_64bit_move): Likewise.
3881         (mips_restore_gp): Likewise.
3882         (mips_load_call_address): Likewise.
3883         (mips_emit_fcc_reload): Likewise.
3884         (mips_set_return_address): Likewise.
3885         (mips_block_move_straight): Likewise.
3886         (mips_block_move_loop): Likewise.
3887         (mips_setup_incoming_varargs): Likewise.
3888         (mips_save_reg): Likewise.
3889         (mips_expand_prologue): Likewise.
3890         (mips_restore_reg): Likewise.
3891         (mips_expand_epilogue): Likewise.
3892         (mips_output_mi_thunk): Likewise.
3893         (build_mips16_call_stub): Likewise.
3894         (mips_builtin_branch_and_move): Likewise.
3895         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
3896         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
3897         (fixuns_truncdfdi2): Likewise.
3898         (fixuns_truncsfsi2): Likewise.
3899         (fixuns_truncsfdi2): Likewise.
3900         (loadgp_absolute): Likewise.
3901         (builtin_setjmp_setup): Likewise.
3902         (builtin_longjmp): Likewise.
3903         (untyped_call): Likewise.
3905 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3907         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
3908         an "rtx *" argument.  Return a bool.
3909         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
3910         values and return true if they can be split.  Take the same kind of
3911         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
3912         and store the lo_sum there if nonnull.  Use the symbol type to
3913         determine whether a $gp or HIGH is needed.
3914         (mips_legitimize_address): Update call to mips_split_symbol and
3915         simplify accordingly.
3916         (mips_legitimize_const_move): Likewise.
3917         * config/mips/mips.md: In the combine define_split,
3918         check mips_split_symbol instead of splittable_symbolic_operand.
3919         Update use of mips_split_symbol in the generator code.
3920         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
3922 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3924         * config/mips/mips.c (mips_symbolic_address_p): Delete.
3925         (mips_symbol_insns_1): New function, split out from...
3926         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
3927         and stores separately from load addresses.
3928         (mips_classify_address): Replace uses of mips_symbolic_address_p
3929         with uses of mips_symbol_insns.
3930         (mips_address_insns): Update calls to mips_symbol_insns.
3931         (mips_const_insns): Likewise.
3932         (mips_legitimize_address): Likewise.
3934 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3936         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
3937         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
3938         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
3939         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
3940         non-call contexts if TARGET_MIPS16.
3941         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
3942         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
3943         code for SYMBOL_ABSOLUTE.
3944         (mips_symbol_insns): Likewise.
3946 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3948         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
3949         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
3950         (mips_symbolic_constant_p): Likewise.  Update the call to
3951         mips_classify_symbol.
3952         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
3953         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
3954         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
3955         (print_operand_reloc): Add a context argument.  Update the call to
3956         mips_symbolic_constant_p.
3957         (print_operand): Update the calls to print_operand_reloc.
3958         (print_operand_address): Use print_operand_reloc rather than
3959         print_operand.
3960         (mips_rewrite_small_data_p): Add a context argument.  Update the call
3961         to mips_symbolic_constant_p.
3962         (mips_small_data_pattern_1): Make DATA the containing mem.
3963         Update the call to mips_rewrite_small_data_p.
3964         (mips_rewrite_small_data_1): Likewise.
3965         (mips_use_anchors_for_symbol_p): Update the call to
3966         mips_symbolic_constant_p.
3967         * config/mips/predicates.md (const_call_insn_operand): Likewise.
3968         (splittable_symbolic_operand): Likewise.
3969         (move_operand): Likewise.
3970         (absolute_symbolic_operand): Likewise.
3971         (got_disp_operand): Likewise.
3972         (got_page_ofst_operand): Likewise.
3974 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3976         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
3977         (SYMBOL_ABSOLUTE): ...this.
3978         (SYMBOL_SMALL_DATA): Rename to...
3979         (SYMBOL_GP_RELATIVE): ...this.
3980         (SYMBOL_CONSTANT_POOL): Rename to...
3981         (SYMBOL_PC_RELATIVE): ...this.
3982         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
3983         (mips_symbolic_address_p, mips_symbol_insns, override_options)
3984         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
3985         after above changes.
3986         * config/mips/predicates.md (const_call_insn_operand): Likewise.
3987         (general_symbolic_operand): Rename to...
3988         (absolute_symbolic_operand): ...this.
3989         * config/mips/mips.md: Update after above changes.
3991 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
3992             Revital Eres  <eres@il.ibm.com>
3994         * ddg.c (print_ddg): Add dump information.
3995         * modulo-sched.c (print_node_sched_params): Add parameter and
3996         verbosity.
3997         (calculate_maxii): Remove function.
3998         (undo_generate_reg_moves): Likewise.
3999         (undo_permute_partial_schedule): Likewise.
4000         (kernel_number_of_cycles): Likewise.
4001         (MAXII_FACTOR): New definition to calculate the upper bound of II.
4002         (sms_schedule): Use it.  Remove profitability checks.
4003         (sms_schedule_by_order): Fix order of nodes within the cycle.
4005 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
4007         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
4008         -profile option, add pie support.
4009         (ENDFILE_SPEC): New spec.
4010         * config/gnu.h (LIB_SPEC): Add -profile option.
4012 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
4014         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
4015         * config/gnu.h (LIB_SPEC): Likewise.
4017 2007-08-07  Yaz Saito  <saito@google.com>
4018             Ian Lance Taylor  <iant@google.com>
4020         * common.opt (finstrument-functions-exclude-function-list): New
4021         option.
4022         (finstrument-functions-exclude-file-list): New option.
4023         * opts.c (char_p): Define and DEF_VEC.
4024         (flag_instrument_functions_exclude_functions): New static
4025         variable.
4026         (flag_instrument_functions_exclude_files): New static variable.
4027         (add_instrument_functions_exclude_list): New static function.
4028         (flag_instrument_functions_exclude_p): New function.
4029         (common_handle_option): Handle new options.
4030         * flags.h (flag_instrument_functions_exclude_p): Declare.
4031         * gimplify.c (gimplify_function_tree): Call
4032         flag_instrument_functions_exclude_p.
4033         * doc/invoke.texi (Option Summary): Mention new options.
4034         (Code Gen Options): Document new options.
4036 2007-08-07  Ian Lance Taylor  <iant@google.com>
4038         PR rtl-optimization/32776
4039         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
4040         (resolve_use): Likewise.
4041         (decompose_multiword_subregs): Remove "changed" local variable.
4043 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
4045         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
4046         * configure: Regenerate.
4047         * config.in: Regenerate.
4048         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
4049         spec string.
4051 2007-08-07  Ian Lance Taylor  <iant@google.com>
4053         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
4054         note, just delete the insn.
4056 2007-08-07  Andreas Schwab  <schwab@suse.de>
4058         PR bootstrap/32973
4059         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
4060         struct definition.
4062 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
4064         * lower-subreg.c (resolve_subreg_use): Remove assertion.
4065         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
4066         (decompose_multiword_subregs): Use the functions above to decompose
4067         multiword shifts and zero-extends.
4069 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4071         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
4072         "assemble" descriptions which were swapped.
4074 2007-08-06  Chao-ying Fu  <fu@mips.com>
4076         * fixed-value.h: New file.
4077         * fixed-value.c: New file.
4078         * Makefile.in (OBJS-common): Add fixed-value.o.
4079         (fixed-value.o): New rule.
4080         (GTFILES): Add fixed-value.h.
4081         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
4082         to compare a.low and b.low.
4083         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
4085 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
4086             Daniel Jacobowitz  <dan@codesourcery.com>
4088         PR target/31868
4089         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
4090         tmake_file.
4091         (x86_64-*-netbsd*): Likewise.
4092         (x86_64-*-linux*): Likewise.
4093         (x86_64-*-kfreebsd*-gnu): Likewise.
4094         (x86_64-*-knetbsd*-gnu): Likewise.
4095         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
4097         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
4099         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
4100         Add -fno-asynchronous-unwind-tables.
4102         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
4103         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
4104         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
4105         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
4106         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
4108 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
4110         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
4111         (TARGET_C_MODE_FOR_SUFFIX): New.
4113 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
4115         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
4117 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
4119         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
4121 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
4123         * config/i386/i386.md: Check TARGET_ macros and optimize_size
4124         before checking function returns in conditional expressions.
4126 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
4128         PR pch/13676
4129         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
4131 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4133         PR middle-end/32988
4134         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
4135         for INTEGRAL_TYPE_P.
4137 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
4139         * configure.ac: Remove --enable-checking=df from default settings.
4140         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
4141         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
4142         if the parameter is true.
4143         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
4144         DF_VERIFY_SCHEDULED flag is true.
4145         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
4146         (df_finish_pass): Adjust prototype.
4147         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
4148         true.
4150         * see.c (pass_see): Add TODO_df_verify.
4151         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
4152         * global.c (rest_of_handle_global_alloc): Schedule verification
4153         after the pass.
4154         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
4155         before the pass.
4156         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
4157         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
4158         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
4160         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
4161         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
4162         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
4164 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
4165             Revital Eres <eres@il.ibm.com>
4167         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
4168         flag.
4169         * ddg.c (create_ddg_dependence): Rename to...
4170         (create_ddg_dep_from_intra_loop_link): This.  Do not check
4171         for interloop edges.  Do not create anti dependence edge when
4172         a true dependence edge exists in the opposite direction and
4173         -fmodulo-sched-allow-regmoves is set.
4174         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
4175         (add_cross_iteration_register_deps): Create anti dependence edge
4176         when -fno-modulo-sched-allow-regmoves is set.
4177         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
4179 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
4181         * config/arm/arm.md (movsi): Add braces.
4183 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4185         PR middle-end/32780
4186         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
4187         operands for the folding of "A - (A & B)" into "~B & A"; cast them
4188         to type.
4190 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
4192         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
4193         state accessor functions.
4194         * cfgloopmanip.c (remove_path, create_preheaders,
4195         force_single_succ_latches, fix_loop_structure): Ditto.
4196         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
4197         tree_duplicate_loop_to_header_edge): Ditto.
4198         * cfgloopanal.c (mark_irreducible_loops): Ditto.
4199         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
4200         Ditto.
4201         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
4202         cleanup_tree_cfg): Ditto.
4203         * tree-cfg.c (tree_merge_blocks): Ditto.
4204         * cfgloop.c (rescan_loop_exit, record_loop_exits,
4205         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
4206         loop_preheader_edge, single_exit): Ditto.
4207         (flow_loops_find): Do not clear loops->state.
4208         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
4209         loops_state_clear): New functions.
4211 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4213         PR middle-end/32399
4214         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
4215         when adding to the base and convert ELT to sizetype instead of type.
4217 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4219         PR middle-end/32304
4220         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
4221         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
4223 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4225         PR middle-end/32935
4226         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
4227          correct type the negate expression.
4229 2007-08-03  Jan Hubicka  <jh@suse.cz>
4231         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
4232         stack boundary.
4234 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
4236         * config/rs6000/rs6000.c (struct processor_cost): Change
4237         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
4238         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
4239         information.
4240         (rios1_costs, rios2_cost): Correct cache line size.
4241         (rs6000_override_options): Set l2-cache-size parameter.
4243 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4244             Diego Novillo  <dnovillo@google.com>
4246         PR 31521
4247         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
4248         if the range includes 0.
4250 2007-08-03  Ben Elliston  <bje@au.ibm.com>
4252         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
4253         mode to unspec expressions to silence a warning from the generator
4254         programs.
4255         
4256 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
4258         * config/ia64/constraints.md ("U"): Make constraint vector only.
4260 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
4262         PR middle-end/25446
4263         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
4264         always_inline attribute on the function decl.
4266 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
4268         PR middle-end/25445
4269         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
4270         if we are compiling with -fPIC.
4272 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
4273             Nigel Stephens  <nigel@mips.com>
4275         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
4276         Define for MIPS32 and MIPS64.
4278 2007-08-02  Nick Clifton  <nickc@redhat.com>
4280         * config/host-hpux.c: Change copyright header to refer to version
4281         3 of the GNU General Public License and to point readers at the
4282         COPYING3 file and the FSF's license web page.
4283         * config/alpha/predicates.md, config/alpha/vms-ld.c,
4284         config/alpha/linux.h, config/alpha/alpha.opt,
4285         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
4286         config/alpha/vms-unwind.h, config/alpha/ev4.md,
4287         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
4288         config/alpha/alpha.h, config/alpha/sync.md,
4289         config/alpha/openbsd.h, config/alpha/alpha.md,
4290         config/alpha/alpha-modes.def, config/alpha/ev5.md,
4291         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
4292         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
4293         config/alpha/constraints.md, config/alpha/osf.h,
4294         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
4295         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
4296         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
4297         config/frv/frv-asm.h, config/frv/frv-protos.h,
4298         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
4299         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
4300         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
4301         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
4302         config/s390/s390.opt, config/s390/s390-modes.def,
4303         config/s390/fixdfdi.h, config/s390/constraints.md,
4304         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
4305         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
4306         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
4307         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
4308         config/m32c/prologue.md, config/m32c/m32c.abi,
4309         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
4310         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
4311         config/m32c/t-m32c, config/m32c/m32c-modes.def,
4312         config/m32c/jump.md, config/m32c/shift.md,
4313         config/m32c/m32c-protos.h, config/libgloss.h,
4314         config/spu/spu-protos.h, config/spu/predicates.md,
4315         config/spu/spu-builtins.h, config/spu/spu.c,
4316         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
4317         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
4318         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
4319         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
4320         config/sparc/hypersparc.md, config/sparc/predicates.md,
4321         config/sparc/linux.h, config/sparc/sp64-elf.h,
4322         config/sparc/supersparc.md, config/sparc/cypress.md,
4323         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
4324         config/sparc/niagara.md, config/sparc/sparc.md,
4325         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
4326         config/sparc/sparc.opt, config/sparc/sync.md,
4327         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
4328         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
4329         config/sparc/sparc.c, config/sparc/little-endian.opt,
4330         config/sparc/sysv4-only.h, config/sparc/sparc.h,
4331         config/sparc/linux64.h, config/sparc/freebsd.h,
4332         config/sparc/sol2.h, config/sparc/rtemself.h,
4333         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
4334         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
4335         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
4336         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
4337         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
4338         config/m32r/linux.h, config/m32r/constraints.md,
4339         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
4340         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
4341         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
4342         config/i386/i386.md, config/i386/netware-crt0.c,
4343         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
4344         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
4345         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
4346         config/i386/sol2.h, config/i386/constraints.md,
4347         config/i386/netware-libgcc.c, config/i386/sysv5.h,
4348         config/i386/predicates.md, config/i386/geode.md,
4349         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
4350         config/i386/freebsd64.h, config/i386/vxworksae.h,
4351         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
4352         config/i386/rtemself.h, config/i386/netbsd-elf.h,
4353         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
4354         config/i386/netware.h, config/i386/i386-modes.def,
4355         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
4356         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
4357         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
4358         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
4359         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
4360         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
4361         config/i386/xm-mingw32.h, config/i386/linux64.h,
4362         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
4363         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
4364         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
4365         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
4366         config/i386/cygwin2.c, config/i386/i386-protos.h,
4367         config/i386/sync.md, config/i386/openbsd.h,
4368         config/i386/host-mingw32.c, config/i386/i386-aout.h,
4369         config/i386/nto.h, config/i386/biarch64.h,
4370         config/i386/i386-coff.h, config/i386/freebsd.h,
4371         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
4372         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
4373         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
4374         config/darwin-protos.h, config/linux.opt, config/sol2.c,
4375         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
4376         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
4377         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
4378         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
4379         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
4380         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
4381         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
4382         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
4383         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
4384         config/sh/superh64.h, config/sh/rtemself.h,
4385         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
4386         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
4387         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
4388         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
4389         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
4390         config/avr/predicates.md, config/avr/constraints.md,
4391         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
4392         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
4393         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
4394         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
4395         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
4396         config/c4x/c4x-modes.def, config/c4x/rtems.h,
4397         config/c4x/predicates.md, config/c4x/c4x.h,
4398         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
4399         config/xtensa/predicates.md, config/xtensa/xtensa.c,
4400         config/xtensa/linux.h, config/xtensa/xtensa.h,
4401         config/xtensa/elf.h, config/xtensa/xtensa.md,
4402         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
4403         config/xtensa/xtensa-protos.h, config/dbx.h,
4404         config/stormy16/predicates.md, config/stormy16/stormy16.md,
4405         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
4406         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
4407         config/host-solaris.c, config/fr30/fr30.h,
4408         config/fr30/predicates.md, config/fr30/fr30-protos.h,
4409         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
4410         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
4411         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
4412         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
4413         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
4414         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
4415         config/host-linux.c, config/interix3.h, config/cris/cris.c,
4416         config/cris/predicates.md, config/cris/linux.h,
4417         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
4418         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
4419         config/cris/aout.opt, config/cris/cris-protos.h,
4420         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
4421         config/iq2000/iq2000.h, config/iq2000/predicates.md,
4422         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
4423         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
4424         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
4425         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
4426         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
4427         config/chorus.h, config/mn10300/mn10300.c,
4428         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
4429         config/mn10300/mn10300.h, config/mn10300/linux.h,
4430         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
4431         config/mn10300/mn10300.md, config/ia64/predicates.md,
4432         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
4433         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
4434         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
4435         config/ia64/freebsd.h, config/ia64/ia64.md,
4436         config/ia64/ia64-modes.def, config/ia64/constraints.md,
4437         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
4438         config/gofast.h, config/rtems.h, config/sol2-10.h,
4439         config/m68k/predicates.md, config/m68k/m68k.md,
4440         config/m68k/linux.h, config/m68k/m68k-modes.def,
4441         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
4442         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
4443         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
4444         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
4445         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
4446         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
4447         config/m68k/constraints.md, config/m68k/rtemself.h,
4448         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
4449         config/m68k/uclinux.h, config/rs6000/power4.md,
4450         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
4451         config/rs6000/linux.h, config/rs6000/eabi.h,
4452         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
4453         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
4454         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
4455         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
4456         config/rs6000/windiss.h, config/rs6000/603.md,
4457         config/rs6000/aix41.h, config/rs6000/cell.md,
4458         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
4459         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
4460         config/rs6000/darwin.md, config/rs6000/darwin64.h,
4461         config/rs6000/default64.h, config/rs6000/7xx.md,
4462         config/rs6000/darwin.opt, config/rs6000/spe.md,
4463         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
4464         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
4465         config/rs6000/7450.md, config/rs6000/linux64.h,
4466         config/rs6000/constraints.md, config/rs6000/440.md,
4467         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
4468         config/rs6000/rs6000.c, config/rs6000/aix52.h,
4469         config/rs6000/rs6000.h, config/rs6000/power6.md,
4470         config/rs6000/predicates.md, config/rs6000/altivec.md,
4471         config/rs6000/aix64.opt, config/rs6000/rios1.md,
4472         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
4473         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
4474         config/rs6000/darwin7.h, config/rs6000/dfp.md,
4475         config/rs6000/linux64.opt, config/rs6000/sync.md,
4476         config/rs6000/vxworksae.h, config/rs6000/power5.md,
4477         config/rs6000/lynx.h, config/rs6000/biarch64.h,
4478         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
4479         config/rs6000/eabispe.h, config/rs6000/e500.h,
4480         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
4481         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
4482         config/rs6000/aix.h, config/rs6000/vxworks.h,
4483         config/rs6000/40x.md, config/rs6000/aix51.h,
4484         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
4485         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
4486         config/arc/arc.h, config/mcore/mcore-elf.h,
4487         config/mcore/mcore-protos.h, config/mcore/predicates.md,
4488         config/mcore/mcore.md, config/mcore/mcore.c,
4489         config/mcore/mcore.opt, config/mcore/mcore.h,
4490         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
4491         config/score/predicates.md, config/score/score-version.h,
4492         config/score/score-protos.h, config/score/misc.md,
4493         config/score/elf.h, config/score/score.c, config/score/mac.md,
4494         config/score/score7.md, config/score/score.h,
4495         config/score/score-conv.h, config/score/score-mdaux.c,
4496         config/score/score.md, config/score/score.opt,
4497         config/score/score-modes.def, config/score/score-mdaux.h,
4498         config/score/mul-div.S, config/arm/uclinux-elf.h,
4499         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
4500         config/arm/symbian.h, config/arm/linux-elf.h,
4501         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
4502         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
4503         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
4504         config/arm/strongarm-pe.h, config/arm/arm.h,
4505         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
4506         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
4507         config/arm/arm-modes.def, config/arm/linux-eabi.h,
4508         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
4509         config/arm/arm-cores.def, config/arm/arm-protos.h,
4510         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
4511         config/arm/wince-pe.h, config/arm/neon.md,
4512         config/arm/constraints.md, config/arm/neon.ml,
4513         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
4514         config/arm/arm.opt, config/arm/arm926ejs.md,
4515         config/arm/predicates.md, config/arm/iwmmxt.md,
4516         config/arm/arm_neon.h, config/arm/unknown-elf.h,
4517         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
4518         config/arm/neon-testgen.ml, config/arm/arm.md,
4519         config/arm/xscale-coff.h, config/arm/pe.c,
4520         config/arm/arm-generic.md, config/arm/pe.h,
4521         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
4522         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
4523         config/arm/strongarm-elf.h, config/arm/cirrus.md,
4524         config/arm/netbsd-elf.h, config/arm/vxworks.h,
4525         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
4526         config/pa/predicates.md, config/pa/pa64-hpux.h,
4527         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
4528         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
4529         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
4530         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
4531         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
4532         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
4533         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
4534         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
4535         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
4536         config/pa/pa64-regs.h, config/pa/pa-modes.def,
4537         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
4538         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
4539         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
4540         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
4541         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
4542         config/mips/linux64.h, config/mips/elforion.h,
4543         config/mips/constraints.md, config/mips/generic.md,
4544         config/mips/predicates.md, config/mips/4300.md,
4545         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
4546         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
4547         config/mips/5k.md, config/mips/vr4120-div.S,
4548         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
4549         config/mips/mips-protos.h, config/mips/6000.md,
4550         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
4551         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
4552         config/mips/mips-modes.def, config/mips/vr.h,
4553         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
4554         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
4555         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
4556         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
4557         config/vax/openbsd1.h, config/vax/netbsd.h,
4558         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
4559         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
4560         config/h8300/rtems.h, config/h8300/predicates.md,
4561         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
4562         config/h8300/h8300.md, config/h8300/h8300.opt,
4563         config/h8300/coff.h, config/h8300/h8300-protos.h,
4564         config/v850/v850.md, config/v850/predicates.md,
4565         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
4566         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
4567         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
4568         config/mmix/mmix.h, config/mmix/predicates.md,
4569         config/mmix/mmix-protos.h, config/mmix/mmix.md,
4570         config/mmix/mmix.c, config/mmix/mmix.opt,
4571         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
4572         config/bfin/rtems.h, config/bfin/bfin-modes.def,
4573         config/bfin/predicates.md, config/bfin/bfin-protos.h,
4574         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
4575         Likewise.
4577 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
4579         * emit-rtl.c (reset_used_decls): Rename to...
4580         (set_used_decls): ...this.  Set the used flag rather than clearing it.
4581         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
4582         DECL_RTLs rather than resetting them.
4584 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
4586         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
4588 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
4590         * reload.c (find_reloads_address_part):  Pass correct MEMREFLOC
4591         argument to find_reloads_address.
4593 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
4595         PR tree-optimization/32919
4596         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
4597         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
4598         (coalesce_ssa_name): Call it.
4600 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
4601             David Ung  <davidu@mips.com>
4603         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
4604         (__mips16_unorddf2, __mips16_floatunsidf): New.
4605         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
4606         above functions.
4607         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
4609 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4611         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
4612         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
4613         * tree.h (OMP_SECTIONS_CONTROL): New macro.
4614         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
4615         * omp-low.c (get_ws_args_for, determine_parallel_type,
4616         expand_omp_for_generic, expand_omp_for_static_nochunk,
4617         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
4618         Work with more precise CFG.
4619         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
4620         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
4621         OMP_CONTINUE.
4622         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
4623         * gimple-low.c (lower_stmt): Ditto.
4624         * tree-inline.c (estimate_num_insns_1): Ditto.
4625         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
4626         (OMP_SECTIONS_SWITCH): New.
4627         * tree-cfgcleanup.c (cleanup_omp_return): New.
4628         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
4629         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
4630         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
4631         (tree_redirect_edge_and_branch): Handle omp constructs.
4633         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
4634         with three arguments.
4636 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4638         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
4639         in loop closed ssa.
4641 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4643         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
4644         the loop structures may need fixing.
4645         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
4646         New functions.
4647         (cleanup_tree_cfg_loop): Removed.
4648         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
4649         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
4650         instead of running cleanup_tree_cfg_loop.
4651         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
4652         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
4653         (tree_predictive_commoning): Declaration changed.
4654         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
4656 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4658         * doc/invoke.texi (l1-cache-size): Update documentation.
4659         (l2-cache-size): Document.
4660         * params.h (L2_CACHE_SIZE): New macro.
4661         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
4662         that L1_CACHE_SIZE is in kB now.
4663         (L2_CACHE_SIZE_BYTES): New macro.
4664         (tree_ssa_prefetch_arrays): Show size in kB.
4665         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
4666         and l2_cache_size fields.
4667         * config/i386/driver-i386.c (describe_cache): Detect cache size
4668         in kB.
4669         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
4670         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
4671         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
4672         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
4673         (override_options): Set l1-cache-size and l2-cache-size to default
4674         values if not specified otherwise.
4675         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
4676         (PARAM_L2_CACHE_SIZE): New.
4678 2007-08-01  Nigel Stephens  <nigel@mips.com>
4679             David Ung  <davidu@mips.com>
4680             Thiemo Seufer  <ths@mips.com>
4681             Chris Dearman  <chris@mips.com>
4682             Richard Sandiford  <richard@codesourcery.com>
4684         * config.gcc (mips*-sde-elf*): New stanza.
4685         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
4686         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
4687         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
4688         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
4689         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
4690         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
4691         to tmake_file.
4692         * config/mips/sde.h: New file.
4693         * config/mips/t-libgcc-mips16: Likewise.
4694         * config/mips/t-sde: Likewise.
4695         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
4696         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
4697         _MIPS_FPSET and _MIPS_SZINT.
4698         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
4699         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
4700         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
4701         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
4702         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4703         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4704         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
4705         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
4706         _MIPS_SZPTR and _MIPS_FPSET.
4707         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
4708         architecture is specified.
4709         (MIPS_32BIT_OPTION_SPEC): New macro.
4711 2007-07-31  Dan Hipschman  <dsh@google.com>
4713         * gcc.c (end_going_arg): New function.
4714         (do_spec_2): Use it.
4715         (do_spec_1): Use it.
4717 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4719         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
4720         only if ENABLE_CHECKING is defined.
4722 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
4724         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
4725         df_ru_add_problem, df_ru_get_bb_info): Removed.
4726         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
4727         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
4728         df_ru_free_bb_info, df_ru_alloc,
4729         df_ru_bb_local_compute_process_def,
4730         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
4731         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
4732         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
4733         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
4734         df_ru_add_problem): Removed.
4736 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4738         PR target/32847
4739         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
4740         (casesi32p, casesi64p): Likewise.
4741         (casesi): Adjust for above.
4743 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
4745         * mode-switching.c (create_pre_exit): Don't search past calls.
4747 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
4749         * config/mips/mips.h (ISA_HAS_SYNCI):  Add !TARGET_MIPS16 test.
4751 2007-07-31  Revital Eres  <eres@il.ibm.com>
4753         * ddg.c (add_deps_for_def): Rename to...
4754         (add_cross_iteration_register_deps): This.  Change implementation
4755         to use only reaching def and def-use chains to construct the
4756         inter loop dependencies.
4757         (add_deps_for_use): Remove function.
4758         (build_inter_loop_deps): Call add_cross_iteration_register_deps
4759         function to build the inter loop dependencies.
4760         * modulo-sched.c (sms_schedule): Build only
4761         reaching def and def-use chains for the propose of the ddg
4762         construction.
4764 2007-07-31  Julian Brown  <julian@codesourcery.com>
4766         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
4767         New define_insns. Use correct RTL.
4768         (vec_set<mode>): Write as expander.
4770 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
4772         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
4773         to an unallocated space.
4775 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
4777         * tree-data-ref.c
4778         (split_constant_offset): Enable split_constant_offset to extract
4779         constants from other statements.
4780         * tree-vect-transform.c
4781         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
4782         to a temp var. Force base_offset to be simple.
4784 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
4786         * df-scan.c (df_scan_verify): Remove artificial limit on
4787         the number of blocks for verification.
4788         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
4789         df_simulate_defs): Avoid unnecessary insn checking for defs.
4791 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
4793         * config/m68k/lb1sf68.asm (FUNC): New macro.
4794         (__mulsi3): Use it.
4795         (__udivsi3): Likewise.
4796         (__divsi3): Likewise.
4797         (__umodsi3): Likewise.
4798         (__modsi3): Likewise.
4799         (__subdf3): Likewise.
4800         (__adddf3): Likewise.
4801         (__muldf3): Likewise.
4802         (__divdf3): Likewise.
4803         (__negdf2): Likewise.
4804         (__cmpdf2): Likewise.
4805         (__subsf3): Likewise.
4806         (__addsf3): Likewise.
4807         (__mulsf3): Likewise.
4808         (__divsf3): Likewise.
4809         (__negsf2): Likewise.
4810         (__cmpsf2): Likewise.
4811         (__eqdf2): Likewise.
4812         (__nedf2): Likewise.
4813         (__gtdf2): Likewise.
4814         (__gedf2): Likewise.
4815         (__ltdf2): Likewise.
4816         (__ledf2): Likewise.
4817         (__eqsf2): Likewise.
4818         (__nesf2): Likewise.
4819         (__gtsf2): Likewise.
4820         (__gesf2): Likewise.
4821         (__ltsf2): Likewise.
4822         (__lesf2): Likewise.
4824 2007-07-30  Ollie Wild  <aaw@google.com>
4826         * c-ppoutput.c (print_lines_directives_only): New function.
4827         (scan_translation_unit_directives_only): New function.
4828         (preprocess_file): Add call to scan_translation_unit_directives_only.
4829         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
4830         (sanitize_cpp_opts): Add default flag_dump_macros setting for
4831         -fdirectives-only.  Add errors for -fdirectives-only conflict with
4832         -Wunused-macros and -traditional.
4833         (finish_options): Add builtin macro initialization for
4834         -fdirectives-only + -fpreprocessed.
4835         * c.opt (fdirectives-only): New.
4836         * doc/cppopts.texi (fdirectives-only): New.
4838 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4840         * alias.c (record_set, memory_modified_1): Constify.
4841         * bt-load.c (note_btr_set): Likewise.
4842         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
4843         * combine.c (set_nonzero_bits_and_sign_copies,
4844         expand_field_assignment, record_dead_and_set_regs_1,
4845         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
4846         likely_spilled_retval_1): Likewise.
4847         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
4848         frv_io_handle_set): Likewise.
4849         * config/mips/mips.c (mips_sim_record_set,
4850         vr4130_true_reg_dependence_p_1): Likewise.
4851         * config/mt/mt.c (insn_dependent_p_1): Likewise.
4852         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
4853         * config/sh/sh.c (flow_dependent_p_1): Likewise.
4854         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
4855         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
4856         * ddg.c (mark_mem_store): Likewise.
4857         * df-problems.c (df_urec_mark_reg_change): Likewise.
4858         * function.c (update_epilogue_consts): Likewise.
4859         * gcse.c (record_set_info, record_last_set_info,
4860         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
4861         reg_clear_last_set): Likewise.
4862         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
4863         Likewise.
4864         * jump.c (reversed_comparison_code_parts): Likewise.
4865         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
4866         reg_is_set): Likewise.
4867         * loop-iv.c (mark_altered): Likewise.
4868         * mode-switching.c (reg_becomes_live): Likewise.
4869         * optabs.c (no_conflict_move_test): Likewise.
4870         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
4871         Likewise.
4872         * postreload.c (reload_combine_note_store, move2add_note_store):
4873         Likewise.
4874         * regmove.c (flags_set_1): Likewise.
4875         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
4876         Likewise.
4877         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
4878         Likewise. 
4879         * resource.c (update_live_status): Likewise.
4880         * rtl.h (set_of, note_stores): Likewise.
4881         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
4882         note_stores, parms_set): Likewise.
4883         * sched-rgn.c (sets_likely_spilled_1): Likewise.
4884         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
4885         Likewise. 
4886         * var-tracking.c (count_stores, add_stores): Likewise.
4888 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4890         * alias.c (mems_in_disjoint_alias_sets_p,
4891         fixed_scalar_and_varying_struct_p, aliases_everything_p,
4892         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
4893         write_dependence_p, mems_in_disjoint_alias_sets_p,
4894         read_dependence, true_dependence, canon_true_dependence,
4895         anti_dependence, output_dependence): Constify.
4896         * combine.c (extended_count): Likewise.
4897         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
4898         * cselib.c (get_value_hash, references_value_p,
4899         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
4900         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
4901         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
4902         * function.c (contains, prologue_epilogue_contains,
4903         sibcall_epilogue_contains): Likewise. 
4904         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
4905         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
4906         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
4907         reg_or_subregno): Likewise.
4908         * recog.c (asm_noperands): Likewise.
4909         * reload1.c (function_invariant_p): Likewise.
4910         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
4911         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
4912         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
4913         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
4914         true_regnum, reg_or_subregno, condjump_in_parallel_p,
4915         extended_count, prologue_epilogue_contains,
4916         sibcall_epilogue_contains, function_invariant_p, true_dependence,
4917         canon_true_dependence, read_dependence, anti_dependence,
4918         output_dependence): Likewise.
4919         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
4921 2007-07-30  Julian Brown  <julian@codesourcery.com>
4923         * config/arm/neon.md (V_ext): New mode attribute.
4924         (neon_vget_lane<mode>): Replace with define_expand.
4925         (neon_vget_lane<mode>_sext_internal)
4926         (neon_vget_lane<mode>_zext_internal): New define_insns for double
4927         and quad precision vectors.
4928         (neon_vget_lanedi): Add bounds check. Remove dead comment.
4929         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
4930         have typeless 32-bit result.
4932 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4934         PR tree-opt/32527
4935         * tree-affine.h (aff_tree): The type of rest is sizetype for types
4936         of pointers.
4937         * tree-affine.c (aff_combination_scale): If type is a pointer type,
4938         use sizetype for rest.
4939         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
4940         (aff_combination_convert): Don't convert rest for pointer types.
4942 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
4944         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
4946         * tree-ssa-alias.c: Add alloc-pool.h.
4947         (init_alias_info): Free alias_bitmap_obstack.
4948         (delete_alias_info): Call delete_mem_ref_stats.
4949         (get_mem_sym_stats_for): Use alloc_pool.
4950         (init_mem_ref_stats): Do not delete mem_ref_stats here.
4951         (delete_mem_sym_stats): Removed.
4952         
4953 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
4955         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
4956         functions cannot be represented as classical distance vectors.
4958 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4960         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
4961         * builtins.c (validate_arg, builtin_mathfn_code,
4962         validate_arglist): Likewise.
4963         * calls.c (call_expr_flags): Likewise.
4964         * combine.c (reg_nonzero_bits_for_combine,
4965         reg_num_sign_bit_copies_for_combine, get_last_value,
4966         reg_truncated_to_mode): Likewise.
4967         * emit-rtl.c (subreg_lowpart_p): Likewise.
4968         * expr.c (highest_pow2_factor_for_target,
4969         categorize_ctor_elements_1, categorize_ctor_elements,
4970         count_type_elements, contains_packed_reference,
4971         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
4972         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
4973         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
4974         native_encode_int, native_encode_real, native_encode_complex,
4975         native_encode_vector, native_encode_expr, native_interpret_int,
4976         native_interpret_real, native_interpret_complex,
4977         native_interpret_vector, native_interpret_expr): Likewise.
4978         * function.c (use_register_for_decl): Likewise.
4979         * gimplify.c (get_name): Likewise.
4980         * langhooks-def.h (lhd_return_null_const_tree): New.
4981         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
4982         * langhooks.c (lhd_return_null_const_tree): New.
4983         * langhooks.h (lang_get_callee_fndecl): Constify.
4984         * output.h (constructor_static_from_elts_p): Likewise.
4985         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
4986         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
4987         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
4988         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
4989         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
4990         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
4991         * rtlhooks-def.h (reg_nonzero_bits_general,
4992         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
4993         Likewise. 
4994         * rtlhooks.c (reg_num_sign_bit_copies_general,
4995         reg_nonzero_bits_general, reg_truncated_to_mode_general):
4996         Likewise. 
4997         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
4998         * stor-layout.c (mode_for_size_tree): Likewise.
4999         * tree-ssa-loop-im.c (memref_eq): Likewise.
5000         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
5001         * tree.c (contains_placeholder_p, type_list_equal,
5002         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
5003         Likewise. 
5004         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
5005         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
5006         contains_placeholder_p, contains_packed_reference,
5007         get_callee_fndecl, operand_equal_for_phi_arg_p,
5008         warn_if_unused_value, is_body_block, native_encode_expr,
5009         native_interpret_expr, fold_convertible_p, operand_equal_p,
5010         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
5011         validate_arglist, simple_cst_equal, type_list_equal,
5012         use_register_for_decl, call_expr_flags, get_name,
5013         highest_pow2_factor): Likewise.
5014         (const_call_expr_arg_iterator_d,
5015         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
5016         first_const_call_expr_arg, more_const_call_expr_args_p,
5017         FOR_EACH_CONST_CALL_EXPR_ARG): New.
5018         * varasm.c (constructor_static_from_elts_p): Constify.
5020 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
5022         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
5023         config/arm/neon-schedgen.ml, config/arm/neon.ml,
5024         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
5025         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
5026         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
5027         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
5028         spelling conventions.
5029         * doc/invoke.texi: Follow spelling conventions.
5031 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
5032             Revital Eres  <eres@il.ibm.com>
5034         * modulo-sched.c (sms_schedule): Avoid loops which includes
5035         auto-increment instructions.
5037 2007-07-28  Richard Guenther  <rguenther@suse.de>
5039         PR middle-end/32920
5040         * fold-const.c (fold_cond_expr_with_comparison): Convert
5041         operand zero of MIN/MAX_EXPR to correct type.
5043 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5045         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
5046         flags_from_decl_or_type): Constify.
5047         * gcc.c (do_spec_1): Likewise.
5048         * print-tree.c (dump_addr, print_node_brief): Likewise.
5049         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
5050         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
5051         tree_purge_all_dead_eh_edges): Likewise.
5052         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
5053         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
5054         Likewise. 
5055         * tree.c (expr_location, expr_has_location, expr_locus,
5056         expr_filename, expr_lineno, get_inner_array_type,
5057         fields_compatible_p): Likewise.
5058         * tree.h (get_inner_array_type, fields_compatible_p,
5059         expr_location, expr_has_location, expr_locus, expr_filename,
5060         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
5061         setjmp_call_p, alloca_call_p): Likewise.
5063 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
5065         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
5066         TV_FLOW_INSENSITIVE.
5068         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
5069         TV_CALL_CLOBBER.
5070         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
5071         (compute_flow_insensitive_aliasing): Ditto for
5072         TV_FLOW_INSENSITIVE.    
5074 2007-07-27  Jan Hubicka  <jh@suse.cz>
5076         * config/i386/i386.c (register_move_cost): Remove accidentally
5077         comitted #if 0 block.
5079         * attribs.c: Include hashtab.h
5080         (attribute_hash): New.
5081         (substring): New structure.
5082         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
5083         New function.
5084         (init_attributes): Initialize attribute hash.
5085         (decl_attributes): Use attribute hash.
5086         * Makefile.in (attribs.c): Depend on hashtab.h.
5088 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
5090         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
5092 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
5094         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
5095         __mips_dspr2 and __mips_dsp_rev macros.
5096         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
5098 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
5099         
5100        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
5102 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
5104         PR middle-end/32749
5105         
5106         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
5107         and the updating of the live and do_not_gen sets.
5108         (df_note_bb_compute): Added updating of live and do_not_gen sets
5109         for regular defs so that the case of clobber inside conditional
5110         call is processed correctly.
5111         
5112 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
5114         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
5115         operands with compatible type.
5117 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
5119         * expr.h (store_bit_field): Don't return a value.
5120         * expmed.c (check_predicate_volatile_ok): New function.
5121         (store_bit_field_1): New function, extracted from store_bit_field.
5122         Take a fallback_p argument and return true if the operation succeeded.
5123         Only use store_fixed_bit_field if fallback_p.  Don't recompute
5124         mode_for_extraction; use op_mode instead.  Try forcing memories
5125         into registers if the insv expander fails.
5126         (store_bit_field): Use store_bit_field_1 with fallback_p true.
5127         Don't return a value.
5128         (convert_extracted_bit_field): New function, extracted from
5129         store_bit_field.
5130         (extract_bit_field_1): Likewise.  Take a fallback_p argument
5131         and return NULL if the operation succeeded.  Only use
5132         extract_fixed_bit_field if fallback_p.  Only calculate one
5133         extraction mode.  Combine code for extv and extzv.  Try forcing
5134         memories into registers if the ext(z)v expander fails.
5135         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
5137 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
5139         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
5140         into bitfields.
5141         (df_ref): Likewise.  Put regno with other integer fields.
5143 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
5145         * df.h (df_mw_hardreg): Remove "loc" field.
5146         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
5147         local variable.
5148         * df-problems.c (df_whole_mw_reg_unused_p): New function,
5149         split out from df_set_unused_notes_for_mw.  Return false for
5150         partial references.  Assert that mw_reg is a REG when returning true.
5151         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
5152         (df_whole_mw_reg_dead_p): New function, split out from
5153         df_set_dead_notes_for_mw.  Return false for partial references.
5154         Assert that mw_reg is a REG when returning true.
5155         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
5156         Remove redundant bitmap check.
5158 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
5160         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
5161         ($(T)crtend.o): Likwise.
5162         ($(T)crtbeginS.o): Likwise.
5163         ($(T)crtendS.o): Likwise.
5164         ($(T)crtfastmath.o): Likwise.
5166 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
5168         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
5169         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
5170         * basic-block.h (struct control_flow_graph): Added x_dom_computed
5171         and x_n_bbs_in_dom_tree fields.
5173 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
5175         PR tree-optimization/32087
5176         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
5177         Do not call scale_bbs_frequencies_int with prob of zero.
5179 2007-07-26  Julian Brown  <julian@codesourcery.com>
5181         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
5182         (neon_element_bits): Add prototypes.
5183         * config/arm/arm.c (bounds_check, neon_lane_bounds)
5184         (neon_const_bounds, neon_element_bits): New functions.
5185         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
5186         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
5187         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
5188         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
5189         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
5190         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
5191         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
5192         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
5193         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
5194         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
5195         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
5196         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
5197         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
5199 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
5201         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
5202         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
5204 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
5205             Julian Brown  <julian@codesourcery.com>
5207         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
5208         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
5209         * config/arm/cortex-a8.md: New.
5210         * config/arm/cortex-a8-neon.md: New.
5211         * config/arm/neon-schedgen.ml: New.
5212         * config/arm/neon.md (vqh_mnem): New.
5213         (neon_type): New.
5214         (Is_float_mode): New.
5215         (Scalar_mul_8_16): New.
5216         (Is_d_reg): New.
5217         (V_mode_nunits): New.
5218         (All instruction patterns): Annotate with neon_type attribute
5219         values.
5220         * config/arm/arm.md: Include cortex-a8.md.
5221         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
5222         values.
5223         Annotate instruction patterns accordingly.
5224         (generic_sched): Do not use generic scheduling for Cortex-A8.
5225         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
5227 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
5229         * fold-const.c (fold_read_from_constant_string): Use
5230         build_int_cst_type.
5231         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
5233 2007-07-26  Nick Clifton  <nickc@redhat.com>
5235         * tree-ssa-operands.h: Change copyright header to refer to version
5236         3 of the GNU General Public License and to point readers at the
5237         COPYING3 file and the FSF's license web page.
5238         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
5239         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
5240         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
5241         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
5242         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
5243         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
5244         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
5245         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
5246         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
5247         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
5248         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
5249         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
5250         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
5251         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
5252         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
5253         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
5254         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
5255         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
5256         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
5257         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
5258         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
5259         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
5260         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
5261         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
5262         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
5263         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
5264         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
5265         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
5266         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
5267         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
5268         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
5269         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
5270         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
5271         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
5272         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
5273         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
5274         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
5275         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
5276         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
5277         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
5278         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
5279         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
5280         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
5281         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
5282         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
5283         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
5284         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
5285         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
5286         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
5287         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
5288         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
5289         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
5290         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
5291         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
5292         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
5293         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
5294         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
5295         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
5296         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
5297         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
5298         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
5299         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
5300         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
5301         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
5302         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
5303         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
5304         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
5305         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
5306         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
5307         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
5308         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
5309         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
5310         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
5311         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
5312         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
5313         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
5314         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
5315         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
5316         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
5317         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
5318         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
5319         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
5320         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
5321         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
5322         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
5323         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
5324         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
5325         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
5326         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
5327         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
5328         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
5329         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
5330         vecprim.h, basic-block.h, tree-ssa-structalias.c,
5331         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
5332         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
5333         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
5334         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
5335         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
5336         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
5337         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
5338         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
5339         convert.c, convert.h, langhooks-def.h, reload1.c,
5340         tree-ssa-operands.c: Likewise.
5342 2007-07-26  Jan Hubicka  <jh@suse.cz>
5344         * tree-ssa-live.c: Include debug.h and flags.h.
5345         (mark_scope_block_unused): New function.
5346         (remove_unused_scope_block_p): New function.
5347         (remove_unused_locals): Remove unused blocks too.
5349 2007-07-25  Ian Lance Taylor  <iant@google.com>
5351         * combine.c (combine_max_regno): Remove.  Remove all uses.
5352         (struct reg_stat_struct): Rename from struct reg_stat.
5353         (reg_stat_type): Define, and declare VECs.
5354         (reg_stat): Change from pointer to VEC.  Change all uses.
5355         (combine_split_insns): New static function.
5356         (try_combine, find_split_point): Call it instead of split_insns.
5358 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5360         * cfghooks.c (split_block): Fix the information about loop latch.
5362 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5364         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
5366 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5368         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
5369         Scan the new edge for loop exit info.
5371 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
5373         * config/darwin.c: Include debug.h.
5375 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
5377         PR target/32218
5378         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
5380 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
5382         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
5383         (HARD_REGNO_MODE_OK): Ditto.
5384         (MODES_TIEABLE_P): Ditto.
5385         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
5386         (CLASS_MAX_NREGS): Ditto.
5387         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
5388         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
5389         (divdf3_internal_thr): Removed.
5390         * config/ia64/div.md: New file.
5391         * config/ia64/constraints.md: Add H constraint.
5393 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5395         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
5396         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
5397         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
5398         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
5399         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
5400         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
5401         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
5402         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
5403         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
5404         dump_sbitmap_file, debug_sbitmap, popcount_table,
5405         sbitmap_popcount): Constify.
5406         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
5407         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
5408         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
5409         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
5410         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
5411         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
5412         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
5413         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
5414         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
5415         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
5416         sbitmap_popcount, sbitmap_verify_popcount): Constify.
5418 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5420         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
5421         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
5422         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
5423         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
5424         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
5425         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
5426         bitmap_intersect_p, bitmap_intersect_compl_p,
5427         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
5428         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
5429         Constify.
5430         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
5431         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
5432         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
5433         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
5434         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
5435         debug_bitmap, debug_bitmap_file, bitmap_print,
5436         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
5437         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
5439 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
5441         * config/darwin.c (darwin_override_options): Additional fix for
5442         debug info formats that don't support var tracking.
5444 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5446         * cselib.c (entry_and_rtx_equal_p): Constify.
5447         * gengtype.c (output_mangled_typename, write_types, write_local):
5448         Likewise.
5449         * gengtype.h (const_type_p): New.
5450         * see.c (eq_descriptor_extension, hash_descriptor_extension):
5451         Constify.
5452         * tlink.c (scan_linker_output): De-constify.
5453         * tree-ssa-loop-im.c (memref_eq): Constify.
5454         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
5455         (shared_bitmap_hash, shared_bitmap_eq): Constify.
5457 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5459         * c-common.c (fname_as_string, c_type_hash): Constify.
5460         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
5461         * cgraph.c (edge_hash, edge_eq): Likewise.
5462         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
5463         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
5464         reg_attrs_htab_eq): Likewise.
5465         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
5466         Likewise.
5467         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
5468         const_decl_t, const_state_t, const_automata_list_el_t): New.
5469         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
5470         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
5471         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
5472         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
5473         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
5474         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
5475         compare_max_occ_cycle_nums, out_state_arcs_num,
5476         compare_transition_els_num, units_cmp, state_reservs_cmp):
5477         Constify.
5478         * genmodes.c (cmp_modes): Likewise.
5479         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
5480         * gimplify.c (compare_case_labels): Likewise.
5481         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
5482         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
5483         * matrix-reorg.c (mtt_info_hash): Likewise.
5484         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
5485         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
5486         (htab_hash_bucket, htab_hash_elem): Constify.
5487         * tree-browser.c (TB_parent_eq): Likewise.
5488         * tree-scalar-evolution.c (hash_scev_info): Likewise.
5489         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
5490         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
5491         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
5492         Constify.
5493         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
5494         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
5495         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
5496         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
5497         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
5498         New.
5499         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
5500         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
5501         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
5502         * tree-ssa-threadupdate.c (redirection_data_hash,
5503         redirection_data_eq): Likewise. 
5504         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
5505         * tree-ssa.c (var_ann_eq): Likewise.
5506         * tree-vrp.c (compare_case_labels): Likewise.
5507         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
5508         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
5509         tree_not_check_failed, tree_class_check_failed,
5510         tree_range_check_failed, tree_not_class_check_failed,
5511         omp_clause_check_failed, omp_clause_range_check_failed,
5512         tree_contains_struct_check_failed, tree_operand_check_failed):
5513         Likewise. 
5514         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
5515         tree_not_check_failed, tree_class_check_failed,
5516         tree_range_check_failed, tree_not_class_check_failed,
5517         tree_operand_check_failed, omp_clause_operand_check_failed,
5518         tree_operand_length): Likewise. 
5519         * var-tracking.c (const_variable): New.
5520         (variable_htab_hash, variable_htab_eq): Constify.
5521         * varasm.c (const_desc_hash): Likewise.
5523 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5525         * expr.c (handled_component_p): Constify.
5526         * fold-const.c (fit_double_type): Likewise.
5527         * real.h (real_value_from_int_cst): Likewise.
5528         * tree-flow-inline.h (gimple_in_ssa_p,
5529         gimple_aliases_computed_p, gimple_addressable_vars,
5530         gimple_call_clobbered_vars, gimple_referenced_vars,
5531         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
5532         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
5533         may_aliases, end_readonly_imm_use_p, has_zero_uses,
5534         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
5535         is_label_stmt, is_global_var, phi_ssa_name_p,
5536         factoring_name_p, is_call_clobbered, tree_common_ann,
5537         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
5538         unmodifiable_var_p, array_ref_contains_indirect_ref,
5539         ref_contains_array_ref, lookup_subvars_for_var,
5540         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
5541         gimple_mem_ref_stats): Likewise.
5542         * tree-flow.h (tree_common_ann, var_ann, function_ann,
5543         may_aliases, is_exec_stmt, is_label_stmt,
5544         ref_contains_array_ref, array_ref_contains_indirect_ref,
5545         var_can_have_subvars, overlap_subvar, is_call_clobbered,
5546         unmodifiable_var_p): Likewise.
5547         * tree-gimple.c (is_gimple_min_invariant): Likewise.
5548         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
5549         * tree.c (type_hash_list, attribute_hash_list, tree_size,
5550         cst_and_fits_in_hwi, real_value_from_int_cst,
5551         build_real_from_int_cst, integer_zerop, integer_onep,
5552         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
5553         tree_floor_log2, real_zerop, real_onep, real_twop,
5554         real_minus_onep, really_constant_p, purpose_member, chain_member,
5555         list_length, fields_length, int_size_in_bytes, bit_position,
5556         int_bit_position, byte_position, int_byte_position, expr_align,
5557         array_type_nelts, tree_node_structure,
5558         type_contains_placeholder_1, iterative_hash_pointer,
5559         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
5560         tree_map_base_eq, type_hash_list, type_hash_eq,
5561         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
5562         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
5563         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
5564         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
5565         int_fits_type_p, get_containing_scope, decl_function_context,
5566         decl_type_context, omp_clause_operand_check_failed,
5567         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
5568         * tree.h (omp_clause_operand_check_failed, tree_size,
5569         build_real_from_int_cst, array_type_nelts, purpose_member,
5570         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
5571         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
5572         is_attribute_p, check_qualified_type, expr_align,
5573         int_size_in_bytes, bit_position, int_bit_position, byte_position,
5574         int_byte_position, list_length, fields_length, initializer_zerop,
5575         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
5576         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
5577         tree_node_structure, handled_component_p, get_containing_scope,
5578         decl_function_context, decl_type_context, real_zerop,
5579         type_num_arguments, fit_double_type, really_constant_p,
5580         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
5581         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
5582         real_twop, real_minus_onep, int_cst_value): Likewise.
5584 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5586         * cfglayout.c (insn_scope, insn_line): Constify.
5587         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
5588         const_double_htab_hash, const_double_htab_eq,
5589         mem_attrs_htab_hash): Likewise.
5590         * loop-iv.c (biv_eq): Likewise.
5591         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
5592         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
5593         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
5594         Likewise. 
5595         * rtl-error.c (location_for_asm, diagnostic_for_asm,
5596         error_for_asm, warning_for_asm, _fatal_insn,
5597         _fatal_insn_not_found): Likewise. 
5598         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
5599         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
5600         rtl_check_failed_type2, rtl_check_failed_code1,
5601         rtl_check_failed_code2, rtl_check_failed_code_mode,
5602         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
5603         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
5604         rtl_check_failed_type2, rtl_check_failed_code1,
5605         rtl_check_failed_code2, rtl_check_failed_code_mode,
5606         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
5607         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
5608         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
5609         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
5610         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
5611         rtx_unstable_p, get_integer_term, get_related_value,
5612         offset_within_block_p, reg_mentioned_p, count_occurrences,
5613         reg_referenced_p, reg_used_between_p, no_labels_between_p,
5614         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
5615         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
5616         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
5617         find_constant_src, find_reg_fusage, find_regno_fusage,
5618         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
5619         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
5620         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
5621         computed_jump_p, auto_inc_p, in_expr_list_p,
5622         remove_node_from_expr_list, loc_mentioned_in_p,
5623         label_is_jump_target_p, reversed_comparison_code_parts,
5624         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
5625         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
5626         print_inline_rtx): Likewise.
5627         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
5628         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
5629         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
5630         get_integer_term, get_related_value, offset_within_block_p,
5631         count_occurrences, reg_mentioned_p, no_labels_between_p,
5632         reg_used_between_p, reg_referenced_p, single_set_2,
5633         multiple_sets, set_noop_p, refers_to_regno_p,
5634         reg_overlap_mentioned_p, dead_or_set_p,
5635         covers_regno_no_parallel_p, covers_regno_p,
5636         dead_or_set_regno_p, find_reg_note, find_regno_note,
5637         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
5638         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
5639         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
5640         side_effects_p, may_trap_p_1, may_trap_p,
5641         may_trap_after_code_motion_p, may_trap_or_fault_p,
5642         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
5643         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
5644         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
5645         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
5646         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
5647         Likewise. 
5648         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
5649         warning_for_asm): Likewise.
5650         * tree.h (print_rtl): Likewise.
5651         * varasm.c (get_pool_mode): Likewise.
5653 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5655         * c-lex.c (c_lex_with_flags, lex_string): Constify.
5656         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
5657         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
5658         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
5659         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
5660         * ddg.c (compare_sccs): Likewise.
5661         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
5662         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
5663         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
5664         decimal_do_fix_trunc, decimal_real_to_integer,
5665         decimal_real_to_integer2, decimal_real_maxval): Likewise.
5666         * dse.c (const_group_info_t): New.
5667         (invariant_group_base_eq, invariant_group_base_hash): Constify.
5668         * dwarf2out.c (const_dw_die_ref): New.
5669         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
5670         * tree-browser.c (TB_parent_eq): Likewise.
5671         * unwind-dw2-fde.c (__register_frame_info_bases,
5672         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
5673         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
5674         Likewise.
5675         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
5676         * unwind-dw2.c (uw_frame_state_for): Likewise.
5677         * value-prof.c (histogram_hash, histogram_eq): Likewise.
5678         * value-prof.h (const_histogram_value): New.
5680 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
5682         * config/mips/mips.c (machine_function): Add
5683         initialized_mips16_gp_pseudo_p.
5684         (mips16_gp_pseudo_reg): Do not emit the initialization of
5685         mips16_gp_pseudo_rtx when being called from the gimple cost-
5686         calculation routines; emit it on the first use outside those
5687         routines.
5689 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5691         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
5692         New.
5693         
5694         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
5695         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
5696         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
5697         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
5698         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
5699         Preserve const-ness of parameters through use of __typeof(),
5700         also constify and tidy.
5701         
5702         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
5703         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
5704         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
5705         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
5706         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
5707         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
5708         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
5709         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
5710         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
5712 2007-07-25  Julian Brown  <julian@codesourcery.com>
5713             Mark Shinwell  <shinwell@codesourcery.com>
5715         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
5716         (alpha_mangle_type): This.
5717         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5718         (TARGET_MANGLE_TYPE): Define this instead.
5719         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
5720         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
5721         (arm_init_neon_builtins): Fix comment.
5722         (arm_mangle_map_entry): New.
5723         (arm_mangle_map): New.
5724         (arm_mangle_type): New.
5725         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
5726         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
5727         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
5728         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5729         (TARGET_MANGLE_TYPE): Define this instead.
5730         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
5731         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
5732         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
5733         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5734         (TARGET_MANGLE_TYPE): Define this instead.
5735         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
5736         to...
5737         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
5738         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5739         (TARGET_MANGLE_TYPE): Define this instead.
5740         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
5741         (s390_mangle_type): This.
5742         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5743         (TARGET_MANGLE_TYPE): Define this instead.
5744         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
5745         (sparc_mangle_type): This.
5746         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5747         (TARGET_MANGLE_TYPE): Define this instead.
5748         * cp/mangle.c (write_type): Call mangle_type target hook on all
5749         types before mangling.  Use original type, not main variant, as
5750         argument.
5751         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
5752         (TARGET_MANGLE_TYPE): This.
5753         * target.h (gcc_target): Rename mangle_fundamental_type to
5754         mangle_type.
5755         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
5756         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
5758 2007-07-25  Julian Brown  <julian@codesourcery.com>
5759             Paul Brook  <paul@codesourcery.com>
5760             Joseph Myers  <joseph@codesourcery.com>
5761             Mark Shinwell  <shinwell@codesourcery.com>
5763         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
5764         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
5765         (with_fpu): Allow --with-fpu=neon.
5766         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
5767         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
5768         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
5769         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
5770         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
5771         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
5772         (neon_emit_pair_result_insn, neon_disambiguate_copy)
5773         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
5774         (output_move_neon): Add prototypes.
5775         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
5776         (all_fpus): Add FPUTYPE_NEON.
5777         (fp_model_for_fpu): Add NEON field.
5778         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
5779         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
5780         in registers.
5781         (arm_legitimate_address_p): Don't support fancy addressing for NEON
5782         structure moves.
5783         (thumb2_legitimate_address_p): Likewise.
5784         (neon_valid_immediate): Recognize and prepare constants suitable for
5785         NEON instructions.
5786         (neon_immediate_valid_for_move): New function. Recognize and prepare
5787         immediates for NEON move instructions.
5788         (neon_immediate_valid_for_logic): New function. Recognize and
5789         prepare immediates for NEON logic instructions.
5790         (neon_output_logic_immediate): New function. Create asm string
5791         suitable for outputting immediate logic instructions.
5792         (neon_pairwise_reduce): New function. Implement reduction using
5793         pairwise operations.
5794         (neon_expand_vector_init): New function. Expand a (possibly
5795         non-constant) vector initialization.
5796         (neon_vector_mem_operand): New function. Memory operands supported
5797         for quad-word loads/stores to/from ARM or NEON registers. Don't
5798         allow base+offset addressing for core regs.
5799         (neon_struct_mem_operand): New function. Valid mems for NEON
5800         structure moves.
5801         (coproc_secondary_reload_class): Enable NEON registers to be loaded
5802         from neon_vector_mem_operand addresses without a secondary register.
5803         (add_minipool_forward_ref): Handle >8-byte minipool entries.
5804         (add_minipool_backward_ref): Likewise.
5805         (dump_minipool): Likewise.
5806         (push_minipool_fix): Likewise.
5807         (output_move_quad): New function. Output quad-word moves, loads and
5808         stores using ARM registers.
5809         (output_move_vfp): Add support for vectors in VFP (NEON) D
5810         registers.
5811         (output_move_neon): Output a NEON load/store to/from a quadword
5812         register.
5813         (arm_print_operand): Implement new codes:
5814         - 'c' for unadorned integers (without a # sign).
5815         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
5816         mode.
5817         - 'e', 'f' for the low and high D parts of a NEON Q register.
5818         - 'q' outputs a NEON Q register.
5819         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
5820         - 'T' prints NEON opcode features from a coded bitmask.
5821         - 'F' is similar to T, but signed/unsigned codes both print as
5822         'i'.
5823         - 't' is similar to T, but 'u' is printed instead of 'p'.
5824         - 'O' prints 'r' if NEON instruction should perform rounding (as
5825         specified by bitmask), else prints nothing.
5826         - '#' is a punctuation character to stop operand numbers from
5827         running together with following digits in the assembler
5828         strings for instructions (when using mode attributes).
5829         (arm_assemble_integer): Handle extra NEON vector modes. Permute
5830         constant vectors in big-endian mode, where necessary.
5831         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
5832         Handle EI, OI, CI, XI modes.
5833         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
5834         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
5835         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
5836         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
5837         (neon_builtin_type_bits): Add enumeration, one bit for each vector
5838         type.
5839         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
5840         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
5841         to turn v8qi, etc. into bits defined above.
5842         (neon_itype): New enumeration. Classifications of NEON builtins.
5843         (neon_builtin_datum): Define struct. Contains information about
5844         a single builtin (with multiple modes).
5845         (CF): Define helper macro for...
5846         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
5847         modes.
5848         (neon_builtin_data): New array. Define information about builtins
5849         for use during initialization/expansion.
5850         (arm_init_neon_builtins): New function.
5851         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
5852         true.
5853         (neon_builtin_compare): New function.
5854         (locate_neon_builtin_icode): New function. Find an insn code for a
5855         builtin given a function code for that builtin. Also return type of
5856         builtin (NEON_BINOP, NEON_UNOP etc.).
5857         (builtin_arg): New enumeration. Types of arguments for builtins.
5858         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
5859         Takes a variable argument list of builtin_arg types, terminated by
5860         NEON_ARG_STOP.
5861         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
5862         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
5863         (neon_emit_pair_result_insn): New function. Support returning pairs
5864         of vectors via a pointer.
5865         (neon_disambiguate_copy): New function. Set up operands for a
5866         multi-word copy such that registers do not get clobbered.
5867         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
5868         ARM_BUILTIN_NEON_BASE.
5869         (arm_file_start): Set float-abi attribute for NEON.
5870         (arm_vector_mode_supported_p): Enable NEON vector modes.
5871         (arm_mangle_map_entry): New.
5872         (arm_mangle_map): New.
5873         (arm_mangle_vector_type): New.
5874         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
5875         when appropriate.
5876         (TARGET_NEON): New macro. Target supports NEON.
5877         (fputype): Add FPUTYPE_NEON.
5878         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
5879         for vectorization based on command-line arg.
5880         (NEON_REGNO_OK_FOR_NREGS): Define.
5881         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
5882         (VALID_NEON_STRUCT_MODE): Define.
5883         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
5884         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
5885         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
5886         (consttable_16): Add pattern for outputting 16-byte minipool
5887         entries.
5888         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
5889         vec-common.md).
5890         (vec-common.md, neon.md): Include md files.
5891         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
5892         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
5893         (memory_constraint "Ut", "Un", "Us"): Define.
5894         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
5895         (MMX_char): New mode attribute.
5896         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
5897         (*add<mode>3_iwmmxt): New insn pattern.
5898         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
5899         (*sub<mode>3_iwmmxt): New insn pattern.
5900         (mulv4hi3): Rename to...
5901         (*mulv4hi3_iwmmxt): This.
5902         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
5903         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
5904         (uminv4hi3, uminv2si3): Remove. Replace with...
5905         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
5906         (*umin<mode>3_iwmmxt): These.
5907         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
5908         (ashr<mode>3_iwmmxt): This new pattern.
5909         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
5910         (lshr<mode>3_iwmmxt): This new pattern.
5911         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
5912         (ashl<mode>3_iwmmxt): This new pattern.
5913         * config/arm/neon-docgen.ml: New file. Generate documentation for
5914         intrinsics.
5915         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
5916         * config/arm/arm_neon.h: New (autogenerated).
5917         * config/arm/neon-testgen.ml: New file. Generate NEON tests
5918         automatically.
5919         * config/arm/neon.md: New file. Define NEON instructions.
5920         * config/arm/neon.ml: New file. Abstract description of NEON
5921         instructions, used to generate arm_neon.h header, documentation and
5922         tests.
5923         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
5924         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
5925         support.
5926         * doc/extend.texi (ARM Built-in Functions): Rename and remove
5927         extraneous comma.
5928         (ARM NEON Intrinsics): New subsection.
5929         * doc/arm-neon-intrinsics.texi: New (autogenerated).
5931 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
5933         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
5934         prototype.
5936 2007-07-24  Jan Hubicka  <jh@suse.cz>
5938         * regclass.c (move_table): New type.
5939         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
5940         (init_move_cost): Break out from ...
5941         (init_reg_sets_1): ... here; simplify computation of
5942         have_regs-of_mode and contains_reg_of_mode.
5943         (record_reg_classes): Unswitch internal loops.
5944         (copy_cost): Trigger lazy initialization of move cost
5945         (record_address_regs): Likewise.
5947 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
5949         * config/darwin.c (darwin_override_options): Don't force on
5950         flag_var_tracking_uninit when no debug info is requested.
5952 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5954         * cfgloop.c (init_loops_structure): New function.
5955         (flow_loops_find): Create root of the loop tree unconditionally.
5957 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
5959         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
5961 2007-07-24  Jan Hubicka  <jh@suse.cz>
5963         * caller-save.c: Include ggc.h, gt-caller-save.h
5964         (reg_save_code, reg_restore_code): Rename to ...
5965         (cached_reg_save_code, cached_reg_restore_code): ... those.
5966         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
5967         (reg_save_code, reg_restore_code): New functions.
5968         (init_caller_save): Do not intialize
5969         reg_save_code/reg_restore_code tables.
5970         * Makefile.in: (gt-caller-save.h): New.
5972 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5974         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
5975         with the mode of the original operand instead of
5976         integer_one_node.
5978 2007-07-23  Jan Hubicka  <jH@suse.cz>
5980         * i386.c (ix86_secondary_memory_needed): Break out to...
5981         (inline_secondary_memory_needed): ... here.
5982         (ix86_memory_move_cost): Break out to ...
5983         (inline_memory_move_cost): ... here; add support for IN value of 2 for
5984         maximum of input and output; fix handling of Q_REGS on 64bit.
5985         (ix86_secondary_memory_needed): Microoptimize.
5987 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
5989         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
5990         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
5991         stmts_from_loop, known_dependences_p, build_rdg): New.
5992         * tree-data-ref.h: Depends on graphds.h.
5993         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
5994         (build_rdg): Declared.
5995         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
5997 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
5999         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
6000         ccp_min_invariant.
6002 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
6003             Jakub Jelinek  <jakub@redhat.com>
6005         PR middle-end/PR28690
6006         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
6007         EQ compares.
6008         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
6009         and MEM_POINTER operands over REG and MEM operands.
6010         (swap_commutative_operands_p): Change return value to bool.
6011         * rtl.h: Update the corresponding prototype.
6012         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
6013         instead of gen_rtx_PLUS.
6014         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
6015         value to bool.  Change function arguments to rtx's and update code
6016         to match.
6017         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
6018         calls to match the new declaration.
6019         * simplify-rtx.c (simplify_associative_operation): Don't
6020         reorder simplify_binary_operation arguments.
6022 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
6024         * config/mips/mips.c (override_options): Use mips_costs to derive
6025         the default branch cost.
6026         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
6027         than mips_costs.
6028         * config/mips/mips.opt (mbranch-cost=): New option.
6029         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
6031 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
6033         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
6034         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
6035         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
6036         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
6038 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
6040         * config/mips/constraints.md (ks): New constraint.
6041         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
6042         (*add<mode>3_mips16): ...here.
6044 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
6046         * optabs.h (enum optab_index): Add new OTI_signbit.
6047         (signbit_optab): Define corresponding macro.
6048         (enum insn_code signbit_optab[]): Remove array.
6049         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
6050         (expand_copysign_absneg): If back end provides signbit insn, use it
6051         instead of bit operations on floating point argument.
6052         * builtins.c (enum insn_code signbit_optab[]): Remove array.
6053         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
6054         for availability of signbit insn.
6056         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
6057         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
6058         SSE mode is not active.
6059         (isinf<mode>2): Disable for mfpmath=sse,387.
6061 2007-07-22  Ben Elliston  <bje@au.ibm.com>
6063         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
6064         `class' parameter.
6065         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
6067 2007-07-20  Richard Guenther  <rguenther@suse.de>
6069         * tree-cfg.c (verify_expr): COND_EXPRs can have any
6070         integral typed condition.
6071         * tree-ssa.c (useless_type_conversion_p): Do not preserve
6072         booleanness.  Only preserve conversions from a non-base
6073         type to a base type, not in general between types with
6074         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
6075         * tree.def (COND_EXPR): Document that the condition
6076         can be of any integral type.
6078 2007-07-20  Nigel Stephens  <nigel@mips.com>
6079             Richard Sandiford  <richard@codesourcery.com>
6081         * config/mips/mips.h (mips_dwarf_regno): Declare.
6082         (DBX_REGISTER_NUMBER): Remove redundant brackets.
6083         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
6084         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
6085         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
6086         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
6087         (REG_CLASS_NAMES): Update accordingly.
6088         * config/mips/mips.c (mips_dwarf_regno): New array.
6089         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
6090         (mips_subword): Remove special handling for accumulator registers.
6091         (override_options): Initiailize mips_dwarf_regno.  Remove use
6092         of ACC_HI_REG_P.
6093         (mips_swap_registers): New function.
6094         (mips_conditional_register_usage): Swap accumulator registers
6095         around if TARGET_LITTLE_ENDIAN.
6096         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
6097         * config/mips/constraints.md (h, l): Use the endianness to choose
6098         between MD0_REG and MD1_REG.
6099         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
6100         alternative-dependent template.
6102 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
6104         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
6105         no_new_pseudos.
6107 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
6109         * function.c (thread_prologue_and_epilogue_insns): Fix exit
6110         predecessor fallthru flags.
6112 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
6114         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
6115         of compare to the same type.
6116         * cfgloopmanip.c (add_loop): Update information about loop exits.
6117         (loop_version): Remove the innermost loop requirement.
6118         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
6119         to sizetype for pointers.
6121 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
6123         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
6124         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
6125         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
6127         * config/dfp-bit.c: Empty for TFmode conversions.
6129 2007-07-18  Caroline Tice  <ctice@apple.com>
6130         
6131         * var-tracking.c (find_src_status):  Check for  COND_EXEC insns
6132         and handle them correctly; check that src is not NULL before
6133         trying to use it.
6134         (find_src_set_src): Likewise.
6135         
6136 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
6137         
6138         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
6139         (struct alignment_context, init_alignment_context): New.
6140         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
6141         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
6142         (XCHAL_HAVE_S32C1I): Likewise.
6143         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
6144         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
6145         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
6146         (ATOMIC, HQI): New macros.
6147         (memory_barrier, *memory_barrier): New.
6148         (sync_lock_releasesi): New.
6149         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
6150         (sync_lock_test_and_set<mode>): New.
6151         (sync_<atomic><mode>): New.
6152         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
6153         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
6154         (xtensa_expand_atomic): New.
6155         
6156 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6158         PR target/30652
6160         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
6161         transformation for builtin ISNORMAL.
6162         (expand_builtin): Handle BUILT_IN_ISNORMAL.
6163         * builtins.def (BUILT_IN_ISNORMAL): New.
6164         * doc/extend.texi: Document isnormal.
6166 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6168         PR target/30652
6170         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
6171         optabs infrastructure.  Provide generic implementation for
6172         FINITE/ISFINITE.
6173         (expand_builtin): Handle FINITE/ISFINITE.
6174         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
6175         (fold_builtin_1): Likewise.
6177         * builtins.def (BUILT_IN_ISFINITE): New.
6179         * doc/extend.texi: Document isfinite.
6181 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6183         PR target/30652
6184         PR middle-end/20558
6186         * builtins.c (expand_builtin_interclass_mathfn): Provide a
6187         generic fallback for isinf.
6188         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
6189         calculation code ...
6190         * real.c (get_max_float): ... to here.
6191         * real.h (get_max_float): New.
6193 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6195         PR middle-end/32668
6197         * builtin-attrs.def (ATTR_TYPEGENERIC,
6198         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
6200         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
6201         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
6202         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
6203         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
6205         * c-common.c (handle_type_generic_attribute): New.
6206         (c_common_attribute_table): Add "type generic".
6208         * c-typeck.c (convert_arguments): Handle "type generic" functions.
6210 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
6212         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
6213         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
6214         properly.
6216 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6218         PR target/32808
6219         * config/cris/cris.c (cris_print_index): Don't use XEXP before
6220         checking that the operand is an expression.
6222 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
6223             Danny Smith  <dannysmith@users.sourceforge.net>
6225         PR/other 30335
6226         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
6227         file mapping object in local namespace if Windows version later
6228         than NT4
6230 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
6232         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
6233         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
6234         arm_cannot_force_const_mem.
6235         (arm_cannot_force_const_mem): New function.
6236         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
6237         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
6238         of arm_tls_referenced_p.
6239         * config/arm/arm.md (movsi): Split out-of-section constants when
6240         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
6241         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
6243 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
6245         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
6247 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
6249         * config/mips/mips.md (*extendqihi2): Convert the destination
6250         to SImode.
6252 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6254         * config/pa/fptr.c: Update license header.
6255         * config/pa/milli64.S: Likewise.
6257 2007-07-17  Nick Clifton  <nickc@redhat.com>
6259         * COPYING_v3: New file.  Contains version 3 of the GNU General
6260         Public License.
6261         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
6262         Lesser General Public License.
6263         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
6264         the GNU General Public License.
6266 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
6268         PR rtl-optimization/32773
6269         * cfglayout.c (force_one_exit_fallthru): New function.
6270         (cfg_layout_finalize): Use it.
6272 2007-07-16  Richard Guenther  <rguenther@suse.de>
6273             Uros Bizjak  <ubizjak@gmail.com>
6275         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
6276         before forcing it to gimple operand.
6278 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
6279             David Ung  <davidu@mips.com>
6281         * config/mips/mips.h (TUNE_24K): Define.
6282         (TUNE_MACC_CHAINS): Add TUNE_24K.
6283         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
6284         imadd.
6285         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
6286         (r74k_int_madd): .. this new reservation.
6287         (define_bypass): Fixed bypasses for r74k_int_madd to use
6288         mips_linked_madd_p.
6289         * config/mips/24k.md (define_bypass): Define new
6290         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
6292 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
6293             Nigel Stephens  <nigel@mips.com>
6295         * config/mips/mips.md:  Include 20kc.md.
6296         * config/mips/20kc.md: New file.
6297         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
6298         (mips_adjust_cost): Tweak for 20Kc.
6299         (mips_issue_rate): Likewise.
6300         * config/mips/mips.h (TUNE_20KC): Define.
6302 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
6304         * config/rs6000/rs6000.c (struct processor_cost): Add
6305         cache_line_size, l1_cache_lines, and simultaneous_prefetches
6306         fields.
6307         (*_cost): Add cache information.
6308         (rs6000_override_options): Set cache parameters.
6310 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6312         PR bootstrap/3456
6313         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
6314         * doc/install.texi (mips-sgi-irix6): pthread support works now.
6316 2007-07-16  Paul Brook  <paul@codesourcery.com>
6318         PR target/32753
6319         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
6320         (cirrus_thumb2_movsi_insn): Ditto.
6322 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
6324         * config/rs6000/darwin-fallback.c (interpret_libc): Change
6325         CR2_REGNO to R_CR2.
6327 2007-07-15  Andrew Haley  <aph@redhat.com>
6329         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
6330         before looking in the context.
6332 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6334         PR middle-end/32398
6335         PR middle-end/32769
6336         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
6337         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
6338         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
6339         (pa_output_function_prologue): Use rp_saved and
6340         current_function_is_leaf to generate .CALLINFO statement.
6341         (hppa_expand_prologue): Set rp_saved.
6342         (hppa_expand_epilogue): Use rp_saved.
6343         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
6344         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
6346 2007-07-14  Dirk Mueller  <dmueller@suse.de>
6348         * omega.c (coalesce): Fix memory leak on early exit.
6349         * matrix-reorg.c (check_allocation_function): Likewise.
6350         * tree-vect-transform.c (vect_get_new_vect_var): free result
6351         of concat().
6352         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
6353         pass pointer to edge vector
6354         (partition_hot_cold_basic_blocks): Fix memory leak.
6355         * collect2.c (prefix_from_string): Free temporary storage.
6356         * reload1.c (fixup_abnormal_edges): Free sbitmap.
6358 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
6360         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
6361         (DO_GLOBAL_DTORS_BODY): Likewise.
6363 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
6364             Nigel Stephens  <nigel@mips.com>
6366         * config/mips/mips.c (mips_classify_symbol): Don't return
6367         SYMBOL_SMALL_DATA for constant pool addresses if
6368         TARGET_EMBEDDED_DATA is true.
6370 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
6372         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
6373         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
6374         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
6375         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
6376         __builtin_ia32_storehps, __builtin_ia32_storelps,
6377         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
6378         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
6379         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
6380         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
6381         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
6382         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
6383         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
6384         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
6385         using def_builtin_const.
6387 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
6389         PR tree-optimization/32705
6390         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
6391         (simplify_binary_expression): Use SSA_VAL consistently.
6393 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
6395         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
6396         (SPEFSCR_REGNO): Delete definition.
6397         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
6398         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6399         * config/rs6000/rs6000.h: Do not define *_REGNO.
6400         LINK_REGISTER_REGNUM -> LR_REGNO.
6401         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6402         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
6403         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6404         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
6405         R_VRSAVE, R_VSCR. Use them.
6406         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
6407         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
6408         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
6409         * config/rs6000/aix.h: Define R_LR.  Use it.
6410         
6411 2007-07-13  Caroline Tice  <ctice@apple.com>
6412         
6413         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
6414         flag_var_tracking is explicitly turned off (i.e. when variable
6415         tracking is not feasible); otherwise, turn flag_var_tracking on when
6416         flag_var_tracking_uninit is on.
6417         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
6418         note definitions, to allow recording of initialization status in the
6419         notes.
6420         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
6421         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
6422         determine if two note locations are equal.
6423         (output_loc_list): Don't output list entries whose start & end labels
6424         are the same.
6425         (reg_loc_descriptor): Add parameter for initialization status; pass it
6426         to other loc descriptor functions.
6427         (one_reg_loc_descriptor): Add parameter for initialization status;
6428         check its value and add DW_OP_GNU_uninit to returned loc descr if
6429         appropriate.
6430         (multiple_reg_loc_descriptor): Add parameter for initialization
6431         status;
6432         pass init status argument to other loc descriptor functions; check
6433         value of intialization parameter and add DW_OP_GNU_uninit to returned
6434         loc descr if appropriate.
6435         (based_loc_descr): Add parameter for initialization status; add new
6436         variable for return value; check value of initialization parameter and
6437         add DW_OP_GNU_uninit to returned loc descr if appropriate.
6438         (concatn_mem_loc_descriptor): Add parameter for initialization status;
6439         pass init status argument to other loc descriptor functions; check
6440         value of intialization parameter and add DW_OP_GNU_uninit to returned
6441         loc descr if appropriate.
6442         (mem_loc_descriptor): Likewise.
6443         (concat_loc_descriptor): Likewise.
6444         (concatn_loc_descriptor): Likewise.
6445         (loc_descriptor): Add parameter for initialization status; pass it as
6446         argument to other loc descriptor function calls.
6447         (loc_descriptor_from_tree_1): Add appropriate initialization status
6448         to loc descriptor function calls.
6449         (add_location_or_const_value_attribute): Get initialization status
6450         from VAR_LOCATION note; add initialization status to loc descriptor
6451         function calls.
6452         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
6453         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
6454         status is uninitialized, add "[uninint]" to output.
6455         * common.opt (fvar-tracking-uninit): New option, similar to
6456         fvar-tracking, to turn on tracking of uninitialized variables; creates
6457         a new global flag, flag_var_tracking_uninit.
6458         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
6459         (enum var_init_status): New type, for var initialization status field.
6460         * var-tracking.c (struct location_chain_def): Two new fields, init,
6461         for initialization status, and set_src for the assignment value expr.
6462         (unshare_variable): New parameter for initialization status;
6463         initialize new init and set_src fields.
6464         (var_reg_set): New parameters for initialization status and value;
6465         pass them to set_variable_part.
6466         (var_mem_set): Likewise.
6467         (get_init_value): New function.
6468         (var_reg_delete_and_set): New initialization status & value
6469         parameters; add call to get_init_value if status is unknown; pass new
6470         parameters to clobber_variable_part and var_reg_set.
6471         (var_mem_delete_and_set): Likewise.
6472         (var_reg_delete): Pass null set_src value to clobber_variable_part.
6473         (var_mem_delete): Likewise.
6474         (variable_union): Pass status to unshare_variable; initialize new init
6475         and set_src fields. If flag_var_tracking_uninit is not set, force
6476         status to initialized.
6477         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
6478         used later to get the set_src value.
6479         (find_src_status): New function.
6480         (find_src_set_src): New function.
6481         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
6482         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
6483         MO_SET, get set_src value and pass it to var_reg_delete_and_set
6484         and var_mem_delete_and_set.
6485         (dump_variable): Print out "[uninit]" if appropriate.
6486         (set_variable_part): Add new initialization and set_src parameters;
6487         pass status to unshare_variable; set node->init and node- >set_src
6488         fields and modify slot in hash table appropriately; save the init and
6489         set_src values if appropriate and assign to the new node.
6490         (clobber_variable_part): New set_src parameter; if two nodes have
6491         same variable and same location but different set_src (assignment)
6492         values, clobber old node.
6493         (delete_variable_part): Pass init status to unshare_variable.
6494         (emit_note_insn_var_location): Add initialized var; assign var's init
6495         status to new 'initialized'; pass new init status field to calls to
6496         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
6497         status to initialized.
6498         (emit_notes_in_bb): Pass initialization status to calls to
6499         var_reg_set, var_mem_set, var_reg_delete_and_set and
6500         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
6501         var_reg_delete_and_set and var_mem_delete_and_set; call
6502         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
6503         make up for change in add_stores.
6504         (vt_add_function_parameters): Add status to calls to
6505         set_variable_part.
6506         * config/darwin.c (darwin_override_options): Turn on uninitialized
6507         tracking automatically, if var_tracking is on and the system is
6508         10.5 or higher.
6509         
6510 2007-07-13  Sa Liu  <saliu@de.ibm.com>
6512         * config.gcc: Add options for arch and tune on SPU.
6513         * config/spu/predicates.md: Add constant operands 0 and 1.
6514         * config/spu/spu-builtins.def: Add builtins for double precision 
6515         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
6516         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
6517         spu_testsv.
6518         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
6519         a CELLEDP target.
6520         * config/spu/spu-protos.h: Add new function prototypes. 
6521         * config/spu/spu.c (spu_override_options): Check options -march and
6522         -mtune.
6523         (spu_comp_icode): Add comparison code for DFmode and vector mode.
6524         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
6525         mode comparison.
6526         (spu_const_from_int): New.  Create a vector constant from 4 ints.
6527         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
6528         (spu_emit_vector_compare): New.  Emit vector compare.
6529         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
6530         * config/spu/spu.h: Add options -march and -mtune.  Define processor
6531         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
6532         CANONICALIZE_COMPARISON.
6533         * config/spu/spu.md: Add new insns for double precision compare
6534         and double precision vector compare.  Add vcond and smax/smin patterns
6535         to enable DFmode vector conditional expression.
6536         * config/spu/spu.opt: Add options -march and -mtune.
6537         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
6538         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
6539         both CELL and CELLEDP targets: spu_testsv.
6540         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
6541         values.
6543 2007-07-13  Richard Guenther  <rguenther@suse.de>
6545         PR tree-optimization/32721
6546         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
6547         TREE_THIS_VOLATILE on the folded reference.
6548         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
6549         if the array reference has TREE_THIS_VOLATILE set.
6551 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
6553         PR other/32188
6554         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
6556 2007-07-13  Andreas Schwab  <schwab@suse.de>
6558         * gengtype-lex.l: Allow declarations to be indented.
6560 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
6562         * ginclude/tgmath.h: New.
6563         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
6564         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
6565         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
6566         * configure: Regenerate.
6568 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
6570         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
6571         correct index when setting register save state for xd
6572         registers.
6574 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
6576         * config/sh/sh.c (mark_use): Remove.
6578 2007-07-12  Paul Brook  <paul@codesourcery.com>
6580         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
6581         reg does not overlap return value.
6583 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
6585         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
6586         (set_expression_vuses): Ditto.
6587         (init_pre): Initialize expression_vuses.
6589 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
6591         * config/i386/sse.md (storentdf, storentsf): New.
6593 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
6595         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
6596         FUNCTION_DECL.
6597         * tree.c (build_decl_stat): Move code from here...
6598         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
6599         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
6600         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
6601         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
6602         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
6603         FUNCTION_BOUNDARY.
6605 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
6606             Devang Patel  <dpatel@apple.com>
6608         PR tree-optimization/25413
6609         * targhooks.c (default_builtin_vector_alignment_reachable): New.
6610         * targhooks.h (default_builtin_vector_alignment_reachable): New.
6611         * tree.h (contains_packed_reference): New.
6612         * expr.c (contains_packed_reference): New.
6613         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
6614         (vect_enhance_data_refs_alignment): Call
6615         vector_alignment_reachable_p.
6616         * target.h (vector_alignment_reachable): New builtin.
6617         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
6618         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
6619         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
6621 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
6623         * target.h (builtin_vectorization_cost): Add new target builtin.
6624         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
6625         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
6626         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
6627         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
6628         uninitialized variables.
6629         * tree-vect-transform.c (cost_for_stmt): New function.
6630         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
6631         using cost 1 for all scalar stmts. Be less conservative when
6632         estimating the number of prologue/epulogue iterations. Call
6633         targetm.vectorize.builtin_vectorization_cost. Return
6634         min_profitable_iters-1.
6635         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
6636         initialization cost instead of TARG_VEC_STMT_COST. Use
6637         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
6638         epilogue code. Fix epilogue cost computation.
6639         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
6640         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
6641         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
6642         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
6643         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
6644         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
6646 2007-07-12  Richard Guenther  <rguenther@suse.de>
6648         * gimplify.c (gimplify_conversion): Make sure that the result
6649         from maybe_fold_offset_to_reference is trivially convertible
6650         to the desired type before doing the simplification.
6651         (gimplify_expr): Likewise.
6652         * fold-const.c (fold_binary): Use the correct types for
6653         building the simplified expression.
6655 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
6657         PR rtl-optimization/32729
6658         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
6659         that fallthru to exit.
6661 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6663         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
6664         (symDTPOFF2reg): Likewise.
6666 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
6668         PR tree-optimization/32663
6669         
6670         * tree.h (VALUE_HANDLE_VUSES): Remove.
6671         (struct tree_value_handle): Remove vuses.
6673         * tree-vn.c (create_value_handle_for_expr): Don't set
6674         VALUE_HANDLE_VUSES. 
6676         * tree-ssa-pre.c (expression_vuses): New.
6677         (alloc_expression_id): Set up expression_vuses.
6678         (get_expression_vuses): New.
6679         (set_expression_vuses): Ditto.
6680         (clear_expression_ids): Modify for expression_vuses.
6681         (phi_translate_1): Ditto.
6682         (phi_translate_set): Ditto.
6683         (value_dies_in_block_x): Ditto
6684         (valid_in_sets): Ditto.
6685         (add_to_sets): Ditto.
6686         (find_existing_value_expr): Ditto.
6687         (create_value_handle_for_expr): Ditto.
6688         (make_values_for_stmt): Ditto.
6689         (vuse_equiv): Remove.
6691 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
6693         * Makefile.in (mostlyclean): Remove object files.
6695 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
6697         * toplev.c (no_new_pseudos): Deleted.
6698         * rtl.h (no_new_pseudos): Deleted.
6699         * tree-pass.h (pass_no_new_pseudos): Deleted. 
6700         * passes.c (pass_no_new_pseudos): Deleted.
6701         * final.c (rest_of_clean_state): Removed no_new_pseudos.
6702         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
6703         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
6704         reload_completed.
6705         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
6706         * rtlhooks.c (gen_lowpart_general): Ditto.
6707         * optabs.c (prepare_operand): Ditto.
6708         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
6709         no_new_pseudos.
6710         * modulo-sched.c (rest_of_handle_sms): Ditto.
6711         * see.c (rest_of_handle_see): Ditto.
6712         * ifcvt.c (if_convert): Ditto.
6713         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
6714         reload_completed.
6715         * init-regs.c (gate_initialize_regs): Deleted set of
6716         no_new_pseudos.
6717         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
6718         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
6719         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
6720         
6721 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
6723         PR target/32661
6724         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
6725         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
6726         (*vec_extractv2di_1_rex64): New insn pattern.
6728 2007-07-11  David Daney  <ddaney@avtrex.com>
6730         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
6731         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
6732         for SIGNAL_UNWIND_RETURN_COLUMN.
6733         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
6734         (DWARF_FRAME_REGNUM): Rewrite.
6735         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
6737 2007-07-11  Nick Clifton  <nickc@redhat.com>
6739         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
6740         delta and use gen_int_mode in place of GET_INT instead.
6742 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
6744         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
6745         and letter field.
6747 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
6749         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
6750         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
6751         types or not.
6752         * params.h (VERIFY_CANONICAL_TYPES): Remove.
6753         (USE_CANONICAL_TYPES): New.
6754         * doc/invoke.texi (verify-canonical-types): Remove.
6755         (use-canonical-types): Add.
6757 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
6759         * config/spu/spu.c (spu_optimization_options): Remove setting of
6760         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
6761         (spu_override_options): Move it here.
6763 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
6765         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
6766         * config/mips/mips.c (mips_cpu_info_table): Mention
6767         MIPS_ISA_LEVEL_SPEC in the comment.
6769 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
6771         PR tree-optimization/32713
6772         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
6774 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
6776         PR middle-end/30482
6777         * c-opts.c (c_common_post_options): Do not change flag_complex_method
6778         conditional to flag_isoc99.
6779         (c_common_init_options): Do it here, unconditionally.
6781 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
6783         PR tree-optimization/32589
6784         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
6785         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
6786         * tree-ssa-propagate.c (valid_gimple_expression_p): New
6787         predicate, extracted from...
6788         (set_rhs): ...here.  Call it for the expression on entry.
6789         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
6790         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
6791         (simplify_binary_expression): Use valid_gimple_expression_p
6792         to validate the simplification.
6793         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
6795 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
6797         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
6798         DWARF2_DEBUG on 32 bit target too.
6799         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
6801 2007-07-11  Nick Clifton  <nickc@redhat.com>
6803         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
6804         version for 64-bit hosts.
6806 2007-07-10  David Daney  <ddaney@avtrex.com>
6808         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
6809         predicate.
6810         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
6811         call.
6812         * config/mips/mips.c (mips_expand_synci_loop): New function.
6813         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
6814         (UNSPEC_RDHWR): Same.
6815         (UNSPEC_SYNCI): Same.
6816         (UNSPEC_SYNC): Same.
6817         (clear_cache): New expand.
6818         (sync): New insn.
6819         (synci): Same.
6820         (rdhwr): Same.
6821         (clear_hazard): Same.
6822         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
6823         function.
6824         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
6825         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
6827 2007-07-10  Ian Lance Taylor  <iant@google.com>
6829         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
6830         no_new_pseudos.
6832 2007-07-10  David Daney  <ddaney@avtrex.com>
6834         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
6835         * builtins.c (expand_builtin___clear_cache): New function.
6836         (expand_builtin): Call expand_builtin___clear_cache for
6837         BUILT_IN_CLEAR_CACHE case.
6838         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
6839         * doc/md.texi (clear_cache): Document new instruction pattern.
6840         * testsuite/gcc.dg/builtins-64.c: New test.
6842 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
6844         * config/cris/cris.md ("movsi"): Fix typo in last change.
6846 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
6848         PR 32617
6849         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
6850         FUNCTION_DECLs.
6851         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
6852         * varasm.c (assemble_start_function): Honor DECL_ALIGN
6853         for FUNCTION_DECLs.  Don't use align_functions_log if
6854         DECL_USER_ALIGN.
6855         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
6856         even for FUNCTION_DECLs.
6857         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
6858         FUNCTION_DECLs.
6859         * tree.h (DECL_ALIGN): Update for new location of 'align'.
6860         (DECL_FUNCTION_CODE): Update for new location and name of
6861         'function_code'.
6862         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
6863         (struct tree_decl_common): Move 'align' and 'off_align' out
6864         of union, ensure they're still on a 32-bit boundary.  Remove
6865         other fields in union 'u1'.
6866         (struct tree_function_decl): Add field 'function_code' replacing
6867         'u1.f' in tree_decl_common.
6868         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
6869         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
6870         (Variable Attributes): Cross-reference 'aligned' attribute
6871         to Function Attributes.
6872         * flags.h (force_align_functions_log): Delete.
6873         * toplev.c (force_align_functions_log): Delete.
6875 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
6877         PR target/32708
6878         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
6879         (*vec_concatv2di_rex): New insn pattern.
6881 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6883         PR target/32538
6884         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
6886 2007-07-10  Ian Lance Taylor  <iant@google.com>
6888         Replace no_new_pseudos in backends.
6889         * rtl.h (can_create_pseudo_p): Define.
6890         * config/darwin.c (machopic_indirect_data_reference): Use
6891         can_create_pseudo_p () instead of no_new_pseudos.
6892         (machopic_indirect_data_reference): Likewise.
6893         (machopic_legitimize_pic_address): Likewise.
6894         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
6895         (alpha_emit_set_const_1): Likewise.
6896         (alpha_emit_set_const): Likewise.
6897         (alpha_emit_conditional_move): Likewise.
6898         (alpha_split_conditional_move): Likewise.
6899         * config/alpha/alpha.md (various splitters): Likewise.
6900         (movti): Likewise.
6901         * config/arm/arm.c (legitimize_pic_address): Likewise.
6902         (arm_load_pic_register): Likewise.
6903         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
6904         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
6905         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
6906         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
6907         * config/cris/cris.md (movsi): Likewise.
6908         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
6909         (symGOTOFF2reg_hilo): Likewise.
6910         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
6911         * config/h8300/h8300.md (insv, extzv): Likewise.
6912         * config/i386/i386.c (ix86_expand_move): Likewise.
6913         (ix86_expand_vector_move): Likewise.
6914         (ix86_prepare_fp_compare_args): Likewise.
6915         (ix86_expand_carry_flag_compare): Likewise.
6916         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
6917         (tls_dynamic_gnu2_combine_32): Likewise.
6918         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
6919         * config/ia64/ia64.c (ia64_expand_move): Likewise.
6920         (ia64_expand_movxf_movrf): Likewise.
6921         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
6922         (m32c_split_move): Likewise.
6923         (m32c_expand_insv): Likewise.
6924         * config/m68k/m68k.md (movsi): Likewise.
6925         * config/mips/mips.c (mips_force_temporary): Likewise.
6926         (mips_split_symbol): Likewise.
6927         (mips_move_integer): Likewise.
6928         (mips_legitimize_const_move): Likewise.
6929         * config/mn10300/mn10300.md (movsi): Likewise.
6930         * config/pa/pa.c (emit_move_sequence): Likewise.
6931         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
6932         (rs6000_got_register): Likewise.
6933         (create_TOC_reference): Likewise.
6934         (rs6000_machopic_legitimize_pic_address): Likewise.
6935         * config/rs6000/rs6000.md (add<mode>3): Likewise.
6936         (various splitters): Likewise.
6937         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
6938         (movsi_got): Likewise.
6939         * config/s390/s390.c (emit_symbolic_move): Likewise.
6940         * config/s390/s390.md (movhi, movqi): Likewise.
6941         (load_multiple, store_multiple): Likewise.
6942         * config/score/score.c (score_force_temporary): Likewise.
6943         * config/sh/sh.c (prepare_move_operands): Likewise.
6944         (prepare_cbranch_operands): Likewise.
6945         (emit_fpu_switch): Likewise.
6946         (fpscr_set_from_mem): Likewise.
6947         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
6948         (adddi3, subsi3): Likewise.
6949         (various splitters): Likewise.
6950         (divsi_inv_fp_combine): Likewise.
6951         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
6952         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
6953         (sne): Likewise.
6954         * config/sh/predicates.md (xor_operand): Likewise.
6955         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
6956         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
6957         (movdi_pic_label_ref): Likewise.
6958         * config/spu/spu.c (spu_split_immediate): Likewise.
6959         * config/alpha/alpha.md (various splitters): Remove test
6960         !no_new_pseudos || reload_completed.
6961         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
6962         no_new_pseudos.
6963         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
6964         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
6965         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
6966         * config/score/score.c (th_output_mi_thunk): Likewise.
6967         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
6968         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
6970 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6972         PR rtl-optimization/32664
6973         * mode-switching.c (create_pre_exit): Skip barrier insns.
6975 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
6977         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
6978         force_gimple_operand_bsi.
6979         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
6980         rewrite_use_compare): Ditto.
6981         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
6982         Ditto.
6983         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
6984         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
6985         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
6986         * tree-profile.c (prepare_instrumented_value,
6987         tree_gen_interval_profiler, tree_gen_pow2_profiler,
6988         tree_gen_one_value_profiler, tree_gen_ic_profiler,
6989         tree_gen_ic_func_profiler, tree_gen_average_profiler,
6990         tree_gen_ior_profiler): Ditto.
6991         * tree-ssa-reassoc.c (negate_value): Ditto.
6992         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
6993         Use force_gimple_operand_bsi.
6994         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
6995         * tree-if-conv.c (add_to_dst_predicate_list,
6996         find_phi_replacement_condition): Ditto.
6997         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
6998         Call mark_symbols_for_renaming for new statements.
6999         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
7001 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
7003         * cfghooks.c (remove_edge): New function.
7004         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
7005         loop exit rescans.
7006         * cfghooks.h (remove_edge): Declare.
7007         * cfg.c (remove_edge): Renamed to remove_edge_raw.
7008         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
7010 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
7012         * optabs.h: Added declaration for signbit_optab.  
7013         * optabs.c: (init_optabs): Added initialization for signbit_optab.
7014         * genoptinit.c (optabs): Added entry for signbit insns.  
7015         * builtins.c (expand_builtin_signbit): Added code to use a signbit
7016         insn, if available.  
7017         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
7018         * config/s390/s390.md (signbit<mode>2): New expander.  
7020 2007-07-09  Richard Guenther  <rguenther@suse.de>
7022         PR middle-end/32698
7023         * fold-const.c (fold_plusminus_mult_expr): Move constant
7024         arguments second to allow decomposing.
7026 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
7028         Revert:
7029         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
7030         PR debug/23551
7031         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
7032         Disregard DECL_FROM_INLINE.
7034 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
7036         PR target/27855
7037         * doc/invoke.texi: Add ftree-reassoc flag.
7038         * common.opt (ftree-reassoc): New flag.
7039         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
7040         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
7042 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
7044         PR tree-optimization/32681
7045         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
7046         saved in second_edge->aux when first_bb is a loop header.
7048 2007-07-09  Jan HUbicka  <jh@suse.cz>
7050         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
7052 2007-07-09  Richard Guenther  <rguenther@suse.de>
7054         * c-decl.c (start_function): Do not promote return type.
7056 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
7058         * function.c (do_warn_unused_parameter): Do not warn if
7059         TREE_NO_WARNING is set.
7061 2007-07-08  Andreas Schwab  <schwab@suse.de>
7063         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
7065 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
7067         Revert this patch:
7068         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
7070         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
7071         apply to assembly language, too.
7072         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
7074 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
7076         Revert (note the sccvn portions are *not* reverted)
7077         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
7079         Fix PR tree-optimization/23488
7081         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
7082         handles.
7083         * tree-flow-inline.h (get_value_handle): Ditto.
7084         * tree-ssa-pre.c (decl_vh_map): New.
7085         (decl_node_pool): New.
7086         (can_value_number_operation): Support DECL_P.
7087         (can_PRE_operation): Ditto.
7088         (create_expression_by_pieces): Ditto.
7089         (find_existing_value_expr): Modify to differnetiate between
7090         addressing and top level.
7091         (create_value_handle_for_expr): Handle DECL's.
7092         (poolify_tree): Ditto.
7093         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
7094         (make_values_for_stmt): Handle DECL's properly.
7095         (init_pre): Reorg to not init useless things during FRE.
7096         (fini_pre): Ditto.
7097         * tree-flow.h: Include pointer-set.h.
7098         (decl_vh_map): Declare.
7099         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
7101 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
7103         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
7104         the constraint description.
7105         * doc/md.texi: Update documentation of AVR constraints.
7107 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
7109         * auto-inc-dec.c, config/arm/arm.c,
7110         config/m32r/constraints.md, config/mips/mips.md,
7111         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
7112         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
7113         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
7114         typos.  Follow spelling conventions.
7115         * doc/invoke.texi, doc/rtl.texi: Fix typos.
7117         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
7118         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
7120         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
7121         realloc_vuse): Remove.
7122         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
7123         and realloc_vuse.
7125 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
7127         Fix PR tree-optimization/23488
7129         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
7130         (try_to_simplify): Ditto.
7131         (visit_use): Ditto.
7132         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
7133         handles.
7134         * tree-flow-inline.h (get_value_handle): Ditto.
7135         * tree-ssa-pre.c (decl_vh_map): New.
7136         (decl_node_pool): New.
7137         (can_value_number_operation): Support DECL_P.
7138         (can_PRE_operation): Ditto.
7139         (create_expression_by_pieces): Ditto.
7140         (find_existing_value_expr): Modify to differnetiate between
7141         addressing and top level.
7142         (create_value_handle_for_expr): Handle DECL's.
7143         (poolify_tree): Ditto.
7144         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
7145         (make_values_for_stmt): Handle DECL's properly.
7146         (init_pre): Reorg to not init useless things during FRE.
7147         (fini_pre): Ditto.
7148         * tree-flow.h: Include pointer-set.h.
7149         (decl_vh_map): Declare.
7150         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
7151                 
7152 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
7154         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
7155         apply to assembly language, too.
7156         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
7158 2007-07-06  Ian Lance Taylor  <iant@google.com>
7159             Zack Weinberg  <zackw@panix.com>
7161         PR middle-end/32441
7162         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
7164 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
7166         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
7167         (prefetch): Likewise if "pref" would be used.
7169 2007-07-06  Josh Conner  <jconner@apple.com>
7171         PR middle-end/32602
7172         PR middle-end/32603
7173         * calls.c (store_one_arg): Handle arguments which are partially
7174         on the stack when detecting argument overlap.
7176 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
7178         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
7179         chosen during find_reloads.
7181 2007-07-06  Richard Guenther  <rguenther@suse.de>
7183         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
7184         TYPE_ARG_TYPES for verification of argument types.  Use
7185         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
7186         parameters as variable arguments.
7188 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
7190         * libgcc2.h (word_type): Type definition removed.
7191         (cmp_return_type, shift_count_type): Type definitions added.
7192         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
7193         replaced with shift_count_type.
7194         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
7195         cmp_return_type.
7196         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
7197         changed from word_type to Wtype.
7198         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
7199         replaced with shift_count_type.
7200         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
7201         cmp_return_type.
7202         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
7203         and libgcc_shift_count attribute added.
7204         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
7205         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
7206         (TARGET_INITIALIZER): New target hooks added.
7207         * targhooks.c (default_libgcc_cmp_return_mode,
7208         default_libgcc_shift_count_mode): Default implementations for the new
7209         target hooks added.
7210         * targhooks.h (default_libgcc_cmp_return_mode,
7211         default_libgcc_shift_count_mode): Function prototypes added.
7212         * target.h (struct gcc_target): Fields for the new target hooks added.
7213         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
7214         as library call.
7215         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
7216         library call.
7218         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
7219         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
7221         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
7222         s390_libgcc_shift_count_mode): Functions added.
7223         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
7224         Target hooks defined.
7226 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
7228         * config/mips/mips.c (compute_frame_size): Restore the original
7229         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
7230         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
7231         Document why the difference is needed.
7233 2007-07-06  Richard Guenther  <rguenther@suse.de>
7235         * c-common.c (boolean_increment): Use correctly typed
7236         constant.
7238 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
7240         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
7241         the topmost argument register is not also included in the save mask.
7242         (mips16e_collect_argument_save_p): Take a pointer to the argument
7243         register, rather than a pointer to the number of arguments.
7244         (mips16e_collect_argument_saves): Only include argument saves
7245         that aren't in the register mask.
7247 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
7249         PR rtl-optimization/32450
7250         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
7251         to ensure that instructions are not moved into the prologue when
7252         profiling is on.  Remove unused prologue_end variable.
7253         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
7254         as a scheduling barrier.
7256 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
7258         PR debug/23551
7259         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
7260         Disregard DECL_FROM_INLINE.
7262 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
7264         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
7265         IORing with a constant.
7267 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
7269         PR rtl-optimization/32475
7270         * df-scan.c (df_def_record_1): Add a use of the stack pointer
7271         for every definition of the stack pointer.
7273 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
7275         * arm.c (vfp3_const_double_index): Copy signed results of
7276         REAL_VALUE_TO_INT into unsigned vars.
7278 2007-07-05  Richard Guenther  <rguenther@suse.de>
7280         PR middle-end/32639
7281         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
7282         FUNCTION_TYPE.
7283         * tree-ssa.c (useless_type_conversion_p): Check canonical
7284         types early.
7286 2007-07-05 Anatoly Sokolov <aesok@post.ru>
7288         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
7289         zero_extendhisi2): Change to define_insn_and_split. 
7290         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
7292 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
7294         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
7295         pass_match_asm_constraints): New.
7296         * passes.c (init_optimization_passes): Add new pass.
7297         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
7298         * function.h (struct function): Add has_asm_statement bit.
7299         (current_function_has_asm_statement): New.
7300         * tree-pass.h (pass_match_asm_constraints): New.
7302 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
7304         * config/mips/mips.c (mips_file_start): Avoid declaration
7305         after code.
7307 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
7309         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
7311 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
7313         * rtl.def (NOTE): Change print format string to print
7314         operand 5 as a note insn name.
7316 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
7317             David Ung  <davidu@mips.com>
7319         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
7320         * doc/invoke.texi: (MIPS Options): Document them.
7322 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
7323             David Ung  <davidu@mips.com>
7325         Add support for SmartMIPS ASE.
7327         * optabs.c (expand_binop_directly): New, broken out from...
7328         (expand_binop): Here.  Make it try rotating in the other
7329         direction even when the second operand isn't constant.
7330         * config/mips/mips.md (*lwxs): New.
7331         * config/mips/mips.opt (msmartmips): New.
7332         * config/mips/mips.c (mips_lwxs_address_p): New.
7333         (mips_rtx_costs): Make it recognize scaled indexed addressing.
7334         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
7335         __mips_smartmips when compiling for TARGET_SMARTMIPS.
7336         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
7337         (ISA_HAS_LWXS): New.
7338         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
7339         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
7340         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
7341         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
7342         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
7343         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
7344         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
7346 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
7348         * tree-vectorizer.c (new_loop_vec_info): Initialize
7349         LOOP_VINFO_COST_MODEL_MIN_ITERS.
7350         * tree-vectorizer.h (_loop_vec_info): Added new filed
7351         min_profitable_iters.
7352         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
7353         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
7354         * tree-vect-analyze.c (vect_analyze_operations): Set
7355         LOOP_VINFO_COST_MODEL_MIN_ITERS.
7356         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
7357         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
7358         Fix calculation of peel_iters_prologue. Move consideration of epilogue
7359         and prologue cost to after they are computed.
7360         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
7361         TARG_VEC_STMT_COST.
7362         (vect_model_simple_cost): Takes additional argument dt. Consider cost
7363         of creating vectors from scalars according to dt.
7364         (vect_model_store_cost): Likewise.
7365         (vectorizable_call): Use dt array instead of scalar dt. Call
7366         vect_model_simple_cost with additional argument dt.
7367         (vectorizable_assignment): Likewise.
7368         (vectorizable_operation): Likewise.
7369         (vectorizable_type_demotion): Likewise.
7370         (vectorizable_type_promotion): Likewise.
7371         (vectorizable_store): Use dt array instead of scalar dt. Call
7372         vect_model_store_cost with additional argument dt.
7373         (vect_do_peeling_for_loop_bound): Don't call
7374         vect_estimate_min_profitable_iters. Instead, lookup
7375         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
7376         "may not be profitable".
7378 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
7380         PR testsuite/32014
7381         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
7382         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
7383         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
7384         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
7386 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
7388         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
7389         addressing modes cheaper.
7391 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
7393         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
7394         (dw_ranges_struct): Rename block_num to num.  Adjust.
7395         (dw_ranges_by_label_struct): New.
7396         (ranges_by_label, ranges_by_label_allocated,
7397         ranges_by_label_in_use): New variables.
7398         (add_ranges_num): Factored most of the code out of...
7399         (add_ranges): ... this one.  Rewrite in terms of the former.
7400         (add_ranges_by_labels): New.
7401         (output_ranges): Output by-label ranges.
7402         (dwarf2out_finish): Output range for multiple-section
7403         compile_unit.  Output standard DW_AT_low_pc in addition to
7404         unexpected DW_AT_entry_pc.
7406 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
7408         PR tree-optimization/32604
7409         PR tree-optimization/32606
7411         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
7412         (compute_antic_safe): Removed.
7413         (ANTIC_SAFE_LOADS): Ditto.
7414         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
7415         (execute_pre): Don't call compute_antic_safe.
7416         (vuse_equiv): New function.
7417         (make_values_for_stmt): Use it
7418         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
7419         not always true.
7421 2007-07-04 Anatoly Sokolov <aesok@post.ru>
7423         PR target/31331
7424         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
7425         rather than a decl. 
7426         (avr_attribute_table): Make "naked" attribute apply to function types
7427         rather than to decls.
7428         (avr_handle_fntype_attribute): New function.
7430 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
7432         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
7433         after \.
7435 2007-07-04  David Ung  <davidu@mips.com>
7436             Joseph Myers  <joseph@codesourcery.com>
7438         * config/mips/mips.md (type): Add logical, signext and move.
7439         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
7440         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
7441         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
7442         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
7443         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
7444         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
7445         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
7446         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
7447         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
7448         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
7449         movv2sf_hardfloat_64bit): Use the new types.
7450         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
7451         *movdf_softfloat, *movdf_mips16): Use "multi".
7452         (extendqihi2): Replace with a define_expand.
7453         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
7454         Based on extend<SHORT:mode><GPR:mode>2 patterns.
7455         * config/mips/74k.md (r74k_int_logical): New reservation and
7456         bypasses.
7457         (r74k_int_arith): Remove "slt".
7458         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
7459         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
7460         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
7461         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
7462         reservations for "arith".
7464 2007-07-04  Richard Guenther  <rguenther@suse.de>
7466         * tree-ssa.c (useless_type_conversion_p): Add handling for
7467         scalar float and vector types.  Only call the types_compatible_p
7468         langhook for aggregate types as last resort.  Follow the
7469         rules.
7471 2007-07-04  Richard Guenther  <rguenther@suse.de>
7473         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
7474         the same as NOP_EXPR.
7476 2007-07-04  Nick Clifton  <nickc@redhat.com>
7478         * target.h (struct gcc_target): Add target_help field.
7479         * target-def.h (TARGET_HELP): New.
7480         (TARGET_INITIALIZER): Use TARGET_HELP.
7481         * opts.c (command_handle_option): Invoke target_help function, if
7482         defined, when the user has specified --target-help on the command
7483         line.
7484         * doc/invoke.texi: Mention that --target-help might print
7485         additional information.
7486         * doc/tm.texi: Document TARGET_HELP hook.
7488         * arm.c (TARGET_HELP): Override default definition.
7489         (arm_target_help): New - display a wrapped list of cores and
7490         architectures supported.
7492 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7494         * config/v850/v850.c (expand_prologue): Make sure
7495         GEN_INT() argument is sign extended rather than zero extended.
7496         (expand_epilogue): Likewise.
7497         (output_move_double): Delete.
7498         * config/v850/v850-protos.h (output_move_double): Delete.
7499         * config/v850/v850.md (movdi): Delete.
7500         (*movdi_internal): Delete.
7501         (movdf): Delete.
7502         (*movdf_internal): Delete.
7504 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7506         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
7507         unless compiling RTP PIC.
7509 2007-07-04  Richard Guenther  <rguenther@suse.de>
7511         PR tree-optimization/32482
7512         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
7513         original ssa name if we didn't find a shift expression.
7514         Fix shift constant for bit zero test.
7516 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7518         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
7520 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7522         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
7523         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
7524         * config/arm/vxworks.h (ASM_SPEC): Delete.
7525         (SUBTARGET_EXTRA_ASM_SPEC): Define.
7527 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
7529         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
7530         (DDR_REVERSED_P): New.
7531         * tree-data-ref.c (initialize_data_dependence_relation,
7532         build_classic_dist_vector): Set DDR_REVERSED_P.
7534 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
7536         PR middle-end/32457
7537         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
7538         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
7539         init_omega_for_ddr_1): Use non conservative number of iterations
7540         estimations.
7541         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
7542         (analyze_siv_subscript): Remove FIXME and reinitialization of 
7543         last_conflicts to chrec_dont_know.
7544         * testsuite/gfortran.dg/vect/pr32457.f90: New.
7546 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
7548         * tree.c (maybe_canonicalize_argtypes): Improve description.
7550 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
7552         * tree.c (maybe_canonicalize_argtypes): New.
7553         (build_function_type): Set canonical type.
7554         (build_method_type_directly): Ditto.
7555         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
7556         properly.
7558 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7560         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
7561         like PLUS_EXPR.
7562         (rewrite_use_nonlinear_expr): Likewise.
7564 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
7566         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
7568 2007-07-04  Ben Elliston  <bje@au.ibm.com>
7570         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
7571         of this file.
7573         * c-objc-common.c (c_types_compatible_p): Fix indentation.
7575         * doc/tm.texi (Run-time Target): Capitalise "CPU".
7576         (Exception Handling): Likewise.
7578 2007-07-03  Jan Hubicka  <jh@suse.cz>
7580         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
7582 2007-07-03  Eric Christopher  <echristo@apple.com>
7584         * doc/cppopts.texi: Add conflicting option note to -dM.
7585         * doc/invoke.texi: Add note about possible conflicts with
7586         -E for -dCHARS and note that -dM will not produce
7587         any results if there is no machine dependent reorg.
7588         
7589 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
7591         * tree.h (DECL_ALIGN): Back out previous change.
7593 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
7595         * configure.ac: Test for .dtprelword support on MIPS.
7596         * configure, config.in: Regenerate.
7597         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
7598         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
7600 2007-07-03  Julian Brown  <julian@codesourcery.com>
7602         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
7603         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
7604         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
7605         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
7606         capability.
7607         (all_fpus): Add FPUTYPE_VFP3.
7608         (fp_model_for_fpu): Add VFPv3 field.
7609         (arm_rtx_costs_1): Give cost to VFPv3 constants.
7610         (vfp3_const_double_index): New function. Return integer index of
7611         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
7612         isn't suitable.
7613         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
7614         and argument represents a valid RTX for a VFPv3 constant.
7615         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
7616         two instructions.
7617         (vfp_emit_fstmd): Similar, for fstmd.
7618         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
7619         constants, represented as integer indices.
7620         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
7621         VFP_REGNO_OK_FOR_DOUBLE macros.
7622         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
7623         (arm_file_start): Set float-abi attribute for VFPv3, and output
7624         correct ".fpu" assembler directive.
7625         (arm_dbx_register_numbering): Add FIXME.
7626         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
7627         (fputype): Add FPUTYPE_VFP3.
7628         (FIXED_REGISTERS): Add 32 registers for D16-D31.
7629         (CALL_USED_REGISTERS): Likewise.
7630         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
7631         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
7632         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
7633         (D7_VFP_REGNUM): New.
7634         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
7635         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
7636         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
7637         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
7638         (REG_ALLOC_ORDER): Adjust for VFPv3.
7639         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
7640         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
7641         VFP_LO_REGS, VFP_HI_REGS.
7642         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
7643         (IS_VFP_CLASS): Define macro.
7644         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
7645         IS_VFP_CLASS.
7646         (REGISTER_MOVE_COST): Likewise.
7647         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
7648         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
7649         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
7650         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
7651         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
7652         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
7653         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
7654         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
7655         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
7656         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
7657         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
7658         where appropriate for single-word registers.
7659         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
7660         As above. Fix type attributes.
7661         * config/arm/constraints.md (register_contraint "t"): Define.
7662         (register_constraint "w"): Change to D0-D15, or D0-D31 for
7663         VFPv3/NEON.
7664         (register_constraint "x"): Define.
7665         (constraint "Dv"): Define.
7667 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
7669         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
7671 2007-07-03  Tom Tromey  <tromey@redhat.com>
7673         * c-parser.c (objc_pq_context): Removed.
7674         (objc_need_raw_identifier): Likewise.
7675         (c_parser) <objc_pq_context>: New field.
7676         <objc_need_raw_identifier>: Likewise.
7677         (OBJC_NEED_RAW_IDENTIFIER): Removed.
7678         (c_lex_one_token): Update.
7679         (c_parser_objc_protocol_definition): Update.
7680         (c_parser_objc_method_definition): Update.
7681         (c_parser_objc_methodproto): Update.
7682         (c_parser_declspecs): Update.
7684 2007-07-03  David Ung  <davidu@mips.com>
7686         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
7688 2007-07-03  David Ung  <davidu@mips.com>
7689             Richard Sandiford  <richard@codesourcery.com>
7691         * doc/invoke.texi: Document -march=74kf3_2.
7692         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
7693         (TUNE_74K): Check for it.
7694         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
7695         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
7696         * config/mips/mips.md (cpu): Add 74kf3_2.
7697         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
7698         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
7699         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
7700         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
7701         74kf3_2 to the CPU list.
7702         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
7703         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
7704         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
7705         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
7706         (r74kf3_2_fxfer_from_c1): New insn reservations.
7708 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
7709             David Ung  <davidu@mips.com>
7711         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
7712         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
7713         and 74k[fx].  Document aliases for the new options.
7714         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
7715         (PROCESSOR_24KF2_1): ...this.
7716         (PROCESSOR_24KX): Rename to...
7717         (PROCESSOR_24KF1_1): ...this.
7718         (PROCESSOR_74KF): Rename to...
7719         (PROCESSOR_74KF2_1): ...this.
7720         (PROCESSOR_74KX): Rename to...
7721         (PROCESSOR_74KF1_1): ...this.
7722         (TUNE_74K): Update PROCESSOR_* names.
7723         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
7724         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
7725         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
7726         (mips_rtx_cost_data): Update processor names in comments.
7727         (mips_issue_rate): Update PROCESSOR_* names.
7728         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
7729         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
7730         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
7731         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
7732         Update cpu attribute names.
7733         (r24k_fpu_iss): Rename this reservation to...
7734         (r24kf2_1_fpu_iss): ...this and update all uses.
7735         (r24kx_fpu_iss): Rename this reservation to...
7736         (r24kf1_1_fpu_iss): ...this and update all uses.
7737         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
7738         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
7739         Update cpu attribute names.
7741 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
7743         * config/m32r/constraints.md: New file.
7744         * config/m32r/m32r.c: Include tm-constrs.h.
7745         (small_data_operand): Use satisfies_constraint_* instead of macro.
7746         (addr24_operand, gen_compare): Likewise.
7747         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
7748         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
7749         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
7750         EXTRA_CONSTRAINT): Likewise.
7751         * config/m32r/m32r.md: Include constraints.md.
7752         (*movsi_insn): Use satisfies_constraint_* instead of macro.
7753         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
7754         * config/m32r/predicates.md (conditional_move_operand): Likewise.
7755         (two_insn_const_operand, int8_operand, uint16_operand,
7756         reg_or_int16_operand, reg_or_uint16_operand,
7757         reg_or_cmp_int16_operand, cmp_int16_operand,
7758         seth_add3_operand): Likewise.
7760 2007-07-03  Eric Christopher  <echristo@gmail.com>
7762         * libgcc2.h: Conditionally declare __bswapsi2 and
7763         __bswapdi2.
7764         
7765 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
7767         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
7768         defined.
7770 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7772         PR target/28307
7773         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
7774         (__gthrw_pragma): Provide default definition.
7775         (__gthrw2): Use it.
7776         * gthr-posix.c (__gthrw_pragma): Define.
7778 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
7780         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
7781         before declaring inequality.
7783 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7785         * combine.c (recog_for_combine): Log the success or failure of
7786           matching new insn patterns against the machine description in
7787           detailed dumps.
7789 2007-07-03  Revital Eres  <eres@il.ibm.com>
7791         * ddg.c (print_sccs): New function.
7792         (check_sccs): New function.
7793         (create_ddg_all_sccs): Use it.
7794         * ddg.h (print_sccs): Declare.
7795         * modulo-sched.c (sms_order_nodes): Call print_sccs.
7797 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
7799         * targhooks.h (default_mode_for_suffix): New function declaration.
7800         * targhooks.c (default_mode_for_suffix): New default target hook.
7801         * target.h (struct c): New structure in the targetm struct.
7802         (mode_for_suffix): New target hook as part of struct c.
7803         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
7804         default_mode_for_suffix.
7805         (TARGET_C): New define.
7806         * c-lex.c: Include "target.h".
7807         (interpret_float): Use targetm.c.mode_for_suffix to determine
7808         the mode for a given non-standard suffix.
7809         Makefile.in (c-lex.o): Depend on $(TARGET_H).
7811         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
7812         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
7814         * doc/extend.texi (Floating Types): New node.  Document __float80 and
7815         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
7817 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
7819         PR target/32506
7820         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
7821         predicate instead of target_operand.
7822         (divsi3_i1_media, divsi3_media_2): Likewise.
7824 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
7826         * tree.h (alias_sets_might_conflict_p): Rename into
7827         alias_sets_must_conflict_p.
7828         * alias.c (alias_sets_might_conflict_p): Likewise.
7829         (alias_sets_conflict_p): Use it.
7830         (objects_must_conflict_p): Likewise.
7831         * c-common.c (strict_aliasing_warning): Adjust.
7833 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7835         * rtlhooks.c (gen_lowpart_if_possible): Check for
7836         invalid subreg before calling gen_lowpart_SUBREG.
7838 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
7840         * config/darwin9.h: Add copyright notice.
7841         (LINK_COMMAND_SPEC): Add comment.
7842         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
7843         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
7844         DARWIN_LIBSYSTEM_HAS_UNWIND.
7846 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
7848         PR libgomp/32468
7849         * omp-low.c (check_combined_parallel): New function.
7850         (lower_omp_parallel): Call it via walk_stmts, set
7851         OMP_PARALLEL_COMBINED if appropriate.
7852         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
7853         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
7854         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
7855         don't consider it as combined parallel.
7857 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
7859         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
7860         (gcc_tooldir): Likewise.
7861         * configure: Regenerate.
7862         * Makefile.in (libsubdir_to_prefix): New variable, based on the
7863         old configure.ac gcc_tooldir setting.
7864         (prefix_to_exec_prefix): New variable.
7865         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
7866         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
7868 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
7870         Fix PR tree-optimization/32583
7871         Fix PR tree-optimization/32584
7872         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
7873         (phi_translate_set): Use phi_translate directly now.
7874         (make_values_for_stmt): Don't value number RHS if we already know
7875         it is constant.
7877 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
7878             Jim Wilson <wilson@specifix.com>
7880         PR target/31684
7881         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
7882         copy_insn.
7884 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
7885             Richard Sandiford  <richard@codesourcery.com>
7886             Nigel Stephens  <nigel@mips.com>
7888         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
7889         (mips16e_output_save_restore): Declare.
7890         (mips16e_save_restore_pattern_p): Likewise.
7891         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
7892         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
7893         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
7894         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
7895         (BITSET_P): New global macro, extracted from...
7896         (mips_for_each_saved_reg): ...here.
7897         (mips16e_save_restore_info): New struct.
7898         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
7899         (mips16e_save_restore_regs): New variable.
7900         (mips_split_plus, mips16e_find_first_register): New functions.
7901         (mips16e_mask_registers): New function.
7902         (compute_frame_size): Expand the commentary before the function.
7903         Enforce the MIPS16e save and restore register range restrictions.
7904         Pad the general register save area at the low end.
7905         (mips16e_save_restore_reg, mips16e_build_save_restore)
7906         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
7907         (mips16e_output_save_restore, mips16e_collect_propagate_value)
7908         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
7909         New functions.
7910         (mips_expand_prologue, mips_expand_epilogue): Handle
7911         GENERATE_MIPS16E_SAVE_RESTORE.
7912         * config/mips/mips.md (*mips16e_save_restore): New pattern.
7914 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
7916         PR tree-optimization/31966
7917         PR tree-optimization/32533
7918         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
7919         "basic_block" description as its third argument.  Update function
7920         calls to get destination bb from "edge" argument.  Save "cond" into
7921         aux field of the edge.  Update prototype for changed arguments.
7922         (if_convertible_loop_p): Clear aux field of incoming edges if bb
7923         contains phi node.
7924         (find_phi_replacement_condition): Operate on incoming edges, not
7925         on predecessor blocks.  If there is a condition saved in the
7926         incoming edge aux field, AND it with incoming bb predicate.
7927         Return source bb of the first edge.
7928         (clean_predicate_lists): Clean aux field of outgoing node edges.
7929         (tree_if_conversion): Do not initialize cond variable. Move
7930         variable declaration into the loop.
7931         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
7932         initializations of new_stmt, arg0 and arg1 variables.
7934 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
7936         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
7937         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
7939 2007-07-02  Richard Guenther  <rguenther@suse.de>
7941         * tree-ssa.c (useless_type_conversion_p): Document
7942         future intent as defining the middle-end type system.
7943         Re-structure to call langhook last, group by type class,
7944         mark questionable parts.
7946 2007-07-02  Richard Guenther  <rguenther@suse.de>
7948         * tree-flow.h (types_compatible_p): Declare.
7949         * tree-ssa.c (types_compatible_p): New function.
7950         * ipa-type-escape.c (discover_unique_type): Use
7951         types_compatible_p instead of lang_hooks.types_compatible_p.
7952         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
7953         * tree-vn.c (expressions_equal_p): Likewise.
7954         * tree.c (fields_compatible_p): Likewise.
7955         * tree-ssa-dom.c (avail_expr_eq): Likewise.
7956         (cprop_operand): Use useless_type_conversion_p instead of
7957         lang_hooks.types_compatible_p.
7958         * tree-inline.c (setup_one_parameter): Likewise.
7959         (declare_return_variable): Likewise.
7960         * tree-nrv.c (tree_nrv): Likewise.
7961         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
7962         (maybe_fold_offset_to_component_ref): Likewise.
7963         (maybe_fold_offset_to_reference): Likewise.
7964         * tree-ssa-copy.c (may_propagate_copy): Likewise.
7965         (merge_alias_info): Likewise.
7966         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
7967         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
7968         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
7969         * tree-tailcall.c (find_tail_calls): Likewise.
7970         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
7971         * gimplify.c (canonicalize_addr_expr): Likewise.
7972         (fold_indirect_ref_rhs): Likewise.
7973         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
7974         (cpt_same_type): Likewise.
7975         (check_pointer_types_r): Swap parameters to cpt_same_type
7976         where appropriate.
7977         * fold-const.c (fold_convert): Revert fix for PR15988.
7978         * tree-inline.c (setup_one_parameter): Instead fix it here by
7979         using fold_build1 instead of fold_convert and checking for
7980         error_mark_node.  Convert only if the conversion is necessary.
7982 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
7984         * configure.ac: Check for .gnu_attribute on Power.
7985         * configure: Regenerate.
7986         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
7987         attribute for floating-point ABI.
7989 2007-07-02  Ira Rosen  <irar@il.ibm.com>
7991         PR tree-optimization/32230
7992         PR tree-optimization/32477
7993         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
7994         address is a constant.
7996 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
7998         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
7999         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
8000         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
8001         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
8002         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
8003         64-bit targets.  Add support for *-elfoabi*.
8004         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
8005         different settings if $(tm_defines) does not select the EABI.
8006         (MULTILIB_EXCLUSIONS): Define in those circumstances.
8007         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
8008         (MIPS_ARCH_OPTION_SPEC): Likewise.
8009         (MIPS_ISA_LEVEL_SPEC): Likewise.
8010         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
8011         * config/mips/elfoabi.h: New file.
8013 2007-07-02  Richard Guenther  <rguenther@suse.de>
8015         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
8016         (useless_type_conversion_p): ... this.
8017         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
8018         (useless_type_conversion_p): ... this.
8019         * builtins.c (fold_builtin_memory_op): Rename
8020         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
8021         * tree-cfg.c (verify_expr): Likewise.
8022         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
8023         * tree-ssa-ccp.c (ccp_fold): Likewise.
8024         * tree-ssa-copy.c (may_propagate_copy): Likewise.
8025         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
8026         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
8027         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
8028         * tree-ssa-pre.c (eliminate): Likewise.
8029         * tree-ssa.c (delete_tree_ssa): Likewise.
8030         (tree_ssa_useless_type_conversion): Likewise.
8031         * tree.c (build2_stat): Likewise.
8033 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
8035         Fix PR tree-optimization/32571
8036         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
8037         simplifying them.
8039 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
8041         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
8042         and other expected operations explicitly, change default to
8043         gcc_unreachable. 
8045 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
8047         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
8048         PARALLEL.
8049         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
8050         (tls_load_dot_plus_eight): Move the label number into the unspec.
8051         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
8053 2007-07-01  Andreas Schwab  <schwab@suse.de>
8055         * dwarf2out.c (initial_return_save): Define only if used.
8057 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
8059         Unreverting Richard's Revert of:
8061         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
8063         * dce.c (deletable_insn_p_1): New function, split out from...
8064         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
8065         specially, not those inside PARALLELs.  Remove BODY argument
8066         and adjust recursive call accordingly.
8067         (prescan_insns_for_dce): Update call to delete_insn_p.
8069 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
8070             Revital Eres  <eres@il.ibm.com>
8072         * ddg.c (create_ddg_all_sccs): Fix missed
8073         initialization of scc_nodes.
8075 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
8077         PR middle-end/32559
8078         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
8079         X + ~X to 1 only for INTEGRAL_TYPE_P type.
8081 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
8083         * configure.ac: Check for .gnu_attribute on MIPS.
8084         * configure, config.in: Regenerate.
8085         * config/mips/mips.c (mips_file_start): If supported, output
8086         attribute for floating-point ABI.
8088 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
8090         PR target/32433
8091         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
8092         (ffs_cmove): New expander to expand using ctz pattern.
8093         (*ffs_cmove): Remove pattern.
8094         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
8095         (ffsdi2): Expand using ctz pattern.
8096         (*ffs_rex64): Remove pattern.
8098 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8100         PR rtl-optimization/32296
8101         * pa.md (return): Delete pattern.
8102         (return_internal): Remove "(const_int 1)" from pattern.
8103         (epilogue): Use return_internal pattern for trivial returns.
8104         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
8105         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
8107 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
8109         * tree-ssa-pre.c (is_exception_related): New function
8110         (can_value_number_operation): Use it.
8112 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
8113         
8114         Fix PR tree-optimization/32540
8115         Fix PR tree-optimization/31651
8117         * tree-ssa-sccvn.c: New file.
8119         * tree-ssa-sccvn.h: Ditto.
8120         
8121         * tree-vn.c: Include tree-ssa-sccvn.h
8122         (val_expr_paid_d): Removed.
8123         (value_table): Ditto.
8124         (vn_compute): Ditto.
8125         (val_expr_pair_hash): Ditto.
8126         (val_expr_pair_expr_eq): Ditto.
8127         (copy_vuses_from_stmt): Ditto.
8128         (vn_delete): Ditto.
8129         (vn_init): Ditto.
8130         (shared_vuses_from_stmt): Ditto.
8131         (print_creation_to_file): Moved up.
8132         (sort_vuses): Ditto.
8133         (sort_vuses_heap): Ditto.
8134         (set_value_handle): Make non-static.
8135         (make_value_handle): Ditto.
8136         (vn_add): Rewritten to use sccvn lookups.
8137         (vn_add_with_vuses): Ditto.
8138         (vn_lookup): Ditto (and second argument removed).
8139         (vn_lookup_with_vuses): Ditto.
8140         (vn_lookup_or_add): Ditto (and second argument removed);
8141         (vn_lookup_or_add_with_vuses): Ditto.
8142         (vn_lookup_with_stmt): New.
8143         (vn_lookup_or_add_with_stmt): Ditto.
8144         (create_value_handle_for_expr): Ditto.
8146         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
8147         (seen_during_translate): New function.
8148         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
8149         (phi_trans_add): Ditto.
8150         (constant_expr_p): FIELD_DECL is always constant.
8151         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
8152         Use constant_expr_p.
8153         Avoid infinite recursion on mutually valued expressions.
8154         Change callers of vn_lookup_or_add.
8155         (phi_translate): New function.
8156         (compute_antic_safe): Allow phi nodes.
8157         (create_component_ref_by_pieces): Update for FIELD_DECL change.
8158         (find_or_generate_expression): Rewrite slightly.
8159         (create_expression_by_pieces): Updated for vn_lookup_or_add
8160         change.
8161         Update VN_INFO for new names.
8162         (insert_into_preds_of_block): Update for new names.
8163         (add_to_exp_gen): New function.
8164         (add_to_sets): Use vn_lookup_or_add_with_stmt.
8165         (find_existing_value_expr): Rewrite to changed vn_lookup.
8166         (create_value_expr_from): Ditto, and use add_to_exp_gen.
8167         (try_look_through_load): Removed.
8168         (try_combine_conversion): Ditto.
8169         (get_sccvn_value): New function.
8170         (make_values_for_phi): Ditto.
8171         (make_values_for_stmt): Ditto.
8172         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
8173         SCCVN.
8174         (init_pre): Update for SCCVN changes.
8175         (fini_pre): Ditto.
8176         (execute_pre): Ditto.
8178         * tree-flow.h (make_value_handle): Declare.
8179         (set_value_handle): Ditto.
8180         (sort_vuses_heap): Ditto.
8181         (vn_lookup_or_add_with_stmt): Ditto.
8182         (vn_lookup_with_stmt): Ditto.
8183         (vn_compute): Remove.
8184         (vn_init): Ditto.
8185         (vn_delete): Ditto.
8186         (vn_lookup): Update arguments.
8188         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
8189         (tree-vn.o): Ditto.
8190         (tree-ssa-sccvn.o): New.
8191         (OBJS-common): Add tree-ssa-sccvn.o
8192         
8193 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8195         PR c/4076
8196         * c-typeck.c (build_external_ref): Don't mark as used if called
8197         from itself.
8198         * calls.c (rtx_for_function_call): Likewise.
8199         
8200 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
8202         Revert:
8204         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
8206         * dce.c (deletable_insn_p_1): New function, split out from...
8207         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
8208         specially, not those inside PARALLELs.  Remove BODY argument
8209         and adjust recursive call accordingly.
8210         (prescan_insns_for_dce): Update call to delete_insn_p.
8212 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
8214         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
8215         (try_combine): Move potential calls to undo_all() so they happen
8216         before we commit to using the combined insns.
8218 2006-06-30  Jan Hubicka  <jh@suse.cz>
8220         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
8221         code.
8223 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
8225         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
8226         (cgraph_remove_unreachable_nodes): Likewise.
8227         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
8228         * ipa-inline.c (update_caller_keys): Cast according to the coding
8229         conventions.
8230         (cgraph_decide_recursive_inlining): Likewise.
8231         (cgraph_decide_inlining_of_small_function): Likewise.
8232         (try_inline): Likewise.
8233         (cgraph_decide_inlining_incrementally): Likewise.
8234         * ipa-pure-const.c (get_function_state): Likewise.
8235         (scan_function): Likewise.
8236         (analyze_function): Likewise.
8237         (static_execute): Likewise.
8238         * ipa-reference.c (scan_for_static_refs): Likewise.
8239         (merge_callee_local_info): Likewise.
8240         (analyze_function): Use type safe memory macros.
8241         (static_execute): Likewise. Cast according to the coding conventions.
8242         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
8243         conventions.
8244         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
8245         names.
8246         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
8247         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
8248         variable names.
8250 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8252         PR middle-end/30024
8253         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
8254         for complex modes (both int and real).
8256 2007-06-29  Jan Hubicka  <jh@suse.cz>
8258         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
8260 2007-06-29  Jan Hubicka  <jh@suse.cz>
8262         PR middle-end/32372
8263         * cse.c (cse_insn): Avoid invalid sharing in between register note and
8264         the insn pattern.
8266 2007-06-29  Anatoly Sokolov <aesok@post.ru>
8268         PR target/32335
8269         * config/avr/avr.c: Include dataflow header file.
8270         (expand_prologue): Adjust for prologue insn change.
8271         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
8272         inside a insn.
8274 2007-06-29  Richard Guenther  <rguenther@suse.de>
8276         PR middle-end/32493
8277         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
8278         during type verification.
8280 2007-06-29  Jan Hubicka  <jh@suse.cz>
8282         * recog.c (validate_change_rtx_1): Unshare TO argument.
8284 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
8286         PR tree-optimization/24659
8287         * tree-vect-transform.c (vectorizable_call): Handle
8288         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
8290         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
8291         * config/i386/i386.c (enum ix86_builtins)
8292         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
8293         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
8294         description.
8295         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
8296         const using def_builtin_const.
8297         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
8298         input operands in the same modes as the result.
8299         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
8301 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
8303         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
8304         (df_set_dead_notes_for_mw): Likewise.
8306 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
8308         * c-common.c (pointer_int_sum): Do the negation in sizetype.
8310 2007-06-28  DJ Delorie  <dj@redhat.com>
8312         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
8314 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
8316         * doc/invoke.texi (C++ Dialect Options): Document
8317         fvisibility-ms-compat.
8318         * c.opt (fvisibility-ms-compat): New.
8320 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8322         PR tree-opt/32417
8323         * tree-affine.c (aff_combination_add_elt): Handle
8324         pointer addition specially.
8326 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
8328         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
8329         decl is non-external for AIX ABI.
8331 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
8333         * config/rs6000/predicates.md (current_file_function_operand):
8334         Ensure the symbol is non-external for AIX ABI.
8336 2007-06-28  Nick Clifton  <nickc@redhat.com>
8338         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
8339         (fdce, fdse, fpredictive-commoning): Likewise.
8341 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
8343         PR other/31400
8344         * gcc.c (process_command): Recognize the new -static-libgfortran
8345         option.
8347 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8349         PR target/32418
8350         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
8351         Use a call clobbered hard reg instead of a pseudo reg.
8353 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8355         * config/sh/sh.md (load_gbr): Use correct operand constraint.
8357 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8359         PR target/32479
8360         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
8361         REG_LIBCALL and REG_RETVAL notes.
8362         (divsi3, mulsi3): Likewise.
8363         (mulhisi3): Likewise.  Use emit_libcall_block.
8364         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
8366 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
8368         PR rtl-optimization/32481
8369         * combine.c (adjust_for_new_dest): Rescan the changed insn.
8371 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
8373         * dce.c (deletable_insn_p_1): New function, split out from...
8374         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
8375         specially, not those inside PARALLELs.  Remove BODY argument
8376         and adjust recursive call accordingly.
8377         (prescan_insns_for_dce): Update call to delete_insn_p.
8379 2007-06-27  Richard Guenther  <rguenther@suse.de>
8381         PR middle-end/32492
8382         * tree.h (fold_convertible_p): Declare.
8383         * fold-const.c (fold_convertible_p): New function.
8384         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
8385         instead of lang_hooks.types_compatible_p.
8387 2007-06-26  Jan Hubicka  <jh@suse.cz>
8389         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
8390         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
8391         early use validate_unshare_change.
8392         (reload_combine): Likewise.
8393         * recog.c (change_t): New field unshare.
8394         (validate_change_1): Rename from validate_change; add argument unshare.
8395         (validate_change): Turn into wrapper of validate_change_1; update
8396         prototype for bools.
8397         (validate_unshare_change): New.
8398         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
8399         calls of df_insn_rescan.
8400         * recog.h (validate_change): Replace ints by bools.
8401         (validate_unshare_change): Declare.
8403 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
8405         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
8406         
8407 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
8409         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
8411 2007-06-25  Jan Hubicka  <jh@suse.cz>
8413         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
8414         uninlinable call.
8415         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
8416         cgraph_decide_inlining_incrementally): Move uninlinability checks to
8417         places other call site specific checks are performed.
8419 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8421         PR tree-opt/32421
8422         * tree-vect-transform.c (vectorizable_operation): Convert
8423         POINTER_PLUS_EXPR over to PLUS_EXPR.
8425 2007-06-25  Chao-ying Fu  <fu@mips.com>
8427         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
8428         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
8429         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
8430         Document GET_MODE_IBIT, and GET_MODE_FBIT.
8432         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
8433         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8434         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
8435         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
8436         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
8437         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
8438         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
8439         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
8440         ALL_FIXED_POINT_MODE_P): New define.
8441         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8442         MODE_UACCUM.
8443         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
8445         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
8446         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8447         MODE_VECTOR_UACCUM): New mode classes.
8449         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
8450         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
8451         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
8452         USA, UDA, and UTA.
8454         * genmodes.c (struct mode_data): Add ibit and fbit fields.
8455         (blank_mode): Initialize ibit and fbit.
8456         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
8457         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8458         MODE_UACCUM.
8459         (new_adjust): Change required_class to required_class_from and
8460         required_class_to for testing within a range.
8461         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8462         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8463         MODE_VECTOR_UACCUM.
8464         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
8465         (make_fixed_point_mode): New.
8466         (_ADD_ADJUST): Change C to C1 and C2.
8467         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
8468         use a range for machine classes.
8469         (ADJUST_IBIT, ADJUST_FBIT): New.
8470         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
8471         CONST_MODE_FBIT.
8472         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
8473         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8474         Emit adjustment for ibit and fbit.
8475         (emit_mode_ibit, emit_mode_fbit): New.
8476         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
8478 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
8480         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
8481         as the source of the set.
8483 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
8485         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
8486         FP_REGNO_P): Use IN_RANGE.
8487         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
8488         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
8489         (DATA_REG_P): Use DATA_REGNO_P.
8490         (FP_REG_P): Use FP_REGNO_P.
8491         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
8492         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
8493         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
8495 2007-06-24  Jan Hubicka  <jh@suse.cz>
8497         PR middle-end/30563
8498         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
8500 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
8502         PR middle-end/32461
8503         * fold-const.c (fold_binary): Strip nops of operand 0
8504         of BIT_NOT_EXPR before calling operand_equal_p.
8505         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
8506         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
8508 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
8510         * doc/extend.texi: Document that dllimport and dllexport imply
8511         default visibility.
8512         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
8513         imported or exported declaration, including type declarations.
8514         * c-common.c (handle_visibility_attribute): Check for conflicts
8515         with dllimport/dllexport.
8516         (c_determine_visibility): Handle dllimport/dllexport as an
8517         explicit visibility atttribute.
8519 2007-06-23  Richard Guenther  <rguenther@suse.de>
8521         PR tree-optimization/16876
8522         PR middle-end/29478
8523         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
8524         for CALL_EXPRs.
8525         * tree-inline.c (initialize_inlined_parameters): Do not call
8526         lang_hooks.tree_inlining.convert_parm_for_inlining.
8527         * cgraphbuild.c (initialize_inline_failed): Set inline failed
8528         reason for mismatched types.
8529         * gimplify.c (gimplify_call_expr): Verify the call expression
8530         arguments match the called function type signature.  Otherwise
8531         mark the call expression to be not considered for inlining
8532         using CALL_CANNOT_INLINE_P flag.
8533         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
8534         edges call expression.
8535         (cgraph_decide_inlining_of_small_function): Likewise.
8536         (cgraph_decide_inlining): Likewise.
8537         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
8538         Remove define.
8539         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
8540         * c-typeck.c (c_convert_parm_for_inlining): Remove.
8541         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
8542         Remove declaration.
8543         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
8544         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
8545         Remove.
8546         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
8547         convert_parm_for_inlining member.
8549 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
8551         PR target/31152
8552         * arm.md (negscc): Match the correct operand for optimized LT0 test.
8553         Remove optimization for GT.
8555 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
8557         PR middle-end/32437
8558         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
8559         is a PARALLEL.
8560         (prescan_insns_for_dce): Add extra parameter.
8561         
8562 2007-06-23  Jan Hubicka  <jh@suse.cz>
8564         PR middle-end/31541
8565         * gimplify.c (mark_addressable): New function.
8566         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
8568 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8570         PR middle-end/32374
8571         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
8573 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8575         PR target/32413
8576         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
8577         moves between MMX/SSE registers to at least 8 units to prevent
8578         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
8580 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8582         * config/i386/i386.c (override_options): Correct x86_sahf
8583         setting condition.
8585 2007-06-21  David Daney  <ddaney@avtrex.com>
8587         PR target/32406
8588         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
8589         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
8590         (exception_receiver): Renamed to ...
8591         (nonlocal_goto_receiver): ... this.
8593 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
8595         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
8596         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
8597         partial register accesses.
8599 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
8601         * fold-const.c (debug_fold_checksum): Move it under
8602         ENABLE_FOLD_CHECKING.
8604 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
8606         PR middle-end/20623
8607         * tree.h (debug_fold_checksum): Declared.
8608         * fold-const.c (build_fold_addr_expr_with_type_1): New.
8609         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
8610         build_fold_addr_expr_with_type_1.
8611         (fold_addr_expr, debug_fold_checksum): New.
8612         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
8613         (fold_unary, fold_comparison, split_address_to_core_and_offset):
8614         Use fold_addr_expr.
8615         
8616 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
8618         PR tree-optimization/19590
8619         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
8620         of scev is a constant.
8621         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
8623 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
8625         * df-problems.c (df_note_bb_compute): Made computation of live
8626         info consistent with df_lr.
8628 2007-06-21  Richard Guenther  <rguenther@suse.de>
8630         PR tree-optimization/32453
8631         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
8632         for pointer anti-range.
8634 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
8636         * config/i386/i386.c (processor_target_table): Increase maximum
8637         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
8638         default 64bit.
8640         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
8641         byte alignment if > 8 byte alignment is preferred.
8642         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
8644 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
8646         PR tree-optimization/31866
8647         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
8648         if ASM_EXPR's input is not a SSA_NAME.
8650         PR middle-end/32362
8651         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
8652         but decl is a global var, instead return decl.
8653         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
8654         even for is_global_var decls, if they are private in some outer
8655         context.
8657 2007-06-21  Richard Guenther  <rguenther@suse.de>
8659         PR tree-optimization/32451
8660         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
8662 2007-06-21  Christian Bruel  <christian.bruel@st.com>
8664         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
8665         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
8666         (push_regs): Changed saving order or banked registers.
8667         (sh_expand_epilogue): Likewise.
8668         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
8669         (FIRST_BANKED_REG): Likewise.
8670         (LAST_BANKED_REG): Likewise.
8671         * config/sh/sh.md (banked) New attribute.
8672         (in_delay_slot): Check banked attribute.
8673         
8674 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
8676         PR tree-optimization/32075
8677         * tree-data-ref.c (subscript_dependence_tester_1, 
8678         analyze_miv_subscript, analyze_overlapping_iterations,
8679         add_distance_for_zero_overlaps, build_classic_dist_vector,
8680         subscript_dependence_tester_1, analyze_overlapping_iterations,
8681         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
8682         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
8683         to evolution_function_is_affine_multivariate_p.
8685 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
8687         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
8689 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8691         PR target/32335
8692         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
8693         for TARGET_A16.
8694         * config/m32c/prologue.md (epilogue_exitd_16): New.
8695         (epilogue_reit_16): New.
8696         (epilogue_exitd): Rename to epilogue_exitd_24.
8697         (epilogue_reit): Rename to epilogue_reit_24.
8699 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
8700             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
8702         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
8703         New counters.
8704         * haifa-sched.c (queue_to_ready): Don't requeue next insn
8705         if dbg_cnt (sched_insn) reaches the limit.
8706         (choose_ready): New parameter INSN_PTR and new return value.
8707         (schedule_block): Handle dbg_cnt (sched_insn). Handle
8708         the new return value from choose_ready.
8709         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
8710         (rest_of_handle_global_alloc): New global_alloc_at_func.
8712 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
8714         PR tree-optimization/25737
8715         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
8716         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
8717         * tree-flow.h (struct fieldoff): Add new field alias_set.
8718         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
8719         argument addressable_type.  Set alias_set of fieldoff.
8720         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
8721         (create_overlap_variables_for): Pass alias_set from fieldoff to
8722         create_sft.
8723         * alias.c (get_alias_set): Use alias_set from SFT if set.
8725 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
8727         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
8728         of a variable as an unsigned HOST_WIDE_INT integer.
8730 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
8732         PR rtl-optimization/32405
8733         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
8735 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
8737         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
8739         PR middle-end/31959
8740         * builtins.c: Include diagnostic.h.
8741         (expand_builtin_expect): Make gcc_assert more permissive.
8742         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
8744         PR inline-asm/32109
8745         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
8746         and !allows_mem.
8748         PR middle-end/32285
8749         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
8750         if ACCUMULATE_OUTGOING_ARGS.
8752 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8754         * config/m68hc11/m68hc11.c: Include dataflow header file.
8755         (m68hc11_reorg): Port to dataflow.
8757 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
8759         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
8760         (struct df_problem.free_blocks_on_set_blocks): New field.
8761         (struct dataflow.optional_p): New field.
8762         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
8763         (df_live_set_all_dirty): New function.
8764         * df-scan.c (df_scan_alloc): Initialize optional_p.
8765         (problem_SCAN): Initialize free_blocks_on_set_blocks.
8766         * df-core.c (df_set_blocks): Removed use of
8767         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
8768         df_problem.free_blocks_on_set_blocks to determine which blocks are
8769         recycled.
8770         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
8771         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
8772         uses dataflow.optional_p to determine if problem should be
8773         deleted.
8774         (rest_of_handle_df_initialize): Only start live problem if 
8775         -02 or above.
8776         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
8777         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
8778         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
8779         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
8780         problem_NOTE):  Initialize free_blocks_on_set_blocks.
8781         (df_lr_bb_local_compute): Recompute luids if df_live problem is
8782         not active.
8783         (df_live_set_all_dirty, df_note_alloc): New function.
8784         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
8785         df_get_live_*.
8786         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
8787         * postreload.c (reload_combine): Ditto.
8788         * cse.c (cse_extended_basic_block): Ditto.
8789         * regmove.c (mark_flags_life_zones): Ditto.
8790         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
8791         erase_matching_seqs): Ditto.
8792         * bt-load.c (compute_defs_uses_and_gen): Ditto.
8793         * integrate (allocate_initial_values): Ditto.
8794         * combine.c (reg_dead_at_p): Ditto.
8795         * resource.c (mark_target_live_regs): Ditto.
8796         * sched-rgn.c (check_live_1, update_live_1): Ditto.
8797         * config/sh/sh.c (find_r0_life_regions): Ditto.
8798         * global.c (rest_of_handle_global_alloc): Only add back df_live
8799         for -O > 1.
8800         * local-alloc.c (rest_of_handle_local_alloc): Only remove
8801         df_live for -O > 1.
8802         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
8803         df_get_live_*.
8804         (if_convert): Make sure df_live is there at -O == 1.
8805         (pass_if_after_combine): Cleanup flags.
8806         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
8807         is there at -O == 1.
8808         
8809 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
8811         * config/arm/arm.c (arm_get_frame_offsets): Set
8812         offsets->locals_base to avoid negative stack size.
8813         (thumb1_expand_prologue): Assert on negative stack size.
8815 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
8817         PR tree-optimization/32367
8818         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
8819         of the chrec has no evolution in that loop.
8820         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
8822 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
8824         * config/xtensa/xtensa.c: Include "df.h".
8825         (xtensa_builtin_saveregs): Use adjust_address instead of
8826         change_address.
8827         (xtensa_va_start): Invoke make_tree with sizetype for
8828         expand_builtin_saveregs and then convert the result to a pointer.
8829         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
8830         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
8831         Subtract argument size from index value as integers and then use
8832         POINTER_PLUS_EXPR to add the result to the array address.
8833         
8834 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8836         PR target/32335
8837         * config/m32c/m32c.c: Include dataflow header file.
8838         (m32c_emit_prologue): Adjust for prologue insn change.
8839         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
8840         once inside a PARALLEL. Assume frame size passed in operand 0
8841         includes space to save the fb register.
8842         (prologue_enter_24): Likewise.
8843         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
8845 2007-06-19  David Daney  <ddaney@avtrex.com
8847         PR target/32313
8848         * config/mips/mips.md (cprestore): Mark $gp as used.
8850 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8852         PR target/32369
8853         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
8854         (frv_ifcvt_modify_insn): Likewise.
8856 2007-06-19  Richard Guenther  <rguenther@suse.de>
8858         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
8859         only handle positive offsets that fit in a HOST_WIDE_INT.
8861 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
8863         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
8864         result of rsqrt insn for zero input argument to avoid NaN.
8866 2007-06-19  Richard Guenther  <rguenther@suse.de>
8868         PR middle-end/31950
8869         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
8871 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
8873         PR tree-optimization/32353
8874         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
8876 2007-06-19  Nick Clifton  <nickc@redhat.com>
8878         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
8880 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
8882         PR target/32389
8883         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
8884         * config/i386/i386.c (assign_386_stack_local): Assert that
8885         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
8886         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
8887         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
8888         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
8890 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
8892         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
8894 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
8896         PR rtl-optimization/32321
8897         * gcse.c (replace_store_insn): Update the note before
8898         calling emit_insn_after.
8900 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
8902         PR middle-end/32355
8903         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
8904         cse_main.
8905         * df-problems.c (df_note_bb_compute): Fix dumping info.
8906         
8907 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
8909         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
8910         insn with emit_jump_insn.
8912 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
8914         PR tree-optimization/32383
8915         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
8916         * targhooks.h (default_builtin_reciprocal): Update prototype.
8917         * target.h (struct gcc_target): Update builtin_reciprocal.
8918         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
8919         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
8920         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
8921         when fndecl is in BUILT_IN_MD class.
8922         (execute_convert_to_rsqrt): Ditto.
8924         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
8925         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
8926         Convert BUILT_IN_SQRTF code only  when md_fn is false.
8928 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
8930         * bt-load.c (move_btr_def): Fix the order of arguments
8931         to validate_replace_rtx.
8933 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
8935         * config/m68k/m68k-devices.def: Add 54450..54455.
8937 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
8939         PR rtl-optimization/32366
8940         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
8941         FLOAT_EXTEND]: Prevent non-scalar modes from entering
8942         significand_size.
8944 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
8946         PR middle-end/32349
8947         * modulo-sched (generate_reg_moves): Added rescan parameter and if
8948         this is true, rescan insn being modified.
8949         (sms_schedule): Added rescan parameter.
8950         (rest_of_handle_sms): Moved freeing of dominance info to before
8951         getting out of cfg_layout.
8952         
8953 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
8955         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
8956         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
8957         appropriate.
8959         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
8960         FL_CF_EMAC from the entry for isac.
8962         * config/m68k/predicates.md (const_call_operand): Adjust comment.
8963         (const_sibcall_operand): New.
8964         (sibcall_operand): Use it.
8965         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
8966         (m68k_isas): ISAC does not imply FPU or EMAC.
8967         (override_options): Add ISA_C logic for symbolic jump & call.
8969 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
8971         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
8972         return mode from the builtin itself.
8973         (sparc_fold_builtin): Fix cast of zero constant.
8975 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
8977         * targhooks.c (default_builtin_reciprocal): New default target hook.
8978         * targhooks.h (default_builtin_reciprocal): Add prototype.
8979         * hooks.c (hook_tree_tree_bool_null): Remove hook.
8980         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
8981         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
8982         default_builtin_reciprocal.
8984 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
8986         PR middle-end/31723
8987         * hooks.c (hook_tree_tree_bool_null): New hook.
8988         * hooks.h (hook_tree_tree_bool_null): Add prototype.
8989         * tree-pass.h (pass_convert_to_rsqrt): Declare.
8990         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
8991         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
8992         and convert it to reciprocal a*rfunc(b).
8993         (execute_convert_to_rsqrt): New function.
8994         (gate_convert_to_rsqrt): New function.
8995         (pass_convert_to_rsqrt): New pass definition.
8996         * target.h (struct gcc_target): Add builtin_reciprocal.
8997         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
8998         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
8999         TARGET_BUILTIN_RECIPROCAL.
9000         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
9002         * config/i386/i386.h (TARGET_RECIP): New define.
9003         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
9004         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9005         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9006         and not optimizing for size.
9007         (*rcpsf2_sse): New insn pattern.
9008         (*rsqrtsf2_sse): Ditto.
9009         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
9010         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9011         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9012         and not optimizing for size.
9013         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
9014         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9015         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9016         and not optimizing for size.
9017         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
9018         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9019         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9020         and not optimizing for size.
9021         (*sse_rsqrtv4sf2): Do not export.
9022         (sqrtv4sf2): Ditto.
9023         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
9024         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9025         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9026         and not optimizing for size.
9027         (sqrtv4sf2): Ditto.
9028         * config/i386/i386.opt (mrecip): New option.
9029         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
9030         (ix86_emit_swsqrtsf): Ditto.
9031         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
9032         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
9033         builtin definition.
9034         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
9035         ix86_expand_unop1_builtin.
9036         (ix86_emit_swdivsf): New function.
9037         (ix86_emit_swsqrtsf): Ditto.
9038         (ix86_builtin_reciprocal): New function.
9039         (TARGET_BUILTIN_RECIPROCAL): Use it.
9040         (ix86_vectorize_builtin_conversion): Rename from
9041         ix86_builtin_conversion.
9042         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
9043         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
9044         "i386 and x86_64 Options" section.
9045         (Intel 386 and AMD x86_64 Options): Document -mrecip.
9047 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
9048             Zdenek Dvorak <dvorakz@suse.cz>
9049             Richard Guenther  <rguenther@suse.de>
9050             Kaz Kojima  <kkojima@gcc.gnu.org>
9052         * tree-vrp.c (compare_values_warnv): Convert val2 to
9053         the type of val1.
9054         (extract_range_from_assert): Create
9055         POINTER_PLUS_EXPR for pointer types.
9056         (extract_range_from_binary_expr): Handle
9057         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
9058         for pointer types.
9059         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
9060         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
9061         POINTER_PLUS_EXPR as PLUS_EXPR.
9062         (number_of_iterations_lt_to_ne):
9063         For pointer types, use sizetype when
9064         creating MINUS_EXPR/PLUS_EXPRs.
9065         (assert_loop_rolls_lt): For pointer types, use sizetype when
9066         creating MINUS_EXPR/PLUS_EXPRs.
9067         (number_of_iterations_le): Likewise.
9068         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
9069         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
9070         like PLUS_EXPR and MINUS_EXPR.
9071         * tree-pretty-print.c (dump_generic_node): Handle
9072         POINTER_PLUS_EXPR.
9073         (op_prio): Likewise.
9074         (op_symbol_1): Likewise.
9075         * optabs.c (optab_for_tree_code): Likewise.
9076         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
9077         specially.
9078         * tree-tailcall.c (process_assignment): Mention
9079         POINTER_PLUS_EXPR in a TODO comment.
9080         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
9081         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
9082         not used with a pointer and an integer type.
9083         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
9084         increment using chrec_convert_rhs instead of chrec_convert.
9085         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
9086         PLUS_EXPR except for the right hand side's type will be
9087         sizetype.
9088         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
9089         (fold_used_pointer_cast): Kill.
9090         (pointer_offset_p): Kill.
9091         (fold_used_pointer): Kill.
9092         (pointer_used_p): Kill.
9093         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
9094         call fold_used_pointer.
9095         (instantiate_parameters_1): Convert the increment
9096         using chrec_convert_rhs instead of chrec_convert.
9097         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
9098         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
9099         instead of PLUS_EXPR.
9100         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
9101         PLUS_EXPR for pointers.
9102         (std_gimplify_va_arg_expr): Likewise.
9103         (fold_builtin_memory_op): Likewise.
9104         (fold_builtin_strstr): Likewise.
9105         (fold_builtin_strchr): Likewise.
9106         (fold_builtin_strrchr): Likewise.
9107         (fold_builtin_strpbrk): Likewise.
9108         (expand_builtin_memory_chk): Likewise.
9109         (fold_builtin_memory_chk): Likewise.
9110         (std_expand_builtin_va_start): Use
9111         sizetype for the call to make_tree and then convert
9112         to the pointer type.
9113         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
9114         instead of PLUS_EXPR for adding to a pointer.
9115         (std_gimplify_va_arg_expr): Use fold_build2 for
9116         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
9117         the operands to sizetype first and then cast the BIT_AND_EXPR
9118         back to the pointer type.
9119         * fold-const.c (build_range_check): Handle pointer types
9120         specially.
9121         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
9122         of PLUS_EXPR's. Make sure the offset is converted to
9123         sizetype.
9124         (try_move_mult_to_index): Strip the NOPs from the offset.
9125         Remove code argument and replace all uses with PLUS_EXPR.
9126         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
9127         specially. Don't use a pointer type for MINUS_EXPR.
9128         (fold_unary): Handle for (T1)(X op Y),
9129         only p+ as that is the only as that can be handled for
9130         binary operators now.
9131         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
9132         POINTER_PLUS_EXPR.
9133         <case PLUS_EXPR>: Add folding of PTR+INT into
9134         PTR p+ INT.
9135         Don't call try_move_mult_to_index.
9136         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
9137         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
9138         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
9139         Don't call try_move_mult_to_index.
9140         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
9141         (tree_expr_nonzero_p): Likewise.
9142         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
9143         of PLUS_EXPR for the complex expression folding.
9144         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
9145         first chrec is a pointer type, then the second should
9146         be sizetype and not the first's type.
9147         For POINTER_PLUS_EXPR, use a different right hand side type.
9148         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
9149         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
9150         different right hand side type.
9151         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
9152         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
9153         instead of PLUS_EXPR.
9154         When either operand is zero, convert the other operand.
9155         (chrec_apply): Use chrec_convert_rhs
9156         on the argument x instead of chrec_convert.
9157         (reset_evolution_in_loop): For pointer types, the new_evol
9158         should be sizetype.
9159         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
9160         different right hand side type.
9161         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
9162         (chrec_convert_rhs): New function.
9163         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
9164         different right hand side type.
9165         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
9166         * tree-chrec.h (chrec_convert_rhs): New prototype.
9167         (build_polynomial_chrec): For pointer types, the right hand
9168         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
9169         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
9170         Remove subtraction case as it is always addition now.
9171         Make sure the offset is converted to sizetype.
9172         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
9173         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
9174         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
9175         PLUS_EXPR in pointer type.
9176         Handle POINTER_PLUS_EXPR.
9177         (tree_to_aff_combination): Likewise.
9178         (force_expr_to_var_cost): Likewise.
9179         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
9180         instead of PLUS_EXPR for pointers.
9181         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
9182         instead of PLUS_EXPR of pointer types.
9183         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
9184         as PLUS_EXPR.
9185         (check_va_list_escapes): Likewise.
9186         (check_all_va_list_escapes): Likewise.
9187         * dwarf2out.c (loc_descriptor_from_tree_1):
9188         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
9189         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
9190         (string_constant): Likewise.
9191         * tree-ssa-address.c (tree_mem_ref_addr): When adding
9192         the offset to the base, use POINTER_PLUS_EXPR.
9193         (add_to_parts): Convert the index to sizetype.
9194         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
9195         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
9196         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
9197         Offset only holds something for PLUS_EXPR.
9198         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
9199         a PLUS_EXPR.
9200         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
9201         and not PLUS_EXPR.
9202         (analyze_accesses_for_modify_stmt): Likewise.
9203         Remove comment about the type being integral type as it is
9204         wrong now.
9205         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
9206         PLUS_EXPR.
9207         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
9208         and not PLUS_EXPR.
9209         Correct the type which the artimentic is done in (is now
9210         sizetype).
9211         Reindent one loop.
9212         * tree-data-ref.c (split_constant_offset): Handle
9213         POINTER_PLUS_EXPR
9214         * tree-affine.c (tree_to_aff_combination): Likewise.
9215         * c-typeck.c (build_unary_op): For pointers create the increment
9216         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
9217         for pointers.
9218         * gimplify.c (gimplify_self_mod_expr): Create a
9219         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
9220         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
9221         * tree.def (POINTER_PLUS_EXPR): New tree code.
9222         * tree-predcom.c (ref_at_iteration): If we have a pointer
9223         type do the multiplication in sizetype.
9224         * tree-mudflap.c (mf_xform_derefs_1): Create a
9225         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
9226         * tree-ssa-forwprop.c 
9227         (forward_propagate_addr_into_variable_array_index):
9228         Don't expect there to be a cast for the index as that
9229         does not exist anymore.
9230         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
9231         instead of PLUS_EXPR.
9232         Don't check for the first operand of the POINTER_PLUS_EXPR
9233         was the index as it cannot be.
9234         Call forward_propagate_addr_into_variable_array_index with
9235         the SSA_NAME instead of the statement.
9236         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
9237         (compare_constant): Likewise.
9238         (copy_constant): Likewise.
9239         (compute_reloc_for_constant): Likewise.
9240         (output_addressed_constants): Likewise.
9241         (initializer_constant_valid_p): Likewise.
9242         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
9243         Convert the MIN/MAX of the inner type to the outer
9244         type before comparing them.
9245         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
9246         POINTER_PLUS_EXPR instead of PLUS_EXPR.
9247         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
9248         of PLUS_EXPR for pointers.
9249         * tree-inline.c (estimate_num_insns_1): Handle
9250         POINTER_PLUS_EXPR.
9251         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
9252         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
9253         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
9254         instead of PLUS_EXPR for the pointer increment statement.
9255         (vect_update_ivs_after_vectorizer): For pointer types, create
9256         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
9257         MULT_EXPR in sizetype.
9258         (vect_gen_niters_for_prolog_loop): Add a cast when creating
9259         byte_misalign.
9260         * tree-object-size.c (plus_expr_object_size): Handle
9261         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
9262         code which is trying to figure out which side is a pointer and 
9263         is the index.
9264         (check_for_plus_in_loops_1): Likewise.
9265         (check_for_plus_in_loops): Likewise.
9266         * c-common.c (pointer_int_sum): Create a
9267         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
9268         * tree-ssa-structalias.c (handle_ptr_arith): Handle
9269         only POINTER_PLUS_EXPR.  Removing all the extra
9270         code which is trying to figure out which side is a pointer and 
9271         is the index.
9272         * tree-cfg.c (verify_expr): Add extra checking for pointers and
9273         PLUS_EXPR and MINUS_EXPR.
9274         Also add checking to make sure the operands of POINTER_PLUS_EXPR
9275         are correct.
9276         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
9277         with make_tree, instead of a pointer type.
9278         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
9279         for pointers instead of PLUS_EXPR.
9280         (s390_gimplify_va_arg): Likewise.
9281         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
9282         instead of PLUS_EXPR when doing addition on pointer
9283         types.  Use sizetype for the second operand.
9284         (spu_gimplify_va_arg_expr): Likewise.
9285         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
9286         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
9287         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
9288         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
9289         for the pointer addition and also use size_int/sizetype
9290         for the offset.
9291         (ix86_gimplify_va_arg): Likewise.
9292         Perform BIT_AND_EXPR on sizetype arguments.
9293         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
9294         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
9295         for the pointer additions and also use size_int for the offsets.
9296         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
9297         additions and also use size_int for the offsets.  Perform
9298         BIT_AND_EXPR on sizetype arguments.
9299         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
9300         POINTER_PLUS_EXPR for pointers and create the
9301         BIT_AND_EXPR in sizetype.
9302         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
9303         instead of PLUS_EXPR for pointer addition.
9304         (rs6000_va_start): Likewise.
9305         Also use sizetype for the offset.
9306         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
9307         as PLUS_EXPR/MINUS_EXPR.
9308         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
9309         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
9310         Don't use BIT_AND_EXPR on a pointer type, convert the
9311         expression to sizetype first.
9312         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
9313         for pointers.
9314         (mips_gimplify_va_arg_expr): Likewise.
9315         Don't create BIT_AND_EXPR in a pointer type.
9317 2007-06-15  Eric Christopher  <echristo@apple.com>
9319         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
9320         (x86_64-*-darwin*): Ditto.
9321         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
9322         for above.
9324 2007-06-15  Matthew Wilcox <matthew@wil.cx>
9326         * doc/extend.texi: Document behavior of __attribute__((aligned))
9327         on typedefs.
9329 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
9331         * rtlanal.c (note_stores): Improve documentation.
9333 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
9335         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
9336         LOCAL_LABEL_PREFIX): Delete.
9337         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
9338         (bfin_internal_label): Delete.
9340 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
9342         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
9343         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
9344         otherwise define to LIBGCC2_TF_CEXT.
9345         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
9346         (LIBGCC_TF_CEXT): Ditto.
9347         (TF_SIZE): Ditto.
9349 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
9351         PR rtl-optimization/32339
9352         * df-scan.c (df_uses_record): Don't modify flags but just add to
9353         it for df_ref_record.
9355 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9357         * tree-mudflap.c: Fix whitespace issues.
9359 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
9361         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
9363 2007-06-14  Eric Christopher  <echristo@apple.com>
9365         * config/i386/sse.md (movdi_to_sse): Rewrite body.
9366         (movv4sf): Use gcc_unreachable instead of abort.
9368 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
9370         PR target/32268
9371         * config/i386/sfp-machine.h (CMPtype): New define.
9372         (mach stubs): Use CMPtype instead of int as a return type.
9374 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
9376         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
9377         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
9378         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
9379         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
9380         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
9381         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
9382         config/soft-fp/soft-fp.h: Update from glibc CVS.
9384 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
9386         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
9388 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9390         PR target/32341
9391         * config/v850/v850.c: Include dataflow header file.
9392         (substitute_ep_register): Fix typo.
9394 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9396         * configure.ac: Fix earlier checkin.
9397         * configure: Regenerated.
9399 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9401         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
9402         * aclocal.m4: Regenerate.
9403         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
9404         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
9405         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
9406         * configure: Regenerate.
9407         * Makefile.in (LOOSE_WARN): Subst loose_warn.
9409         * Makefile.in (quickstrap): Build libgcc too.
9411 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9413         * configure.ac: Add --enable-checking=df.  Explicitly mention that
9414         the variables are initialized as for "release".
9415         * df-core.c: Use it.
9416         * configure: Regenerate.
9417         * config.in: Regenerate.
9419 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
9421         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
9422         validate_replace_rtx instead of replace_rtx.
9423         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
9425 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
9427         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
9428         (DWARF2_UNWIND_INFO): Override default if configured with
9429         SJLJ EH disabled.
9430         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
9431         (ENDFILE_SPEC): Add crtend.o.
9432         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
9433         (ENDFILE_SPEC): Add crtend.o.
9434         (TARGET_USE_JCR_SECTION): Define.
9435         (MD_UNWIND_SUPPORT): Define for 32-bit target.
9437         * config/i386/cygming-crtbegin.c: New file.
9438         * config/i386/cygming-crtend.c: New file.
9440 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
9442         * config/i386/w32-unwind.h: New file.
9444 2007-06-13  Eric Christopher  <echristo@apple.com>
9446         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
9447         the user set a value below STACK_BOUNDARY.
9449 2007-06-13  Thiemo Seufer  <ths@networkno.de>
9451         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
9452         imply -lpthread for -pthread.
9454 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
9456         * basic-block.h: Remove the prototype for
9457         free_basic_block_vars.
9458         * cfglayout.h: Remove the prototype for
9459         insn_locators_initialize.
9460         * tree.h: Remove the prototype for emit_line_note.
9462         * tree-ssa-pre.c (mergephitemp): Remove.
9463         (init_pre): Don't use mergephitemp.
9465 2007-06-13  Eric Christopher  <echristo@apple.com>
9467         * config/i386/i386.c (override_options): If we've specified
9468         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
9470 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
9472         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
9473         is defined.
9475 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
9477         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
9478         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
9479         (eh_store_handler): New pattern.
9480         (eh_return): Emit it instead of a plain move.
9482 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
9484         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
9485         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
9486         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
9487         def_builtin_const.
9489 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
9491         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
9492         (find_next_insn_start, find_load): New functions.
9493         (bfin_reorg): Use them to deal with the fact that parallel insns are
9494         no longer represented as a SEQUENCE.
9496 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
9498         * config/sparc/sparc.c (sparc_override_options): Initialize
9499         fpu mask correctly.
9501 2007-06-13  Dave Korn  <dave.korn@artimi.com>
9503         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
9504         df_get_live_out.
9506 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
9508         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
9509         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
9510         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
9511         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
9512         tree-vect-transform.c: Fix comment typos.  Follow spelling
9513         conventions.
9515 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
9517        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
9518        to the exit block use set.
9519        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
9520        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
9521        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
9523 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
9525         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
9526         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
9527         to indicate an error.
9528         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
9529         New functions.
9530         (dbg_cnt_process_opt): Print an error on a bad argument.
9531         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
9532         * common.opt (-fdbg-cnt-list): New.
9533         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
9535 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
9537         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
9538         flag on ref-all pointers.
9540 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9542         PR middle-end/31579
9543         * expr.c (expand_expr_addr_expr_1): Call expand_expr
9544         for the offset with the modifier as EXPAND_INITIALIZER
9545         if the modifier is EXPAND_INITIALIZER.
9546         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
9547         a register if we had an overflow.
9549 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9551         * real.c (real_isfinite): New.
9552         (real_sqrt): Use it.
9553         * real.h (real_isfinite): New.
9554         * builtins.c: Use it.
9556 2007-06-12  Ian Lance Taylor  <iant@google.com>
9557             Daniel Berlin  <dberlin@dberlin.org>
9559         PR libstdc++/29286
9560         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
9561         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
9562         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
9563         (DECL_NO_TBAA_P): Define.
9564         (struct tree_decl_common): Add no_tbaa_flag field.
9565         * tree-ssa-structalias.c (struct variable_info): Add
9566         no_tbaa_pruning field.
9567         (new_var_info): Initialize no_tbaa_pruning field.
9568         (unify_nodes): Copy no_tbaa_pruning field.
9569         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
9570         (dump_solution_for_var): Print no_tbaa_pruning flag.
9571         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
9572         callers.
9573         (compute_tbaa_pruning): New static function.
9574         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
9575         Call compute_tbaa_pruning.
9576         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
9577         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
9578         * gimple-low.c (lower_stmt): Likewise.
9579         * tree-gimple.c (is_gimple_stmt): Likewise.
9580         * tree-ssa-operands.c (get_expr_operands): Likewise.
9581         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
9582         * tree-inline.c (estimate_num_insns_1): Likewise.
9583         (copy_result_decl_to_var): Likewise.
9584         * expr.c (expand_expr_real_1): Likewise.
9585         * tree-pretty-print.c (dump_generic_node): Likewise.
9586         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
9587         * omp-low.c (omp_copy_decl_2): Likewise.
9588         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
9589         * doc/c-tree.texi (Expression trees): Document
9590         CHANGE_DYNAMIC_TYPE_EXPR.
9592 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9594         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
9595         with !HONOR_NANS and !HONOR_INFINITIES.
9596         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
9598 2007-06-12  Tristan Gingold  <gingold@adacore.com>
9600         * gcov.c: Comments updated.
9601         (source_info): Add file_time field.
9602         (source_index): New variable.
9603         (mutiple_files): New variable.
9604         (generate_results): New function extracted from process_file.
9605         (process_file): Save and restore chain of functions, generate
9606         results and free structures only if not merging results.
9607         (release_structures): File names are now freed in create_file_names
9608         (create_file_names): Free previous file names.
9609         (find_source): File date is now read here and modifications in
9610         source files is checked here.
9611         (read_graph_file): Only reverse order of functions for the current
9612         object file.
9613         (make_gcov_file_name): Do not generate long names if input_name is
9614         NULL.
9615         (output_lines): If merging results do not display graph, data and
9616         runs informations.
9617         Checking source file modification is done in find_source.
9619         * doc/gcov.texi: Append an s to sourcefile.
9621 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
9623         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
9624         (forced_nop): New pattern.
9625         * config/bfin/bfin.c: Include "df.h".
9626         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
9627         (bfin_discover_loop): Use df_get_live_in instead of
9628         global_live_at_start.
9629         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
9630         df_analyze when done.
9631         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
9632         the insns.  Use QImode for the final insn in a bundle.  Call
9633         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
9634         gen_nop.
9635         (reorder_var_tracking_notes): New function.
9636         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
9637         update_life_info.  Call df_analyze after scheduling and bundle
9638         generation.  Call reorder_var_tracking_notes if generating these
9639         notes.  Call df_finish_pass at the end.
9641 2007-06-12  Dirk Mueller  <dmueller@suse.de>
9643         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
9644         a comparison, not an assignment.
9646 2007-06-12  Olivier Hainque  <hainque@adacore.com>
9648         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
9649         Request walking the subtrees only, leaving the current is_lhs/val_only
9650         untouched.
9651         (convert_non_local_reference): Likewise.
9653 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
9655         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
9657 2007-06-12  Richard Guenther  <rguenther@suse.de>
9659         PR tree-optimization/15353
9660         PR tree-optimization/31657
9661         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
9662         * timevar.def: Add TV_TREE_IFCOMBINE.
9663         * tree-pass.h (pass_tree_ifcombine): Declare.
9664         * tree-ssa-ifcombine.c: New file.
9665         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
9666         * tree-flow.h (blocks_in_phiopt_order): Declare.
9667         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
9668         (tree-ssa-ifcombine.o): New dependencies.
9670 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
9672         PR rtl-optimization/32293
9673         * combine.c (simplify_if_then_else): Truncate return from
9674         nonzero_bits() to correct mode.
9676 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
9678         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
9679         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
9681 2007-06-11  Diego Novillo  <dnovillo@google.com>
9683         * Makefile.in (reload1.o-warn): Remove.
9685 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
9687         * combine.c (subst): Use reg_overlap_mentioned_p
9688         instead of comparing register numbers directly.
9690 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
9692         * reload1.c (mark_home_live_1): Use the mode parameter.
9694 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
9696         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
9697         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
9698         word "deferred".
9699         * df-core.c: Ditto.
9701 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
9703         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
9705 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9707         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
9708         from integer registers.
9709         (FP mode splitters): Handle TFmode.
9711 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
9713         * tree-ssa-structalias.c (find_what_p_points_to): Return false
9714         for ref-all pointers that point-to anything.
9716 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
9718         * config/arm/arm.c (arm_output_dwarf_dtprel,
9719         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
9721 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9723         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
9724         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
9725         to memory moves.
9727 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
9729         * tree.c (signed_or_unsigned_type_for): New.
9730         (unsigned_type_for): Use signed_or_unsigned_type_for.
9731         (signed_type_for): Use signed_or_unsigned_type_for.
9732         * tree.h (signed_or_unsigned_type_for): New.
9733         (get_signed_or_unsigned_type): Remove.
9734         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
9735         lang_hooks.types.signed_type
9736         (size_diffop): Likewise.
9737         (all_ones_mask_p): Likewise.
9738         (build_range_check): Likewise.
9739         (fold_cond_expr_with_comparison): Likewise.
9740         (fold_cond_expr_with_comparison): Likewise.
9741         (unextend): Likewise.
9742         (extract_muldiv_1): Likewise.
9743         (fold_single_bit_test_into_sign_test): Likewise.
9744         (fold_binary): Likewise.
9745         (fold_ternary): Likewise.
9746         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
9747         instead of get_signed_or_unsigned_type.
9748         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
9749         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
9750         * expr.c (signed_or_unsigned_type_for): Use
9751         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
9752         * langhooks.c (get_signed_or_unsigned_type): Remove.
9753         (lhd_signed_or_unsigned_type): Remove.
9754         * langhooks.h (lang_hooks_for_types): Remove signed_type and
9755         signed_or_unsigned_type.
9756         (lhd_signed_or_unsigned_type): Remove.
9757         * expmed.c (make_tree): Use signed_type_for instead of
9758         lang_hooks.types.signed_type.
9759         * c-common.c (same_scalar_type_ignoring_signedness): Use
9760         c_common_signed_type instead of lang_hooks.types.signed_type.
9761         (c_common_unsigned_type): New.
9762         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
9763         (shorten_compare): Use c_common_unsigned_type instead of
9764         c_common_signed_or_unsigned_type.
9765         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
9766         unsigned_type_for.
9767         * convert.c (convert_to_integer): Use signed_type_for instead of
9768         lang_hooks.types.signed_type.
9769         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
9770         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
9771         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
9772         * c-format.c (check_format_types): Use c_common_unsigned_type
9773         instead of unsigned_type_for.
9774         * c-decl.c (groakdeclarator): Likewise.
9775         * c-typeck.c (convert_for_assignment): Likewise.
9776         * c-common.h (c_common_unsigned_type): New.
9778 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9780         PR target/32280
9781         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
9782         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
9784 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9786         PR middle-end/32279
9787         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
9788         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
9790 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
9791             Sebastian Pop  <sebpop@gmail.com>
9793         * lambda-code.c (remove_iv): New.
9794         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
9796 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
9798         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
9799         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
9800         * tree-ssa-loop-prefetch.c: Include optabs.h.
9801         (FENCE_FOLLOWING_MOVNT): New macro.
9802         (struct mem_ref): Add independent_p and storent_p fields.
9803         (record_ref): Initalize the new fields.
9804         (gather_memory_references_ref): Return true if the reference
9805         could be analysed.
9806         (gather_memory_references): Check whether all memory accesses
9807         in loop were recorded.
9808         (should_issue_prefetch_p): Return false for nontemporal stores.
9809         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
9810         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
9811         (determine_loop_nest_reuse): Detect independent memory references.
9812         (loop_prefetch_arrays): Call mark_nontemporal_stores.
9813         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
9814         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
9815         * config/i386/i386.h (x86_mfence): Declare.
9816         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
9817         * config/i386/i386.c (x86_mfence): New variable.
9818         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
9820         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
9821         * optabs.c (init_optabs): Initialize storent_optab.
9822         * optabs.h (enum optab_index): Add OTI_storent.
9823         (storent_optab): Declare.
9824         * genopinit.c (optabs): Add initialization for storent_optab.
9825         * tree.h (MOVE_NONTEMPORAL): New macro.
9826         * expr.c (expand_assignment, store_expr, store_constructor_field,
9827         store_constructor, store_field, expand_expr_real_1): Propagate
9828         nontemporality of the expanded store.
9829         (emit_storent_insn): New function.
9830         * expr.h (expand_assignment, store_expr): Declaration changed.
9831         * function.c (assign_parm_setup_reg): Pass false as nontemporality
9832         to expand_assignment.
9833         * stmt.c (expand_asm_expr): Ditto.
9834         * calls.c (initialize_argument_information): Pass false as
9835         nontemporality to store_expr.
9836         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
9837         storentsi): New.
9839 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
9841         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
9842         parameter, use it.
9843         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
9845 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
9847         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
9848         and allow DECL_P here.
9850 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
9852         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
9853         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
9854         track of the size of the expression.
9855         * cfghooks.c (merge_blocks): Remove block from loops structure only
9856         after call of the merge_blocks hook.
9858 2007-06-09  Tom Tromey  <tromey@redhat.com>
9860         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
9861         (deprecated_state): Removed.
9862         (start_decl): Update.
9863         (enum deprecated_states): Moved earlier.
9864         (groktypename): Update.
9865         (push_parm_decl): Likewise.
9866         (grokfield): Likewise.
9867         (start_function): Likewise.
9869 2007-06-09  Ian Lance Taylor  <iant@google.com>
9871         PR tree-optimization/32169
9872         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
9873         CONVERT_EXPR, check whether min and max both converted to an
9874         overflow infinity representation.
9876 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
9878         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
9879         not inserted on the edge.
9881 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
9883         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
9884         instructions if they are supported.
9885         (__divsi3, __umodsi3, __modsi3): Likewise.
9886         (__ashldi3, __ashrdi3, __lshrdi3): New.
9887         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
9889 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
9890             Tony Linthicum <tony.linthicum@amd.com>
9892         * doc/invoke.texi: Add fvect-cost-model flag.
9893         * common.opt (fvect-cost-model): New flag.
9894         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
9895         cost fields in stmt_vec_info struct for STMT.
9896         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
9897         fields in stmt_vec_info struct and access functions for the same.
9898         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
9899         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
9900         load, store and vector to scalar operation.
9901         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
9902         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
9903         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
9904         (TARG_VEC_STORE_COST): Define cost of vector store.
9905         (vect_estimate_min_profitable_iters): Define new function.
9906         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
9907         check to evaluate if loop iterations are less than minimum profitable
9908         iterations determined by cost model or minimum vect loop bound defined
9909         by user, whichever is more conservative.
9910         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
9911         run-time check to evaluate if loop iterations are less than minimum
9912         profitable iterations determined by cost model or minimum vect loop
9913         bound defined by user, whichever is more conservative.
9914         (vect_estimate_min_profitable_iterations): New function to estimate
9915         mimimimum iterartions required for vector version of loop to be
9916         profitable over scalar version.
9917         (vect_model_reduction_cost): New function.
9918         (vect_model_induction_cost): New function.
9919         (vect_model_simple_cost): New function.
9920         (vect_cost_strided_group_size): New function.
9921         (vect_model_store_cost): New function.
9922         (vect_model_load_cost): New function.
9923         (vectorizable_reduction): Call vect_model_reduction_cost during
9924         analysis phase.
9925         (vectorizable_induction): Call vect_model_induction_cost during
9926         analysis phase.
9927         (vectorizable_load): Call vect_model_load_cost during analysis phase.
9928         (vectorizable_store): Call vect_model_store_cost during analysis phase.
9929         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
9930         vectorizable_promotion, vectorizable_demotion): Call
9931         vect_model_simple_cost during analysis phase.
9933 2007-06-08  Simon Baldwin  <simonb@google.com>
9935         * reg-stack.c (get_true_reg): Readability change.  Moved default case
9936         label into direct switch statement scope.
9938 2007-06-08  Simon Baldwin  <simonb@google.com>
9940         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
9941         in gcc_assert() with '==' comparison.
9943 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9945         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
9946         TARGET_ABM handling of x86_popcnt variable.
9948 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9950         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
9951         __builtin_copysignq and __builtin_infq built-in functions.
9953 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9955         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
9956         SSE4.2 section.  Correct built-in function names in SSE4A section.
9958 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9960         PR tree-optimization/32243
9961         * tree-vect-transform.c (vectorizable_type_promotion): Move check
9962         for ncopies after ratio check between nunits_out and nunits_in.
9963         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
9965 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
9967         PR tree-optimization/32224
9968         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
9969         vectorization upon a non GIMPLE_MODIFY_STMT.
9971 2007-06-08  Christian Bruel  <christian.bruel@st.com>
9973         PR target/29953
9974         * config/sh/sh.md (doloop_end): New pattern and splitter.
9975         * loop-iv.c (simple_rhs_p): Check for hardware registers.
9977 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
9979         PR middle-end/32209
9980         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
9981         functions.
9982         (verify_dominators): Do not change dominance tree.
9984 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
9986         * config/sh/constraints.md: New file.
9987         * config/sh/sh.c: Include tm-constrs.h.
9988         (reg_class_from_letter): Remove.
9989         (prepare_cbranch_operands): Use satisfies_constraint_*
9990         function instead of macro.
9991         (andcosts, broken_move, sh_secondary_reload): Likewise.
9992         * config/sh/predicates.md (trapping_target_operand): Likewise.
9993         (and_operand, arith_operand, arith_reg_or_0_operand,
9994         cmp_operand, logical_operand, target_operand,
9995         ua_address_operand, ua_offset, xor_operand): Likewise.
9996         * config/sh/sh.md: Include constraints.md.
9997         (*movsicc_t_false): Use satisfies_constraint_* function
9998         instead of macro.
9999         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
10000         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
10001         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
10002         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
10003         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
10004         (REG_CLASS_FROM_CONSTRAINT): Remove.
10005         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
10006         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
10007         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
10008         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
10009         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
10010         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
10011         function instead of macro.
10012         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
10013         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
10014         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
10015         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
10016         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
10017         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
10018         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
10019         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
10020         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
10021         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
10022         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
10023         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
10024         EXTRA_CONSTRAINT_STR): Likewise.
10025         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
10027 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
10029         * config/i386/darwin.h (STACK_BOUNDARY): Define.
10031 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
10033         PR c++/30759
10034         * c-common.h (flag_cpp0x): Replaced by...
10035         (cxx_dialect): ... this new variable specifying the C++ dialect that
10036         is used.
10037         * c-common.c (flag_cpp0x): Removed.
10038         (cxx_dialect): Defined.
10039         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
10040         cxx_dialect.
10041         * c-opts.c (c_common_post_options): Likewise.
10042         (set_std_cxx98): Set cxx_dialect to cxx98.
10043         (set_std_cxx0x): Set cxx_dialect to cxx0x.
10045 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
10046             Hui-May Chang <hm.chang@apple.com>
10048         * doc/invoke.texi (Darwin Options): Update documentation for
10049         -mmacosx-version-min.
10050         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
10051         * config/darwin-driver.c: New file.
10052         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
10053         * config/t-darwin (darwin-driver.o): New rule.
10055         * config/darwin-c.c (version_as_macro): Ignore low digit.
10057 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
10059         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
10060         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
10061         (CSGNMODE): New mode macro.
10062         (CSGNVMODE): New mode attribute.
10063         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
10064         expander using CSGNMODE mode macro.  Handle TFmode.
10065         (copysign<mode>3_const): Rename from copysignsf3_const and
10066         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
10067         Handle TFmode.
10068         (copysign<mode>3_var): Rename from copysignsf3_var and
10069         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
10070         Handle TFmode.
10071         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
10072         mode macro.  Handle TFmode.
10073         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
10074         (iortf3, *iortf3): Ditto.
10075         (xortf3, *xortf3): Ditto.
10076         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
10077         TFmode and TImode masks.
10078         (ix86_expand_copysign): Expand TFmode copysign insn.
10079         (IX86_BUILTIN_INFQ): New.
10080         (IX86_BUILTIN_FABSQ): Ditto.
10081         (IX86_BUILTIN_COPYSIGNQ): Ditto.
10082         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
10083         [__builtin_fabsq]: Ditto.
10084         [__builtin_copysignq]: Ditto.
10085         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
10086         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
10087         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
10088         ix86_expand_binop_builtin().
10090 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
10092         * config/xtensa/lib1funcs.asm: Clean up whitespace.
10094 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
10096         PR target/31850
10097         * rtl.h (push_to_sequence2): New.
10098         * emit-rtl.c (push_to_sequence2): New.
10099         * function.c (assign_parm_data_all): Add new fields.
10100         (assign_parm_setup_block): Call push_to_sequence2 instead of
10101         push_to_sequence.
10102         (assign_parm_setup_reg): Ditto.
10103         (assign_parm_setup_stack): Ditto.
10104         (assign_parms_unsplit_complex): Ditto.
10105         (assign_parms): Change field name.
10107 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
10109         PR tree-optimization/32220
10110         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
10111         phi node is reached before defining statement.
10113 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10115         PR tree-opt/32231
10116         * tree-vect-transform.c (vectorizable_call): Call update_stmt
10117         after changing the right hand side of the assignment.
10119 2007-06-06  Eric Christopher  <echristo@apple.com>
10121         * config.gcc (i?86-*-darwin*): Remove arch parameter.
10122         (x86_64-*-darwin*): Ditto.
10123         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
10124         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
10126 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
10128         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
10129         coding conventions.
10130         (add_key): Likewise.
10131         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
10132         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
10133         variable names.
10134         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
10135         macros.
10136         (add_cost_one_coalesce): Likewise.
10137         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
10138         variable names. Rename orig to orig_name for consistency.
10139         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
10140         coding conventions.
10141         (cprop_into_successor_phis): Avoid using C++ keywords as variable
10142         names.
10143         (record_equivalences_from_stmt): Likewise.
10144         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
10145         the coding conventions.
10146         (memory_ssa_name_same): Likewise.
10147         (dse_optimize_stmt): Likewise.
10148         (dse_record_phis): Likewise.
10149         (dse_finalize_block): Likewise.
10150         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
10151         keywords as variable names.
10152         (may_move_till): Cast according to the coding conventions.
10153         (force_move_till_expr): Avoid using C++ keywords as variable names.
10154         (force_move_till): Cast according to the coding conventions.
10155         (memref_hash): Likewise.
10156         (memref_eq): Likewise.
10157         (gather_mem_refs_stmt): Likewise.
10158         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
10159         using C++ keywords as variable names.
10160         (idx_find_step): Cast according to the coding conventions.
10161         (idx_record_use): Likewise.
10162         (find_depends): Likewise.
10163         (prepare_decl_rtl): Likewise.
10164         (mbc_entry_hash): Likewise.
10165         (mbc_entry_eq): Likewise.
10166         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
10167         (simplify_replace_tree): Avoid using C++ keywords as variable names.
10168         (idx_infer_loop_bounds): Cast according to the coding conventions.
10169         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
10170         * tree-ssa-math-opts.c (occ_new ): Likwise.
10171         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
10172         macros.
10173         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
10174         variable names.
10175         (add_use_op): Likewise.
10176         (add_vop): Likewise.
10177         (add_vuse_op): Likewise.
10178         (add_vdef_op): Likewise.
10179         (get_expr_operands): Likewise.
10180         (push_stmt_changes): Use type safe memory macros.
10181         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
10182         keywords as variable names.
10183         (conditional_replacement): Likewise.
10184         (minmax_replacement): Likewise.
10185         (abs_replacement): Likewise.
10186         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
10187         coding conventions.
10188         (insert_fake_stores): Avoid using C++ keywords as variable names.
10189         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
10190         conventions.
10191         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
10192         (heapvar_insert): Use type safe memory macros.
10193         (new_var_info): Cast according to the coding conventions.
10194         (new_constraint): Likewise.
10195         (remove_preds_and_fake_succs): Use type safe memory macros.
10196         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
10197         conventions.
10198         (thread_single_edge): Likewise.
10199         (thread_through_loop_header): Likewise.
10201 2007-06-06  Eric Christopher  <echristo@apple.com>
10203         * config/i386/i386.c (override_options): Move handling
10204         of TARGET_SUBTARGET* earlier.
10206 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
10208         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
10209         use %n on printf.
10211 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
10213         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
10214         emited outside of basic block.
10215         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
10216         the created blocks.
10217         * rtl.h (delete_insn_chain): Declaration changed.
10218         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
10219         non-removed insns.
10220         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
10221         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
10222         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
10223         to delete_insn_chain.
10224         (rtl_verify_flow_info_1): Verify that the insns in header and footer
10225         do not have bb field set.
10226         (rtl_verify_flow_info): Verify that insns between basic blocks do not
10227         have bb field set.
10228         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
10229         * cfgcleanup.c (try_optimize_cfg): Ditto.
10231 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
10233         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
10234         (lambda_body_vector_new): Use type safe memory macros.
10235         (lambda_linear_expression_new): Likewise.
10236         (lambda_loopnest_new): Likewise.
10237         (lambda_lattice_new): Likewise.
10238         (replace_uses_equiv_to_x_with_y): Cast according to the coding
10239         conventions. Use type safe memory macros.
10240         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
10241         (lambda_body_vector_s): Likewise.
10242         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
10243         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
10245 2007-06-06  Richard Guenther  <rguenther@suse.de>
10247         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
10248         if we need to schedule cfg_cleanup.
10249         (tree_ssa_forward_propagate_single_use_vars): Do so.
10251 2007-06-06  Ian Lance Taylor  <iant@google.com>
10253         * fold-const.c (merge_ranges): If range_successor or
10254         range_predecessor fail, just return 0.
10256 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
10258         PR tree-optimization/32216
10259         * tree-vectorizer.c (supportable_widening_operation): Determine
10260         signedness of FIX_TRUNC_EXPR from output operand.
10261         (supportable_narrowing_operation): Ditto.
10262         * tree-vect-generic.c (expand_vector_operations_1): Determine
10263         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
10264         from input operand.
10266 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
10268         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
10269         (struct pta): ...from here. Change flags to unsigned to avoid
10270         excessive casting (as it is used as a bit mask).
10271         (override_options): Add casts according to the coding convenventions.
10272         (x86_64_elf_unique_section): Likewise.
10273         (examine_argument): Avoid using C++ keywords as variable names.
10274         (construct_container): Likewise.
10275         (legitimize_pic_address): Likewise.
10276         (get_dllimport_decl): Cast according to the coding conventions. Use
10277         type safe memory macros.
10278         (legitimize_address): Cast according to the coding conventions.
10279         (emit_i387_cw_initialization): Corrected the type of slot to enum
10280         ix86_stack_slot.
10281         (ix86_init_machine_status): Use type safe memory macros.
10282         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
10283         (bdesc_pcmpistr): Likewise.
10284         (bdesc_crc32): Likewise.
10285         (bdesc_sse_3arg): Likewise.
10286         (bdesc_2arg): Likewise.
10287         (bdesc_1arg): Likewise.
10288         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
10289         (ix86_expand_sse_pcmpistr): Likewise.
10290         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
10291         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
10292         int to match the langhook definition.
10293         (ix86_builtin_conversion): Change the type of code to unsigned init to
10294         match the langhook definition.
10295         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
10296         names.
10297         (ix86_preferred_output_reload_class): Likewise.
10298         (ix86_cannot_change_mode_class): Likewise.
10299         (ix86_memory_move_cost): Likewise.
10300         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
10301         avoid excessive casting later on.
10302         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
10304 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
10306         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
10307         as flags setting insn.
10308         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
10310 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
10312         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
10313         (UNSPEC_ROUND): New.
10314         ("sse4_1_round<mode>2"): New insn pattern.
10315         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
10316         SSE4.1 targets.
10317         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
10318         expander using SSEMODEF mode macro.  Expand using
10319         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
10320         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
10321         expander using SSEMODEF mode macro.  Expand using
10322         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
10323         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
10324         expander using SSEMODEF mode macro.  Expand using
10325         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
10326         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
10327         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
10328         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
10329         UNSPEC_ROUNDS.
10331 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
10332             Sebastian Pop  <sebpop@gmail.com>
10334         * lambda.h (build_linear_expr): New.
10335         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
10336         Use build_linear_expr, call fold and force_gimple_operand.
10337         (lambda_loopnest_to_gcc_loopnest): Check that there is
10338         something to insert.
10339         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
10341 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
10343         PR preprocessor/23479
10344         * doc/extend.texi: Document the 0b-prefixed binary integer
10345         constant extension.
10347 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10349         PR tree-optimization/32215
10350         * tree-vectorizer.c (supportable_widening_operation): Return false
10351         for unsupported FIX_TRUNC_EXPR tree code.
10352         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
10354 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
10356         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
10357         register on SPE targets.  Change documentation to reflect
10358         reality.
10359         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
10360         Change FIXED_SCRATCH to 14 and document why we're keeping r14
10361         out of the register allocation pool.
10362         (rs6000_reg_live_or_pic_offset_p): New function.
10363         (rs6000_emit_prologue): Move the actual saving of LR up to free
10364         r0 for holding r11.  Split saving of SPE 64-bit registers into
10365         its own case.  Ensure that offsets will always be in-range for
10366         'evstdd' by using r11 as a scratch register to point at the start
10367         of the SPE save area.  Save r11 if necessary, as it is the static
10368         chain register.
10369         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
10370         into its own case.  Ensure that offsets will always be in-range
10371         for 'evldd' by using r11 as a scratch register to point at the
10372         start of the SPE save area.  Also adjust r11 when restoring
10373         the stack pointer to compensate for pre-loading r11.
10375 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
10377         * cfg.c (init_flow): Use type safe memory macros.
10378         (alloc_block): Likewise.
10379         (unchecked_make_edge): Likewise.
10380         (dump_flow_info): Avoid using C++ keywords as variable names.
10381         (copy_original_table_clear): Cast according to the coding conventions.
10382         (copy_original_table_set): Likewise.
10383         * cfgexpand (label_rtx_for_bb): Likewise.
10384         (expand_gimple_basic_block): Likewise.
10385         * cfghooks.c (dump_bb): Likewise.
10386         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
10387         variable names.
10388         (lv_add_condition_to_bb): Likewise.
10389         * cfglayout (relink_block_chain): Cast according to the coding
10390         conventions.
10391         (fixup_reorder_chain): Likewise.
10392         (fixup_fallthru_exit_predecessor): Likewise.
10393         * cfgloop.c (glb_enum_p): Likewise.
10394         (get_exit_description): Likewise.
10395         (dump_recorded_exit): Likewise.
10396         * cfgloop.h (enum loop_estimation): Move out of struct scope...
10397         (struct loop): ... from here.
10398         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
10399         conventions.
10400         * cfgrtl.c (rtl_create_basic_block): Likewise.
10401         (rtl_split_block): Likewise.
10402         (rtl_dump_bb): Likewise.
10403         (cfg_layout_split_block): Likewise.
10404         (init_rtl_bb_info): Use typesafe memory macros.
10406         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
10407         * graphds.h: Updated all usages of edge to graph_edge.
10408         * graphds.c: Likewise.
10409         * cfgloopanal.c: Likewise.
10411 2007-06-05  Ian Lance Taylor  <iant@google.com>
10413         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
10414         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
10415         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
10416         expression.
10417         (test_for_singularity): Likewise.
10419 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
10421         * config/i386/constraints.md ("Y2"): Replaced by ...
10422         ("Yt"): This.
10423         * config/i386/i386.md: Likewise.
10424         * config/i386/mmx.md: Likewise.
10425         * config/i386/sse.md: Likewise.
10427 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
10429         * config/i386/constraints.md ("z"): Replaced by ...
10430         ("Y0"): This.
10431         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
10432         (sse4_1_blendvps): Likewise.
10433         (sse4_1_pblendvb): Likewise.
10434         (sse4_2_pcmpestr): Likewise.
10435         (sse4_2_pcmpestrm): Likewise.
10436         (sse4_2_pcmpestr_cconly): Likewise.
10437         (sse4_2_pcmpistr): Likewise.
10438         (sse4_2_pcmpistrm): Likewise.
10439         (sse4_2_pcmpistr_cconly): Likewise.
10441 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
10443         * matrix-reorg.c (transform_access_sites): Fix computation.
10444         (transform_allocation_sites): Same.
10446 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10448         * config/i386/i386.c (override_options): Use
10449         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
10451 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10453         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
10454         (nonimm_not_xmm0_operand): Ditto.
10455         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
10456         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
10457         as operand[2] predicate.  Require "z" class XMM register for
10458         operand[3].  Adjust asm template.
10459         ("sse4_1_blendvpd"): Ditto.
10460         ("sse4_1_pblendvb"): Ditto.
10461         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
10462         force op2 into xmm0 register for variable blend instructions.
10464 2007-06-04  Tom Tromey  <tromey@redhat.com>
10466         * c-tree.h (start_enum): Update.
10467         (build_enumerator): Likewise.
10468         * c-decl.c (enum_next_value): Removed.
10469         (enum_overflow): Likewise.
10470         (start_enum): Add c_enum_contents argument.  Don't use globals.
10471         (build_enumerator): Likewise.
10472         * c-tree.h (struct c_enum_contents): New struct.
10474 2007-06-04  Tom Tromey  <tromey@redhat.com>
10476         * c-common.c (c_common_get_alias_set): Fix indentation.
10478 2007-06-04  Ian Lance Taylor  <iant@google.com>
10480         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
10481         to overflow, reduce overflow infinity to regular infinity.
10482         (vrp_var_may_overflow): New static function.
10483         (vrp_visit_phi_node): Check vrp_var_may_overflow.
10485 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
10487         * stor-layout.c (layout_type): Remove duplicate code.
10489 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
10491         PR c/32191
10492         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
10493         before build_common_builtin_nodes ().
10495 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
10497         PR target/31733
10498         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
10500 2007-06-04  Jan Hubicka  <jh@suse.cz>
10502         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
10503         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
10504         instead of _stat version.
10506 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
10508         PR tree-optimization/32194
10509         * tree-predcom.c (determine_offset): Check that both references have
10510         the same type.
10512 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
10514         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
10515         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
10516         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
10517         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
10518         Add argument to iterate_fix_dominators call.
10519         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
10520         * gcse.c (hoist_code): Change domby to vector.
10521         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
10522         Add argument to iterate_fix_dominators call.
10523         * loop-doloop.c (doloop_modify): Changed recount_dominator to
10524         recompute_dominator.
10525         * lambda-code.c (perfect_nestify): Ditto.
10526         * cfgloopanal.c: Include graphds.h.
10527         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
10528         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
10529         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
10530         add_edge call.
10531         * graphds.c: New file.
10532         * graphds.h: New file.
10533         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
10534         (get_dominated_by, get_dominated_by_region): Change return type to
10535         vector.
10536         (verify_dominators): Recompute all dominators and compare the results.
10537         (recount_dominator): Renamed to ...
10538         (recompute_dominator): ... this.  Do not check that the block is
10539         dominated by entry.
10540         (iterate_fix_dominators): Reimplemented.
10541         (prune_bbs_to_update_dominators, root_of_dom_tree,
10542         determine_dominators_for_sons): New functions.
10543         * et-forest.c (et_root): New function.
10544         * et-forest.h (et_root): Declare.
10545         * Makefile.in (graphds.o): Add.
10546         (cfgloopanal.o): Add graphds.h dependency.
10547         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
10548         * basic-block.h (get_dominated_by, get_dominated_by_region,
10549         iterate_fix_dominators): Declaration changed.
10550         (recount_dominator): Renamed to ...
10551         (recompute_dominator): ... this.
10552         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
10553         (thread_through_all_blocks): Do not free dominance info.
10555 2007-06-03  Andreas Schwab  <schwab@suse.de>
10557         * config/m68k/m68k.c (override_options): Don't override
10558         REAL_MODE_FORMAT.
10559         * config/m68k/m68k-modes.def (SF, DF): Define to use
10560         motorola_single_format and motorola_double_format, resp.
10561         * real.c (motorola_single_format): Renamed from
10562         coldfire_single_format.
10563         (motorola_double_format): Renamed from coldfire_double_format.
10564         (encode_ieee_extended): Generate a proper canonical NaN image
10565         respecting canonical_nan_lsbs_set.
10566         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
10567         true.
10568         * real.h: Adjust declarations.
10570 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
10572         PR target/32163
10573         * config/sh/sh.md (symGOT_load): Don't schedule insns when
10574         the symbol is generated with the stack protector.
10576 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
10578         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
10579         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
10580         "interrupt".
10581         * doc/extend.texi (interrupt): Mention m68k.
10583 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
10585         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
10586         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
10587         (ix86_expand_sse_pcmpestr): Do not check operands for
10588         "register_operand", when insn operand predicate is "register_operand".
10589         (ix86_expand_sse_pcmpistr): Ditto.
10591 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
10592             Uros Bizjak  <ubizjak@gmail.com>
10594         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
10595         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
10596         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
10597         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
10598         * config/i386/constraints.md ("z"): New register constraint
10599         for members of SSE_FIRST_REG class.
10600         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
10601         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
10602         SSE_FIRST_REG class.
10603         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
10604         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
10605         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
10606         (IX86_BUILTIN_PCMPESTRM128): Likewise.
10607         (IX86_BUILTIN_PCMPESTRA128): Likewise.
10608         (IX86_BUILTIN_PCMPESTRC128): Likewise.
10609         (IX86_BUILTIN_PCMPESTRO128): Likewise.
10610         (IX86_BUILTIN_PCMPESTRS128): Likewise.
10611         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
10612         (IX86_BUILTIN_PCMPISTRI128): Likewise.
10613         (IX86_BUILTIN_PCMPISTRM128): Likewise.
10614         (IX86_BUILTIN_PCMPISTRA128): Likewise.
10615         (IX86_BUILTIN_PCMPISTRC128): Likewise.
10616         (IX86_BUILTIN_PCMPISTRO128): Likewise.
10617         (IX86_BUILTIN_PCMPISTRS128): Likewise.
10618         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
10619         (struct builtin_description): Change "flag" field to unsigned.
10620         (bdesc_pcmpestr): New builtin description table.
10621         (bdesc_pcmpistr): Likewise.
10622         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
10623         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
10624         Initialize pcmp[ei]str[im] insns for SSE4.2.
10625         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
10626         (ix86_expand_sse_pcmpistr): Likewise.
10627         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
10628         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
10629         (UNSPEC_PCMPISTR): Likewise.
10630         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
10631         (sse4_2_pcmpestri):New isns pattern.
10632         (sse4_2_pcmpestrm): Likewise.
10633         (sse4_2_pcmpestr_cconly): Likewise.
10634         (sse4_2_pcmpistr): New insn patern and splitter.
10635         (sse4_2_pcmpistri):New isns pattern.
10636         (sse4_2_pcmpistrm): Likewise.
10637         (sse4_2_pcmpistr_cconly): Likewise.
10638         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
10639         in SSE4.2.
10641 2007-06-01  David Daney  <ddaney@avtrex.com>
10643         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
10644         LOADGP_ABSOLUTE and not binds_local_p.
10646 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
10648         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
10650 2007-06-01  Ian Lance Taylor  <iant@google.com>
10652         * tree-vrp.c (compare_name_with_value): Always set
10653         used_strict_overflow if we get a result from the variable itself.
10655 2007-06-01  Ian Lance Taylor  <iant@google.com>
10657         PR rtl-optimization/31455
10658         * lower-subreg.c (find_decomposable_subregs): Don't decompose
10659         subregs which have a cast between modes which are not tieable.
10661 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
10663         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
10664         breaks after return statements.
10666 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
10668         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
10669         only after no_new_pseudos.
10671 2007-05-31  Eric Christopher  <echristo@apple.com>
10673         * expr.c (convert_move): Assert that we don't have a BLKmode
10674         operand.
10675         (store_expr): Handle BLKmode moves by calling emit_block_move.
10677 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
10679         * c-typeck.c (build_indirect_ref): Include type in error message.
10680         (build_binary_op): Pass types to binary_op_error.
10681         * c-common.c (binary_op_error): Take two type arguments, print out
10682         types with error.
10683         * c-common.h (binary_op_error): Update prototype.
10685 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
10687         * config/i386/i386.c: Correct coments on -mno-sse4.
10689 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
10691         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
10692         (x86_64-*-*): Likewise.
10693         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
10694         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
10695         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
10696         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
10697         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
10698         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
10699         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
10700         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
10701         (OPTION_MASK_ISA_SSE4): Likewise.
10702         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
10703         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
10704         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
10705         (override_options): Support SSE4.2.
10706         (ix86_build_const_vector): Support SImode and DImode.
10707         (ix86_build_signbit_mask): Likewise.
10708         (ix86_expand_int_vcond): Support V2DImode.
10709         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
10710         (IX86_BUILTIN_CRC32HI): Likewise.
10711         (IX86_BUILTIN_CRC32SI): Likewise.
10712         (IX86_BUILTIN_CRC32DI): Likewise.
10713         (IX86_BUILTIN_PCMPGTQ): Likewise.
10714         (bdesc_crc32): Likewise.
10715         (bdesc_sse_3arg): Likewise.
10716         (ix86_expand_crc32): Likewise.
10717         (ix86_init_mmx_sse_builtins): Support SSE4.2.
10718         (ix86_expand_builtin): Likewise.
10719         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
10720         __SSE4_2__ for -msse4.2.
10721         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
10722         (CRC32MODE): Likewise.
10723         (crc32modesuffix): Likewise.
10724         (crc32modeconstraint): Likewise.
10725         (sse4_2_crc32<mode>): Likewise.
10726         (sse4_2_crc32di): Likewise.
10727         * config/i386/i386.opt (msse4.2): New for SSE4.2.
10728         (msse4): Likewise.
10729         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
10730         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
10731         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
10732         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
10733         (vcondu<mode>): Likewise.
10734         * doc/extend.texi: Document SSE4.2 built-in functions.
10735         * doc/invoke.texi: Document -msse4.2/-msse4.
10737 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
10739         PR tree-optimization/32160
10740         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
10741         variable as gimple reg.
10742         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
10744 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
10746         * gcc.c (main): Don't consider linker options when issuing the
10747         warning about a linker input file not being used.
10749 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10751         * tree-vrp.c (compare_names): Initialize sop.
10753 2007-05-30  Dirk Mueller  <dmueller@suse.de>
10755         * cgraphunit.c (cgraph_analyze_function): Remove
10756         computation of inline parameters.
10758 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
10760         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
10762 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
10764         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
10765         Add vx-common.h.  Include vxworks.h between vx-common.h and
10766         arm/vxworks.h.
10767         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
10768         redefining.
10769         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
10770         (TARGET_ASM_DESTRUCTOR): Likewise.
10771         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
10772         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
10773         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
10774         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
10775         (VXWORKS_ENDIAN_SPEC): Define.
10776         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
10777         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
10778         VXWORKS_* equivalents.
10779         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
10780         (ASM_FILE_START): Delete.
10781         (TARGET_VERSION): Reformat.
10782         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
10783         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
10784         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
10785         (FPBIT, DPBIT): Define.
10786         (fp-bit.c, dp-bit.c): New rules.
10787         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
10788         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
10789         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
10790         * config/arm/arm.h: Include vxworks-dummy.h.
10791         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
10792         Mark with ATTRIBUTE_UNUSED.
10793         (arm_override_options): Do not allow VxWorks RTP PIC to be used
10794         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
10795         make it incompatible with -msingle-pic-base.
10796         (arm_function_ok_for_sibcall): Return false for calls that might
10797         go through a VxWorks PIC PLT entry.
10798         (require_pic_register): New function, split out from...
10799         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
10800         for VxWorks RTPs.
10801         (arm_load_pic_register): Handle the VxWorks RTP initialization
10802         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
10803         (arm_emit_call_insn): New function.
10804         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
10805         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
10806         (pic_offset_arm): New pattern.
10807         (call, call_value): Use arm_emit_call_insn.
10808         (call_internal, call_value_internal): New expanders.
10809         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
10810         VxWorks unless __PIC__.
10812 2007-05-30  Eric Christopher  <echristo@gmail.com>
10814         * genrecog.c: Include regs.h in generated file.
10815         * genemit.c: Ditto. Fix up formatting.
10816         * config/mn10300/constraints.md: New.
10817         * config/mn10300/mn10300.md: Include.
10818         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
10819         Fix up for removed macro.
10820         * config/mn10300/predicates.md (call_address_operand):  Ditto.
10821         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
10822         (CONST_OK_FOR_I): Ditto.
10823         (CONST_OK_FOR_J): Ditto.
10824         (CONST_OK_FOR_K): Ditto.
10825         (CONST_OK_FOR_L): Ditto.
10826         (CONST_OK_FOR_M): Ditto.
10827         (CONST_OK_FOR_N): Ditto.
10828         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
10829         (OK_FOR_Q): Ditto.
10830         (OK_FOR_R): Ditto.
10831         (OK_FOR_T): Ditto.
10832         (EXTRA_CONSTRAINT): Ditto.
10834 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
10836         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
10837         Remove defines.
10838         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
10839         OPTION_MASK_ISA_64BIT.
10840         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
10842 2007-05-30  Richard Guenther  <rguenther@suse.de>
10844         PR middle-end/32152
10845         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
10846         types for comparison.
10847         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
10848         with original typed arguments.
10849         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
10851 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
10853         PR tree-optimization/31769
10854         * except.c (duplicate_eh_regions): Clear prev_try if
10855         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
10857 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
10859         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
10860         * tree-ssa-sink.c (statement_sink_location): Return basic block and
10861         bsi of the location where statements should be inserted.
10862         (sink_code_in_bb): Take bsi from statement_sink_location.
10863         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
10864         instead of bsi_start.
10865         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
10866         bsi_insert_after.
10867         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
10868         (bsi_move_before): Document inconsistency with bsi_move_after.
10869         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
10871 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
10873         * config/i386/i386.h (TARGET_ABM): New define.
10874         (TARGET_POPCNT): Ditto.
10875         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
10876         New temporary defines to redefine from OPTION_ISA_* defines.
10877         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
10878         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
10879         (ix86_isa_flags): New extern int declaration.
10880         (TARGET_SUBTARGET_DEFAULT): New define.
10881         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
10882         (TARGET_SUBTARGET32_DEFAULT): Ditto.
10883         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
10884         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
10885         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
10886         * config/i386/darwin.h: Change TARGET_64BIT define to
10887         OPTION_ISA_64BIT.
10889         * config/i386/i386.opt (m3dnowa): Define as undocumented option
10890         using existing "ix86_isa_flags" varible.
10891         (m32, m64): Use existing "ix86_isa_flags" variable.
10892         (mmmx, m3dnow): Ditto.
10893         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
10894         (mabm): Define as non-negative option using "x86_abm" variable.
10895         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
10897         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
10898         Rewrite feature test bitmap.
10899         (ix86_isa_flags): New initialized global int varible.
10900         (ix86_isa_flags_explicit): New static int variable.
10901         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
10902         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
10903         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
10904         target_flags_explicit.
10905         (override_options): Remove "target_enable" and "target_disable" fields
10906         from "struct ptt". Update processor_target_table accordingly. Remove
10907         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
10908         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
10909         "target_flags" and "ix86_isa_flags_explicit" instead of
10910         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
10911         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
10912         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
10913         to true when either of PTA_POPCNT or PTA_ABM is set in
10914         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
10915         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
10916         processor_alias_table flags entry.  Remove handling of
10917         "target_enable" and "target_disable" fields of processor_target_table.
10918         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
10919         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
10920         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
10921         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
10922         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
10923         "target_flags".
10924         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
10926 2007-05-29  David Daney  <ddaney@avtrex.com>
10928         PR gcc/31975
10929         * config/mips/mips.c (mips_output_mi_thunk): Emit
10930         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
10932 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
10933         * config/i386/i386.c (ix86_function_regparm): Added checking of
10934         ix86_force_align_arg_pointer to determine the number of
10935         register parameters.
10937 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
10939         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
10940         (SET_DR_MISALIGNMENT): New.
10941         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
10942         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
10943         Use SET_DR_MISALIGNMENT.
10944         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
10945         pointer.
10946         * tree-data-ref.c (create_data_ref, compute_all_dependences,
10947         find_loop_nest): Export.
10948         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
10949         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
10950         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
10951         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
10952         New macros.
10953         (struct mem_ref): Add field reuse_distance.
10954         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
10955         Initialize reuse_distance field.
10956         (issue_prefetch_ref): Select temporality of prefetch according to
10957         reuse_distance.
10958         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
10959         self_reuse_distance, determine_loop_nest_reuse): New functions.
10960         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
10961         (tree_ssa_prefetch_arrays): Dump L2 cache size.
10962         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
10963         dependency.
10965 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
10967         * tree-ssa-alias.c: Add aliasing overview.
10969 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
10970             Danny Smith  <dannysmith@users.sourceforge.net>
10972         PR target/29498
10973         * config/i386/t-crtfm: Compile crtfastmath.o with
10974         -minline-all-stringops.
10975         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
10976         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
10978 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10980         * doc/md.texi: Document constraints on HP PA-RISC.
10982         * pa/constraints.md: New file.
10983         * pa.md: Include constraints.md.
10984         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
10985         (integer_store_memory_operand, ldil_cint_p): New functions.
10986         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
10987         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
10988         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
10989         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
10990         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
10992 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
10994         PR c/31339
10995         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
10996         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
10997         case POSTDECREMENT_EXPR>): Return the error_mark_node
10998         if either the real or imaginary parts would an
10999         error_mark_node.
11001 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
11003         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
11004         name when we remove it from a call.
11006 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
11008         * targhooks.c (default_narrow_bitfield): Remove.
11009         * targhooks.h: Remove the prototype for
11010         default_narrow_bitfield.
11012         * langhooks-def.h: Remove the prototype for
11013         hook_get_alias_set_0.
11014         * langhooks.c (hook_get_alias_set_0): Remove.
11016         * global.c (EXECUTE_IF_CONFLICT): Remove.
11018 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11020         PR tree-opt/32100
11021         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
11022         return true when truth_value_p is true and the type
11023         is of signed:1.
11025 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
11027         * doc/install.texi (Prerequisites): We no longer require Autoconf
11028         2.13 for the top-level.
11030 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
11032         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
11033         memory access via x86_expand_vector_move_misalign() only for
11034         TImode values on 32-bit targets.
11036 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
11038         * matrix-reorg.c: New file. Implement matrix flattening and
11039         transposing optimization.
11040         * tree-pass.h: Add matrix reorg pass.
11041         * common.opt: Add fipa-mreorg flag.
11042         * Makefile.in: Add matrix-reorg.c.
11043         * passes.c: Add matrix reorg pass.
11044         * varpool.c (add_new_static_var): New function.
11045         * cgraph.h (add_new_static_var): Declare.
11047 2007-05-27  Eric Christopher  <echristo@apple.com>
11049         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
11050         sp_offset depending on stack size. Save r12 depending
11051         on registers we're saving later.
11052         (rs6000_emit_epilogue): Update sp_offset depending only
11053         on stack size.
11055 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
11057         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
11058         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
11059         * ifcvt.c (if_convert): Ditto.
11060         * tree-ssa-threadupdate.c (thread_block): Ditto.
11061         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
11062         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
11063         verify_loop_closed_ssa): Check number_of_loops instead of
11064         current_loops.
11065         * predict.c (tree_estimate_probability): Ditto.
11066         * tree-if-conv.c (main_tree_if_conversion): Ditto.
11067         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
11068         * modulo-sched.c (sms_schedule): Ditto.
11069         * tree-scalar-evolution.c (scev_const_prop): Ditto.
11070         (scev_finalize): Do not do anything if scev analysis was not
11071         initialized.
11072         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
11073         current_loops == NULL.
11074         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
11075         * loop-init.c (loop_optimizer_init): Do not free current_loops when
11076         there are no loops.
11077         (loop_optimizer_finalize): Assert that loops were analyzed.
11078         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
11079         rtl_doloop): Check number_of_loops instead of current_loops.
11080         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
11081         current_loops == NULL.
11082         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
11083         gate_tree_vectorize tree_linear_transform, check_data_deps,
11084         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
11085         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
11086         Check number_of_loops instead of current_loops.
11087         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
11088         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
11089         free loops if available.
11090         (execute_pre): Do not pass do_fre to fini_pre.
11092 2007-05-27  Tobias Burnus  <burnus@net-b.de>
11094         PR middle-end/32083
11095         * real.c (mpfr_from_real): Fix sign of -Inf.
11097 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
11099         * tree-vect-transform.c (vectorizable_conversion): Initialize
11100         tree_code variables to ERROR_MARK.
11101         (vectorizable_type_demotion): Likewise.
11102         (vectorizable_type_promotion): Likewise.
11104 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
11106         PR target/32065
11107         * config/i386/i386.md (movti): Handle push operands via
11108         ix86_expand_push().
11110 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
11112         * basic-block.h: Remove the prototype for merge_seq_blocks.
11113         * cfgcleanup.c (merge_seq_blocks): Remove.
11115         * tree-flow.h: Remove the prototype for is_aliased_with.
11116         * tree-ssa-alias.c (is_aliased_with): Remove.
11118 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
11120         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
11122         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
11124         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
11125         ix86_expand_sse4_unpack if SSE4.1 is enabled.
11126         (vec_unpacks_hi_v16qi): Likewise.
11127         (vec_unpacku_lo_v16qi): Likewise.
11128         (vec_unpacks_lo_v16qi): Likewise.
11129         (vec_unpacku_hi_v8hi): Likewise.
11130         (vec_unpacks_hi_v8hi): Likewise.
11131         (vec_unpacku_lo_v8hi): Likewise.
11132         (vec_unpacks_lo_v8hi): Likewise.
11133         (vec_unpacku_hi_v4si): Likewise.
11134         (vec_unpacks_hi_v4si): Likewise.
11135         (vec_unpacku_lo_v4si): Likewise.
11136         (vec_unpacks_lo_v4si): Likewise.
11138 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
11140         * c-typeck.c, config/arm/arm.c, config/darwin.c,
11141         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
11142         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
11143         follow spelling conventions in various
11144         warning/error/diagnostic messages.
11146         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
11147         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
11148         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
11149         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
11150         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
11151         * doc/tm.texi: Follow spelling conventions.
11153 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11155         PR tree-opt/32090
11156         * tree-ssa-forwprop.c
11157         (forward_propagate_addr_into_variable_array_index): Remove
11158         the lhs argument.  Use the type of def_rhs instead of lhs.
11159         (forward_propagate_addr_expr_1): Update use of
11160         forward_propagate_addr_into_variable_array_index.
11162 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
11163             Nigel Stephens  <nigel@mips.com>
11165         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
11166         function attributes, "far" being an alias for "long_call".
11167         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
11168         (mips_near_type_p, mips_far_type_p): New.
11169         (mips_comp_type_attributes): New function to check that attributes
11170         attached to a function type are compatible.
11171         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
11172         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
11173         to the target function of the thunk.
11174         (mips_encode_section_info): Check for "near" and "far" function
11175         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
11177         * config/mips/predicates.md (const_call_insn_operand): Test only
11178         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
11180         * doc/extend.texi (Function Attributes): Document MIPS "near" and
11181         "far" attributes.
11183         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
11184         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
11185         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
11186         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
11188 2007-05-25  Eric Christopher  <echristo@apple.com>
11190         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
11191         to x86-darwin configurations.
11192         * config/i386/t-darwin: Add softfp support.
11193         * config/i386/t-darwin64: Ditto.
11194         * config/i386/sfp-machine.h: If mach then don't use
11195         aliasing, emit a stub to call.
11197 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
11199         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
11200         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
11201         tree-predcom.c, tree-ssa-alias-warnings.c,
11202         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
11203         comment typos.  Follow spelling conventions.
11204         * doc/cpp.texi, doc/invoke.texi: Fix typos.
11206 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
11208         PR target/32065
11209         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
11210         constants into memory.  Expand unaligned memory references for
11211         SSE modes via x86_expand_vector_move_misalign() function.
11213 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
11215         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
11216         "memory" attribute for "sseishft" type insn without operands[2].
11218 2007-05-25  Dirk Mueller  <dmueller@suse.de>
11219             Marcus Meissner <meissner@suse.de>
11221         * doc/extend.texi (alloc_size): New attribute.
11222         * c-common.c (handle_alloc_size_attribute): New.
11223         * tree-object-size.c (alloc_object_size): Use alloc_size
11224         attribute, if available.
11226 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
11228         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
11229         with MASK_SSE2.
11230         (__builtin_ia32_vec_ext_v2di): Likewise.
11231         (__builtin_ia32_vec_ext_v4si): Likewise.
11232         (__builtin_ia32_vec_ext_v8hi): Likewise.
11233         (__builtin_ia32_vec_ext_v16qi): Likewise.
11234         (__builtin_ia32_vec_set_v8hi): Likewise.
11236 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
11238         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
11240 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
11242         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
11243         (arm_is_longcall_p): Rename to...
11244         (arm_is_long_call_p): ...this.  Take a single tree argument and
11245         return a bool.
11246         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
11247         (CUMULATIVE_ARGS): Remove call_cookie.
11248         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
11249         (ENCODED_LONG_CALL_ATTR_P): Delete.
11250         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
11251         LONG_CALL_FLAG_CHAR cases.
11252         (ARM_DECLARE_FUNCTION_SIZE): Delete.
11253         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
11254         ARM_DECLARE_FUNCTION_SIZE.
11255         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
11256         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
11257         (arm_encode_call_attribute, current_file_function_operand): Delete.
11258         (arm_function_in_section_p): New function.
11259         (arm_is_longcall_p): Rename to...
11260         (arm_is_long_call_p): ...this.  Take the target function as a single
11261         argument and return a bool.  Do not rely on call cookies.  Check
11262         whether the target symbol is in the same section as the current
11263         function, not just the same compilation unit.
11264         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
11265         (arm_encode_section_info): Don't encode a call type.
11266         * config/arm/arm.md (call, call_value): Update calls to
11267         arm_is_long(_)call_p.  Simplify logic.
11268         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
11269         Update calls to arm_is_long(_)call_p.
11271 2007-05-25  Richard Guenther  <rguenther@suse.de>
11273         PR tree-optimization/31982
11274         * tree-ssa-forwprop.c
11275         (forward_propagate_addr_into_variable_array_index): Handle arrays
11276         with element size one.
11278 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11280         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
11281         (umulsi3_highpart): Likewise.
11283 2007-05-24  Ian Lance Taylor  <iant@google.com>
11285         PR rtl-optimization/32069
11286         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
11287         is NULL.
11289 2007-05-24  Ollie Wild  <aaw@google.com>
11291         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
11292         description.
11294 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
11296         * postreload-gcse.c (reg_changed_after_insn_p): New function.
11297         (oprs_unchanged_p): Use it to check all registers in a REG.
11298         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
11299         (reg_set_between_after_reload_p): Delete.
11300         (reg_used_between_after_reload_p): Likewise.
11301         (reg_set_or_used_since_bb_start): Likewise.
11302         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
11303         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
11304         Use reg_set_between_p instead of reg_set_between_after_reload_p.
11305         * rtlanal.c (reg_set_p): Check whether REG overlaps
11306         regs_invalidated_by_call, rather than just checking the
11307         membership of REGNO (REG).
11309 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
11311         * doc/passes.texi: Document predictive commoning.
11312         * doc/invoke.texi (-fpredictive-commoning): Document.
11313         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
11314         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
11315         adding indices to the generated name.
11316         (schedule_sm): Pass 0 to get_lsm_tmp_name.
11317         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
11318         * tree-pretty-print.c (op_symbol_1): Renamed to ...
11319         (op_symbol_code): ... and exported.
11320         (dump_omp_clause, op_symbol): Use op_symbol_code
11321         instead of op_symbol_1.
11322         * tree-pass.h (pass_predcom): Declare.
11323         * timevar.def (TV_PREDCOM): New timevar.
11324         * tree-ssa-loop.c (run_tree_predictive_commoning,
11325         gate_tree_predictive_commoning, pass_predcom): New.
11326         * tree-data-ref.c (find_data_references_in_loop): Find the
11327         references in dominance order.
11328         (canonicalize_base_object_address): Ensure that the result has
11329         pointer type.
11330         (dr_analyze_innermost): Export.
11331         (create_data_ref): Code to fail for references with invariant
11332         address moved ...
11333         (find_data_references_in_stmt): ... here.
11334         * tree-data-ref.h (dr_analyze_innermost): Declare.
11335         * tree-affine.c: Include tree-gimple.h and hashtab.h.
11336         (aff_combination_find_elt, name_expansion_hash,
11337         name_expansion_eq, tree_to_aff_combination_expand,
11338         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
11339         New functions.
11340         * tree-affine.h (aff_combination_constant_multiple_p,
11341         tree_to_aff_combination_expand): Declare.
11342         * tree-predcom.c: New file.
11343         * common.opt (fpredictive-commoning): New option.
11344         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
11345         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
11346         * Makefile.in (tree-predcom.o): Add.
11347         (tree-affine.o): Add TREE_GIMPLE_H dependency.
11348         * passes.c (init_optimization_passes):  Add dceloop after
11349         copy propagation in loop optimizer.  Add predictive commoning
11350         to loop optimizer passes.
11352 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11354         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
11355         default hook.
11357 2007-05-24  Jan Hubicka  <jh@suse.cz>
11359         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
11360         statistics.
11361         (genheader): Include statistics.h.
11363         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
11364         notes are gone.
11365         * print-rtl.c (flag_dump_unnumbered): Update comments.
11366         (print_rtl): Fix my previous change.
11367         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
11368         specific data.
11370 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
11372         PR middle-end/32018
11373         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
11374         set_loop_copy.
11375         (thread_through_all_blocks): Call initialize_original_copy_tables
11376         and free_original_copy_tables.
11377         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
11378         Use set_loop_copy.
11379         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
11380         * cfghooks.c (duplicate_block): Use get_loop_copy.
11381         * cfg.c: Include cfgloop.h.
11382         (loop_copy): New hash table.
11383         (initialize_original_copy_tables): Initialize loop_copy table.
11384         (free_original_copy_tables): Free loop_copy table.
11385         (copy_original_table_clear, copy_original_table_set,
11386         set_loop_copy, get_loop_copy): New functions.
11387         (set_bb_original, set_bb_copy): Use copy_original_table_set.
11388         * cfgloop.h (struct loop): Remove copy field.
11389         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
11390         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
11392 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11394         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
11395         -msse/-msse2/-msse3.
11397 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11399         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
11400         __builtin_ia32_vec_set_v2di with MASK_64BIT.
11402 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
11404         PR target/27067
11405         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
11406         * targhooks.h (default_mangle_decl_assembler_name): Declare
11407         default hook.
11408         * targhooks.c (default_mangle_decl_assembler_name): Define
11409         default hook.
11410         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
11411         default hook.
11412         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
11413         * langhooks.c (lhd_set_decl_assembler_name): Call
11414         targetm.mangle_decl_assembler_name for names with global scope.
11416         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
11417         default.
11418         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
11419         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
11420         Declare.
11421         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
11422         New. Factored out of i386_pe_encode_section_info.
11423         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
11424         Move check for prior decoration of stdcall
11425         symbols to i386_pe_encode_section_info.
11426         (i386_pe_encode_section_info): Adjust call to
11427         gen_stdcall_or_fastcall_suffix.  Use
11428         i386_pe_maybe_mangle_decl_assembler_name, if needed.
11429         (i386_pe_mangle_decl_assembler_name): New. Wrap
11430         i386_pe_maybe_mangle_decl_assembler_name.
11432 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
11434         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
11435         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
11436         * langhooks.c (get_signed_or_unsigned_type): Don't check for
11437         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
11438         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
11439         TYPE_UNSIGNED.
11441 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
11442             Nigel Stephens  <nigel@mips.com>
11443             Richard Sandiford  <richard@codesourcery.com>
11445         Fix up MIPS16 hard float and add support for complex.
11447         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
11448         (TARGET_SOFT_FLOAT_ABI): New.
11449         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
11450         __mips_soft_float to reflect the ABI in use, not whether the
11451         FPU is directly accessible (e.g., in MIPS16 mode).
11452         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
11453         (UNITS_PER_FPVALUE): Likewise.
11455         * config/mips/mips.c (mips_expand_call): Remove redundant
11456         TARGET_MIPS16 check.
11457         (mips_arg_regno): New.
11458         (function_arg_advance): When setting bits in cum->fp_code for
11459         MIPS16, don't subtract 1 from cum->arg_number, since it is now
11460         zero-based.
11461         (function_arg): Use mips_arg_regno.
11462         (mips_return_mode_in_fpr_p): New.
11463         (mips16_call_stub_mode_suffix): New.
11464         (mips16_cfun_returns_in_fpr_p): New.
11465         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
11466         (mips_output_function_prologue): Test mips16_hard_float, not
11467         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
11468         (mips_expand_epilogue): Call MIPS16 helper routines to copy
11469         return value into a floating-point register.
11470         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
11471         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
11472         (mips16_fp_args): Handle MIPS32r2 ISA which supports
11473         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
11474         word of double arguments from or to the high bits of 64-bit
11475         floating point registers.
11476         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
11477         (mips16_fpret_double): New helper function.
11478         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
11479         support for complex modes.  Fill in DECL_RESULT for stubdecl.
11480         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
11482         * config/mips/mips16.S
11483         (RET, ARG1, ARG2): New.
11484         (MERGE_GPRf, MERGE_GPRt): New.
11485         (DELAYt, DELAYf): New.
11486         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
11487         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
11488         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
11489         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
11490         (SFOP): Renamed to...
11491         (OPSF3): This, and macro-ified.  Updated all uses.
11492         (SFOP2): Renamed to...
11493         (OPSF2): This, and macro-ified.  Updated all uses.
11494         (SFCMP): Renamed to...
11495         (CMPSF): This, and macro-ified.  Updated all uses.
11496         (SFREVCMP): Renamed to...
11497         (REVCMPSF): This, and macro-ified.  Updated all uses.
11498         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
11499         (LDDBL1, LDDBL2, RETDBL): Deleted.
11500         (DFOP): Renamed to...
11501         (OPDF3): This, and macro-ified.  Updated all uses.
11502         (DFOP2): Renamed to...
11503         (OPDF2): This, and macro-ified.  Updated all uses.
11504         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
11505         (DFCMP): Renamed to...
11506         (CMPDF): This, and macro-ified.  Updated all uses.
11507         (DFREVCMP): Renamed to...
11508         (REVCMPDF): This, and macro-ified.  Updated all uses.
11509         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
11510         (RET_FUNCTION): New.
11511         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
11512         (__mips16_ret_sc, __mips16_ret_dc): New.
11513         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
11514         STUB_ARGS_6, STUB_ARGS_10): New.
11515         (CALL_STUB_NO_RET): New.
11516         (__mips16_call_stub_1): Macro-ified.
11517         (__mips16_call_stub_5): Macro-ified.
11518         (__mips16_call_stub_2): Macro-ified.
11519         (__mips16_call_stub_6): Macro-ified.
11520         (__mips16_call_stub_9): Macro-ified.
11521         (__mips16_call_stub_10): Macro-ified.
11522         (CALL_STUB_RET): New.
11523         (__mips16_call_stub_sf_0): Macro-ified.
11524         (__mips16_call_stub_sf_1): Macro-ified.
11525         (__mips16_call_stub_sf_5): Macro-ified.
11526         (__mips16_call_stub_sf_2): Macro-ified.
11527         (__mips16_call_stub_sf_6): Macro-ified.
11528         (__mips16_call_stub_sf_9): Macro-ified.
11529         (__mips16_call_stub_sf_10): Macro-ified.
11530         (__mips16_call_stub_df_0): Macro-ified.
11531         (__mips16_call_stub_df_1): Macro-ified.
11532         (__mips16_call_stub_df_5): Macro-ified.
11533         (__mips16_call_stub_df_2): Macro-ified.
11534         (__mips16_call_stub_df_6): Macro-ified.
11535         (__mips16_call_stub_df_9): Macro-ified.
11536         (__mips16_call_stub_df_10): Macro-ified.
11537         (__mips16_call_stub_sc_0): New.
11538         (__mips16_call_stub_sc_1): New.
11539         (__mips16_call_stub_sc_5): New.
11540         (__mips16_call_stub_sc_2): New.
11541         (__mips16_call_stub_sc_6): New.
11542         (__mips16_call_stub_sc_9): New.
11543         (__mips16_call_stub_sc_10): New.
11544         (__mips16_call_stub_dc_0): New.
11545         (__mips16_call_stub_dc_1): New.
11546         (__mips16_call_stub_dc_5): New.
11547         (__mips16_call_stub_dc_2): New.
11548         (__mips16_call_stub_dc_6): New.
11549         (__mips16_call_stub_dc_9): New.
11550         (__mips16_call_stub_dc_10): New.
11552         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
11553         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
11554         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
11556 2007-05-23  Ian Lance Taylor  <iant@google.com>
11558         * doc/invoke.texi (Invoking GCC): Document that the order of the
11559         -l option matters.
11561 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
11563         PR target/30987
11564         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
11565         * config/score/predicate.md (const_pow2, const_npow2): Remove.
11566         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
11567         undef.
11569         PR target/30474
11570         * config/score/score.c (score_print_operand): Make sure that only
11571         lower bits are used.
11573 2007-05-22  Ian Lance Taylor  <iant@google.com>
11575         * tree-vrp.c (avoid_overflow_infinity): New static function,
11576         broken out of set_value_range_to_value.
11577         (set_value_range_to_value): Call avoid_overflow_infinity.
11578         (extract_range_from_assert): Likewise.
11580 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11582         PR middle-end/31095
11583          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
11584         change the type before looking for a COMPOUND_EXPR.
11586 2007-05-22  Ian Lance Taylor  <iant@google.com>
11588         * lower-subreg.c (decompose_multiword_subregs): If we change an
11589         insn, call remove_retval_note on it.
11591 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
11593         * regs.h (end_hard_regno): New function.
11594         (END_HARD_REGNO, END_REGNO): New macros.
11595         (add_to_hard_reg_set): New function.
11596         (remove_from_hard_reg_set): Likewise.
11597         (in_hard_reg_set_p): Likewise.
11598         (overlaps_hard_reg_set_p): Likewise.
11599         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
11600         (note_btr_set): Use END_HARD_REGNO.
11601         * caller-save.c (setup_save_areas): Use end_hard_regno.
11602         (mark_set_regs): Use END_HARD_REGNO.
11603         (add_stored_regs): Use end_hard_regno.
11604         (mark_referenced_regs): Use add_to_hard_reg_set.
11605         * combine.c (update_table_tick): Use END_REGNO.
11606         (record_value_for_reg): Likewise.
11607         (record_dead_and_set_regs): Likewise.
11608         (get_last_value_validate): Likewise.
11609         (use_crosses_set_p): Likewise.
11610         (reg_dead_at_p_1): Likewise.
11611         (reg_dead_at_p): Likewise.
11612         (mark_used_regs_combine): Use add_to_hard_reg_set.
11613         (move_deaths): Use END_HARD_REGNO.
11614         (reg_bitfield_target_p): Use end_hard_regno.
11615         (distribute_notes): Use END_HARD_REGNO.
11616         * cse.c (mention_regs): Use END_REGNO.
11617         (insert): Use add_to_hard_reg_set.
11618         (invalidate): Use END_HARD_REGNO.
11619         (invalidate_for_call): Likewise.
11620         (exp_equiv_p): Use END_REGNO.
11621         (cse_insn): Likewise.
11622         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
11623         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
11624         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
11625         * function.c (keep_stack_depressed): Use end_hard_regno.
11626         * global.c (global_alloc): Use end_hard_regno.
11627         (global_conflicts): Use add_to_hard_reg_set instead of
11628         mark_reg_live_nc.
11629         (find_reg): Likewise.
11630         (mark_reg_store): Likewise.
11631         (mark_reg_conflicts): Likewise.
11632         (mark_reg_death): Use remove_from_hard_reg_set.
11633         (mark_reg_live_nc): Delete.
11634         (set_preference): Use end_hard_regno.
11635         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
11636         remove_from_hard_reg_set.
11637         (post_mark_life): Use add_to_hard_reg_set.
11638         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
11639         (reg_becomes_live): Use add_to_hard_reg_set.
11640         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
11641         (peep2_find_free_register): Use add_to_hard_reg_set.
11642         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
11643         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
11644         * regrename.c (note_sets): Use add_to_hard_reg_set.
11645         (clear_dead_regs): Use remove_from_hard_reg_set.
11646         (regrename_optimize): Use add_to_hard_reg_set.
11647         (find_oldest_value_reg): Use in_hard_reg_set_p.
11648         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
11649         (hard_reg_set_here_p): Use end_hard_regno.
11650         (decompose): Likewise.
11651         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
11652         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
11653         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
11654         (mark_home_live): Use end_hard_regno.
11655         (spill_hard_reg): Likewise.
11656         (clear_reload_reg_in_use): Likewise.
11657         * reorg.c (delete_prior_computation): Use END_REGNO.
11658         * resource.c (update_live_status): Use END_HARD_REGNO.
11659         (mark_referenced_resources): Use add_to_hard_reg_set.
11660         (mark_set_resources): Likewise.
11661         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
11662         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
11663         (reg_overlap_mentioned_p): Likewise.
11664         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
11665         (covers_regno_no_parallel_p): Use END_REGNO.
11666         (find_regno_note): Likewise.
11667         (find_reg_fusage): Use END_HARD_REGNO.
11668         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
11669         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
11671 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
11673         * mode-switching.c (reg_dies): Change type of second argument to
11674         "HARD_REG_SET *".
11675         (optimize_mode_switching): Update accordingly.
11677 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
11679         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
11680         in favor of...
11681         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
11682         (hard_reg_set_empty_p): ...these new functions.
11683         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
11684         GO_IF_HARD_REG_SUBSET.
11685         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
11686         instead of GO_IF_HARD_REG_EQUAL.
11687         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
11688         instead of GO_IF_HARD_REG_EQUAL.
11689         * global.c (find_reg): Use hard_reg_set_empty_p instead of
11690         GO_IF_HARD_REG_SUBSET.
11691         (modify_reg_pav): Use hard_reg_set_empty_p instead of
11692         GO_IF_HARD_REG_EQUAL.
11693         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
11694         of GO_IF_HARD_REG_SUBSET.
11695         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
11696         instead of GO_IF_HARD_REG_EQUAL.
11697         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
11698         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
11699         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
11700         of GO_IF_HARD_REG_SUBSET,
11701         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
11702         GO_IF_HARD_REG_SUBSET.
11703         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
11704         instead of GO_IF_HARD_REG_EQUAL.
11705         * config/sh/sh.c (push_regs, calc_live_regs): Use
11706         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
11707         (hard_regs_intersect_p): Delete.
11709 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
11711         * doc/sourcebuild.texi (Test Directives) Add dg-message.
11713 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
11714             Richard Henderson  <rth@redhat.com>
11716         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
11717         extra_headers.
11718         (x86_64-*-*): Likewise.
11720         * i386/i386-modes.def (V2QI): New.
11722         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
11723         SSE4A.
11724         (override_options): Support SSE4.1.
11725         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
11726         (IX86_BUILTIN_BLENDPS): Likewise.
11727         (IX86_BUILTIN_BLENDVPD): Likewise.
11728         (IX86_BUILTIN_BLENDVPS): Likewise.
11729         (IX86_BUILTIN_PBLENDVB128): Likewise.
11730         (IX86_BUILTIN_PBLENDW128): Likewise.
11731         (IX86_BUILTIN_DPPD): Likewise.
11732         (IX86_BUILTIN_DPPS): Likewise.
11733         (IX86_BUILTIN_INSERTPS128): Likewise.
11734         (IX86_BUILTIN_MOVNTDQA): Likewise.
11735         (IX86_BUILTIN_MPSADBW128): Likewise.
11736         (IX86_BUILTIN_PACKUSDW128): Likewise.
11737         (IX86_BUILTIN_PCMPEQQ): Likewise.
11738         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
11739         (IX86_BUILTIN_PMAXSB128): Likewise.
11740         (IX86_BUILTIN_PMAXSD128): Likewise.
11741         (IX86_BUILTIN_PMAXUD128): Likewise.
11742         (IX86_BUILTIN_PMAXUW128): Likewise.
11743         (IX86_BUILTIN_PMINSB128): Likewise.
11744         (IX86_BUILTIN_PMINSD128): Likewise.
11745         (IX86_BUILTIN_PMINUD128): Likewise.
11746         (IX86_BUILTIN_PMINUW128): Likewise.
11747         (IX86_BUILTIN_PMOVSXBW128): Likewise.
11748         (IX86_BUILTIN_PMOVSXBD128): Likewise.
11749         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
11750         (IX86_BUILTIN_PMOVSXWD128): Likewise.
11751         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
11752         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
11753         (IX86_BUILTIN_PMOVZXBW128): Likewise.
11754         (IX86_BUILTIN_PMOVZXBD128): Likewise.
11755         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
11756         (IX86_BUILTIN_PMOVZXWD128): Likewise.
11757         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
11758         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
11759         (IX86_BUILTIN_PMULDQ128): Likewise.
11760         (IX86_BUILTIN_PMULLD128): Likewise.
11761         (IX86_BUILTIN_ROUNDPD): Likewise.
11762         (IX86_BUILTIN_ROUNDPS): Likewise.
11763         (IX86_BUILTIN_ROUNDSD): Likewise.
11764         (IX86_BUILTIN_ROUNDSS): Likewise.
11765         (IX86_BUILTIN_PTESTZ): Likewise.
11766         (IX86_BUILTIN_PTESTC): Likewise.
11767         (IX86_BUILTIN_PTESTNZC): Likewise.
11768         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
11769         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
11770         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
11771         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
11772         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
11773         (bdesc_ptest): New.
11774         (bdesc_sse_3arg): Likewise.
11775         (bdesc_2arg): Likewise.
11776         (bdesc_1arg): Likewise.
11777         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
11778         with 3 args.
11779         (ix86_expand_sse_4_operands_builtin): New.
11780         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
11781         smaller than 8 bits as the 2nd arg.
11782         (ix86_expand_sse_ptest): New.
11783         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
11784         (ix86_expand_vector_set): Support SSE4.1.
11785         (ix86_expand_vector_extract): Likewise.
11787         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
11788         __SSE4_1__ for -msse4.1.
11790         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
11791         (UNSPEC_INSERTPS): Likewise.
11792         (UNSPEC_DP): Likewise.
11793         (UNSPEC_MOVNTDQA): Likewise.
11794         (UNSPEC_MPSADBW): Likewise.
11795         (UNSPEC_PHMINPOSUW): Likewise.
11796         (UNSPEC_PTEST): Likewise.
11797         (UNSPEC_ROUNDP): Likewise.
11798         (UNSPEC_ROUNDS): Likewise.
11800         * config/i386/i386.opt (msse4.1): New for SSE4.1.
11802         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
11803         (const_pow2_1_to_32768_operand): Likewise.
11805         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
11806         file.
11808         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
11809         SSE4.1.
11810         (sse4_1_insertps): Likewise.
11811         (*sse4_1_extractps): Likewise.
11812         (sse4_1_ptest): Likewise.
11813         (sse4_1_mulv2siv2di3): Likewise.
11814         (*sse4_1_mulv4si3): Likewise.
11815         (*sse4_1_smax<mode>3): Likewise.
11816         (*sse4_1_umax<mode>3): Likewise.
11817         (*sse4_1_smin<mode>3): Likewise.
11818         (*sse4_1_umin<mode>3): Likewise.
11819         (sse4_1_eqv2di3): Likewise.
11820         (*sse4_1_pinsrb): Likewise.
11821         (*sse4_1_pinsrd): Likewise.
11822         (*sse4_1_pinsrq): Likewise.
11823         (*sse4_1_pextrb): Likewise.
11824         (*sse4_1_pextrb_memory): Likewise.
11825         (*sse4_1_pextrw_memory): Likewise.
11826         (*sse4_1_pextrq): Likewise.
11827         (sse4_1_blendpd): Likewise.
11828         (sse4_1_blendps): Likewise.
11829         (sse4_1_blendvpd): Likewise.
11830         (sse4_1_blendvps): Likewise.
11831         (sse4_1_dppd): Likewise.
11832         (sse4_1_dpps): Likewise.
11833         (sse4_1_movntdqa): Likewise.
11834         (sse4_1_mpsadbw): Likewise.
11835         (sse4_1_packusdw): Likewise.
11836         (sse4_1_pblendvb): Likewise.
11837         (sse4_1_pblendw): Likewise.
11838         (sse4_1_phminposuw): Likewise.
11839         (sse4_1_extendv8qiv8hi2): Likewise.
11840         (*sse4_1_extendv8qiv8hi2): Likewise.
11841         (sse4_1_extendv4qiv4si2): Likewise.
11842         (*sse4_1_extendv4qiv4si2): Likewise.
11843         (sse4_1_extendv2qiv2di2): Likewise.
11844         (*sse4_1_extendv2qiv2di2): Likewise.
11845         (sse4_1_extendv4hiv4si2): Likewise.
11846         (*sse4_1_extendv4hiv4si2): Likewise.
11847         (sse4_1_extendv2hiv2di2): Likewise.
11848         (*sse4_1_extendv2hiv2di2): Likewise.
11849         (sse4_1_extendv2siv2di2): Likewise.
11850         (*sse4_1_extendv2siv2di2): Likewise.
11851         (sse4_1_zero_extendv8qiv8hi2): Likewise.
11852         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
11853         (sse4_1_zero_extendv4qiv4si2): Likewise.
11854         (*sse4_1_zero_extendv4qiv4si2): Likewise.
11855         (sse4_1_zero_extendv2qiv2di2): Likewise.
11856         (*sse4_1_zero_extendv2qiv2di2): Likewise.
11857         (sse4_1_zero_extendv4hiv4si2): Likewise.
11858         (*sse4_1_zero_extendv4hiv4si2): Likewise.
11859         (sse4_1_zero_extendv2hiv2di2): Likewise.
11860         (*sse4_1_zero_extendv2hiv2di2): Likewise.
11861         (sse4_1_zero_extendv2siv2di2): Likewise.
11862         (*sse4_1_zero_extendv2siv2di2): Likewise.
11863         (sse4_1_roundpd): Likewise.
11864         (sse4_1_roundps): Likewise.
11865         (sse4_1_roundsd): Likewise.
11866         (sse4_1_roundss): Likewise.
11867         (mulv4si3): Don't expand for SSE4.1.
11868         (smax<mode>3): Likewise.
11869         (umaxv4si3): Likewise.
11870         (uminv16qi3): Likewise.
11871         (umin<mode>3): Likewise.
11872         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
11874         * doc/extend.texi: Document SSE4.1 built-in functions.
11876         * doc/invoke.texi: Document -msse4.1.
11878 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
11880         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
11881         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
11882         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
11883         (ASM_SPEC): Add asm_pcrel_spec.
11884         (EXTRA_SPECS): Add asm_pcrel_spec.
11886 2007-05-21  David Daney  <ddaney@avtrex.com>
11888         * doc/install.texi (Building a cross compiler): Add requirements
11889         for Java cross compiler.
11891 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11893         PR middle-end/31995
11894         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
11895         Add loopno argument.  Use evolution_function_is_invariant_rec_p
11896         instead of evolution_function_is_constant_p.
11897         Update calls to evolution_function_is_affine_multivariate_p.
11898         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
11899         Add loopno argument.
11900         * tree-scalar-evolution.c (gather_chrec_stats): Call
11901         evolution_function_is_affine_multivariate_p with a loop
11902         number of 0.
11903         * tree-data-ref.c (analyze_miv_subscript): Likewise.
11904         (analyze_overlapping_iterations): Likewise.
11905         (access_functions_are_affine_or_constant_p): Likewise.
11906         (build_classic_dist_vector_1): If the access functions
11907         are equal, don't do anything.
11909 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
11910             Paolo Carlini  <pcarlini@suse.de>
11911             Uros Bizjak  <ubizjak@gmail.com>
11913         * c-cppbuiltin.c (c_cpp_builtins): Define
11914         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
11915         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
11916         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
11917         * doc/cpp.texi ([Standard Predefined Macros]): Document.
11919 2007-05-21  Mike Stump  <mrs@apple.com>
11921         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
11922         handling as well.
11923         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
11925 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
11927         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
11928         implementation if __OPTIMIZE__ is not defined.
11929         (_mm_alignr_pi8): Ditto.
11930         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
11931         (_mm_inserti_si64): Ditto.
11932         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
11933         (_mm_slli_epi16): Ditto.
11934         (_mm_slli_epi32): Ditto.
11935         (_mm_slli_epi64): Ditto.
11936         (_mm_srai_epi16): Ditto.
11937         (_mm_srai_epi32): Ditto.
11938         (_mm_srli_si128): Ditto.
11939         (_mm_slli_si128): Ditto.
11940         (_mm_srli_epi16): Ditto.
11941         (_mm_srli_epi32): Ditto.
11942         (_mm_srli_epi64): Ditto.
11943         (_mm_extract_epi16): Ditto.
11944         (_mm_insert_epi16): Ditto.
11945         (_mm_shufflehi_epi16): Ditto.
11946         (_mm_shufflelo_epi16): Ditto.
11947         (_mm_shuffle_epi32): Ditto.
11948         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
11949         (_m_pextrw): Ditto.
11950         (_mm_insert_pi16): Ditto.
11951         (_m_pinsrw): Ditto.
11952         (_mm_shuffle_pi16): Ditto.
11953         (_m_pshufw): Ditto.
11954         (_mm_shufle_ps): Ditto.
11955         (_mm_prefetch): Ditto.
11957 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
11959         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
11960         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
11961         * real.c (encode_i370_single, decode_i370_single,
11962         encode_i370_double, decode_i370_double): Functions removed.
11963         (i370_single_format, i370_double_format): Initializations removed.
11964         (real_maxval, round_for_format, exact_real_truncate, significand_size):
11965         Consider the log2_b field to always be one.
11966         (ieee_single_format, mips_single_format, coldfire_single_format,
11967         ieee_double_format, mips_double_format, coldfire_double_format,
11968         ieee_extended_motorola_format, ieee_extended_intel_96_format,
11969         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
11970         ibm_extended_format, mips_extended_format, ieee_quad_format,
11971         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
11972         decimal_single_format, decimal_double_format, decimal_quad_format,
11973         c4x_single_format, c4x_extended_format, real_internal_format): Remove
11974         initialization of log2_b.
11975         * real.h (i370_single_format, i370_double_format): Declarations
11976         removed.
11977         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
11978         field to always be one.
11980 2007-05-21  Andreas Schwab  <schwab@suse.de>
11982         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
11983         NOTE_INSN_BASIC_BLOCK_P.
11984         (process_for_unwind_directive): Likewise.
11986 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
11988         * builtins.c (expand_builtin_setjmp_setup): Update comment.
11989         * function.h (struct function): Move va_list_gpr_size,
11990         va_list_fpr_size, function_frequency to front of bitfields.  Add
11991         calls_unwind_init.
11992         (current_function_calls_unwind_init): New.
11993         * except.c (expand_builtin_unwind_init): Set
11994         current_function_calls_unwind_init not
11995         current_function_has_nonlocal_label.
11996         * reload1.c (has_nonexceptional_receiver): New.
11997         (reload): Use it and current_function_calls_unwind_init to
11998         determine whether call-saved regs must be saved.
12000 2007-05-20  Jan Hubicka  <jh@suse.cz>
12002         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
12003         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
12004         * ddg.c (create_ddg): LIkewise.
12005         * final.c (final): Remove hunk moving line number notes around since
12006         they are no longer present at this stage.
12007         (final_scan_insn): Use NOTE_KIND instead of
12008         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
12009         (output_asm_label): Likewise.
12010         * reorg.c (dbr_schedule): Likewise.
12011         * haifa-sched.c (unlink_other_notes): Likewise.
12012         * mode-switching.c (optimize_mode_switching): Likewise.
12013         * graph.c (start_bb): Likewise.
12014         * rtl.def (NOTE): Update description.
12015         * jump.c (squeeze_notes): Delete.
12016         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
12017         NOTE_INSN_BASIC_BLOCK_P when possible.
12018         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
12019         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
12020         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
12021         (dwarf2out_var_location): Likewise.
12022         * cfgbuild.c (make_edges): Likewise.
12023         (find_basic_blocks_1): Likewise.
12024         * function.c (reorder_blocks_1): Likewise.
12025         (epilogue_done): Likewise.
12026         (reposition_prologue_and_epilogue_notes): Likewise.
12027         * print-rtl.c (print_rtx): Likewise; drop code for printing
12028         line number notes.
12029         (print_rtl): Likewise.
12030         (print_rtl_single): Likewise.
12031         * gcse.c (insert_insn_start_bb): Likewise.
12032         * alias.c (init_alias_analysis): Likewise.
12033         * calls.c (fixup_tail_calls): Likewise.
12034         * except.c (sjlj_emit_function_enter): Likewise.
12035         * emit-rtl.c (add_insn_after): Likeiwse.
12036         (emit_label_before): Likewise.
12037         (emit_label_after): Likewise.
12038         (emit_note_before, emit_note_after, emit_note): Update
12039         parameter to be enum insn_note; do not deal with source
12040         files.
12041         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
12042         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
12043         when possible.
12044         (merge_blocks_move_successor_nojumps): Simplify now when
12045         we don't have BLOCK notes.
12046         (try_optimize_cfg): Likewise.
12047         * cfglayout.c (skip_insns_after_block): Likewise.
12048         (record_effective_endpoints): Likewise.
12049         (duplicate_insn_chain): Likewise.
12050         * varasm.c (output_constant_pool_1): Likewise.
12051         * sched-deps.c (sched_analyze): Likewise.
12052         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
12053         Exterminate.
12054         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
12055         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
12056         (SET_INSN_DELETED): Simplify.
12057         (NOTE_LINE_NUMBER): Exterminate.
12058         (NOTE_LINE_KIND): New.
12059         (NOTE_INSN_BASIC_BLOCK_P): Update.
12060         (enum insn_note): Simplify.
12061         (GET_NOTE_INSN_NAME) Simplify.
12062         (emit_note_before, emit_note_after, emit_note): Update prototype.
12063         (squeeze_notes): Remove.
12064         * sched-int.h (NOTE_NOT_BB_P): Update.
12065         * resource.c (mark_target_live_regs): Update.
12066         * sched-rgn.c (debug_dependencies): Update.
12067         * sched-vis.c (print_insn): Update.
12068         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
12069         * config/i386/i386.c (ix86_output_function_epilogue): Update.
12070         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
12071         (TARGET_ADJUST_UNROLL_MAX): Likewise.
12072         (split_branches): Update.
12073         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
12074         4.0.0.
12075         (sh_adjust_unroll_max): Exterminate.
12076         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
12077         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
12078         (m68hc11_reorg): Likewise.
12079         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
12080         (emit_predicate_relation_info): Update.
12081         (process_for_unwind_directive): Update.
12082         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
12083         (output_call): Update.
12084         * config/pa/pa.c (output_lbranch): Update.
12085         (output_millicode_call): Update.
12086         (output_call): Update.
12087         (pa_combine_instructions): Update.
12088         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
12089         * config/bfin/bfin.c (gen_one_bundle): Update.
12090         * cfgrtl.c (can_delete_note_p): Update.
12091         (delete_insn): Update.
12092         (rtl_merge_blocks): Update.
12093         (commit_one_edge_insertion): Update.
12094         (rtl_verify_flow_info): Update.
12095         * stmt.c (expand_case): Do not call squeeze_notes.
12097 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12099         PR middle-end/7651
12100         PR c++/11856
12101         PR c/12963
12102         PR c/23587
12103         PR other/29694
12104         * c.opt (Wtype-limits): New.
12105         * doc/invoke.texi (Wtype-limits): Document it.
12106         (Wextra): Enabled by -Wextra.
12107         * c-opts.c (c_common_post_options): Enabled by -Wextra.
12108         * c-common.c (shorten_compare): Warn with Wtype-limits.
12110 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
12112         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
12113         inlined function, not as a macro.
12114         (_mm_alignr_pi8): Ditto.
12115         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
12116         (_mm_inserti_si64): Ditto.
12117         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
12118         (_mm_extract_epi16): Ditto.
12119         (_mm_insert_epi16): Ditto.
12120         (_mm_shufflehi_epi16): Ditto.
12121         (_mm_shufflelo_epi16): Ditto.
12122         (_mm_shuffle_epi32): Ditto.
12123         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
12124         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
12125         all functions.
12126         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
12127         float constant.
12128         (_m_to_float): Use C89 compatible assignment.
12130 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
12132         PR target/32007
12133         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
12135 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12137         PR middle-end/7651
12138         * doc/invoke.texi (Wreturn-type): Complete description.
12139         (Wextra): Delete item about return-type warning.
12140         * c-decl.c: Delete redundant Wextra warning.
12142 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
12144         PR target/31585
12145         * config/i386/pmmintrin.h: Do not include xmmintrin.h
12146         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
12147         inlined function, not as a macro.
12148         (_mm_prefetch): Ditto.
12149         (_m_pextrw): Ditto.
12150         (_mm_insert_pi16): Ditto.
12151         (_m_pinsrw): Ditto.
12152         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
12153         (_m_pshufw): Ditto. Add const to __N argument.
12154         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
12155         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
12156         (_mm_slli_epi32): Ditto.
12157         (_mm_srli_si128): Implement as always inlined function, not as a
12158         macro.  Add __inline to function declaration.
12159         (_mm_slli_si128): Ditto.
12161 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
12163         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
12164         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
12165         New constants.
12166         (struct fenv): New structure.
12167         (FP_HANDLE_EXCEPTIONS): New define.
12168         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
12169         (_FP_DECL_EXP): New define.
12170         (FP_INIT_ROUNDMODE): New define.
12171         (FP_ROUNDMODE): New define.
12173 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12175         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
12176         (Wconversion): Update description.
12177         (Wconversion-sign): New.
12178         * c.opt (Wconversion-sign): New.
12179         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
12180         means disabled for C++. Otherwise, take the status of Wconversion.
12181         * c-common.c (conversion_warning): Warn with either Wconversion or
12182         Wconversion-sign.
12183         (warnings_for_convert_and_check): Conditions are already checked by
12184         conversion_warning.
12185         (convert_and_check): Don't check warnings if the conversion failed.
12187 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
12188            Anatoly Sokolov <aesok@dol.ru>
12190         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
12191         avr_epilogue_uses) : Add declaration.
12192         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
12193         * config/avr/constraints.md (R): New constraint.
12194         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
12195         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
12196         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
12197         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
12198         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
12199         call_prologue_saves, epilogue_restores, return_from_epilogue,
12200         return_from_main_epilogue, return_from_interrupt_epilogue,
12201         return_from_naked_epilogue, prologue, epilogue): New patterns.
12202         (jump): Handle symbol reference.
12203         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
12204         avr_output_function_prologue, avr_output_function_epilogue): Remove
12205         functions.
12206         (avr_init_machine_status, expand_prologue, expand_epilogue,
12207         avr_asm_function_end_prologue, avr_epilogue_uses,
12208         avr_asm_function_begin_epilogue): New functions.
12209         (prologue_size, epilogue_size, jump_tables_size): Remove global
12210         variables.
12211         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
12212         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
12213         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
12214         (avr_override_options): Initialise init_machine_status.
12215         (output_movhi): Handle all stack pointer loads.
12216         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
12217         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
12218         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
12219         (EPILOGUE_USES) Redefine.
12220         (machine_function) Declare.
12222 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
12224         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
12225         Use a single return statement.
12227 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12229         PR middle-end/30250
12230         * builtins.c (do_mpfr_lgamma_r): New.
12231         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
12232         * tree.h (CASE_FLT_FN_REENT): New.
12234 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
12236         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
12237         (output_die): Use 'unsigned long' with %x.
12238         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
12239         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
12240         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
12242         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
12244 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
12246         PR target/31989
12247         PR target/31681
12248         PR target/31666
12249         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
12250         true if function has no argument.
12252 2007-05-18  DJ Delorie  <dj@redhat.com>
12254         * config/mips/mips.c (mips_offset_within_alignment_p): New.
12255         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
12257 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
12259         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
12260         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
12261         count_trailing_zeros.
12262         (__i386__): Implement count_leading_zeros using __builtin_clz().
12263         Implement count_trailing_zeros usign __builtin_ctz().
12265 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
12267         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
12269 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
12271         PR middle-end/31344
12272         * expr.c (emit_move_change_mode): Change mode of push operands here.
12274 2007-05-17  Ian Lance Taylor  <iant@google.com>
12276         PR tree-optimization/31953
12277         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
12278         Change all callers.
12279         (set_value_range_to_null): Call set_value_range_to_value.
12280         (extract_range_from_comparison): Likewise.
12282 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12284         * toplev.c (print_version): Output GMP/MPFR version info.
12286         * builtins.c (CASE_MATHFN_REENT): New macro.
12287         (mathfn_built_in): Use it.
12288         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
12289         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
12290         BUILT_IN_LGAMMAL_R): New.
12291         * doc/extend.texi: Document new builtins.
12293         PR middle-end/31796
12294         * builtins.c (do_mpfr_remquo): New.
12295         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
12296         (fold_builtin_3): Handle BUILT_IN_REMQUO.
12298         PR middle-end/30251
12299         * builtins.c (fold_builtin_1): Handle y0, y1.
12300         (fold_builtin_2): Handle yn.
12302         PR middle-end/30251
12303         * builtins.c (do_mpfr_bessel_n): New.
12304         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
12305         (fold_builtin_2): Handle BUILT_IN_JN.
12307 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
12309         PR target/31965
12310         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
12311         TYPE_PRECISION (intmax_type_node).
12313 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
12315         PR target/31850
12316         * reload.c (subst_reloads): Remove checking.
12318 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
12320         PR rtl-optimization/31691
12321         * combine.c (simplify_set): Build a new src pattern instead of
12322         substituting its operands in the COMPARE case.
12324 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
12326         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
12327         (execute_vrp): Preserve loops through jump threading.
12328         * tree-ssa-threadupdate.c (thread_single_edge,
12329         dbds_continue_enumeration_p, determine_bb_domination_status,
12330         thread_through_loop_header): New functions.
12331         (create_edge_and_update_destination_phis,
12332         create_edge_and_update_destination_phis): Set loops for the new blocks.
12333         (prune_undesirable_thread_requests): Removed.
12334         (redirect_edges): Do not pretend that redirect_edge_and_branch can
12335         create new blocks.
12336         (thread_block): Do not call prune_undesirable_thread_requests.
12337         Update loops.
12338         (mark_threaded_blocks): Select edges to thread here.
12339         (thread_through_all_blocks): Take may_peel_loop_headers argument.
12340         Thread edges through loop headers independently.
12341         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
12342         * tree-pass.h (TODO_mark_first_instance): New.
12343         (first_pass_instance): Declare.
12344         * cfghooks.c (duplicate_block): Put the block to the original loop
12345         if copy is not specified.
12346         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
12347         jump threading.  Pass may_peel_loop_headers to
12348         thread_through_all_blocks according to first_pass_instance.
12349         * cfgloop.h (create_preheader): Declare.
12350         * tree-flow.h (thread_through_all_blocks): Declaration changed.
12351         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
12352         * passes.c (first_pass_instance): New variable.
12353         (next_pass_1): Set TODO_mark_first_instance.
12354         (execute_todo): Set first_pass_instance.
12356 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
12358         PR tree-optimization/24659
12359         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
12360         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
12361         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
12362         OTI_vec_pack_ufix_trunc.
12363         (vec_unpacks_float_hi_optab): Define new macro.
12364         (vec_unpacks_float_lo_optab): Ditto.
12365         (vec_unpacku_float_hi_optab): Ditto.
12366         (vec_unpacku_float_lo_optab): Ditto.
12367         (vec_pack_sfix_trunc_optab): Ditto.
12368         (vec_pack_ufix_trunc_optab): Ditto.
12369         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
12370         and vec_pack_[s|u]fix_trunc_optab using
12371         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
12372         * tree-vectorizer.c (supportable_widening_operation): Handle
12373         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
12374         (supportable_narrowing_operation): New function.
12375         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
12376         * tree-vect-transform.c (vectorizable_conversion): Handle
12377         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
12378         (vect_gen_widened_results_half): Move before vectorizable_conversion.
12379         (vectorizable_type_demotion): Call supportable_narrowing_operation()
12380         to check for target support.
12381         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
12382         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
12383         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
12384         for VEC_PACK_FIX_TRUNC_EXPR.
12385         (expand_binop): Special case mode of the result for
12386         vec_pack_[u|s]fix_trunc_optab.
12387         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
12388         vec_pack_[u|s]fix_trunc_optab.
12390         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
12391         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
12392         * tree-pretty-print.c (dump_generic_node): Handle
12393         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
12394         VEC_PACK_FIX_TRUNC_EXPR.
12395         (op_prio): Ditto.
12396         * expr.c (expand_expr_real_1): Ditto.
12397         * tree-inline.c (estimate_num_insns_1): Ditto.
12398         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
12400         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
12401         (vec_unpacks_float_lo_v8hi): Ditto.
12402         (vec_unpacku_float_hi_v8hi): Ditto.
12403         (vec_unpacku_float_lo_v8hi): Ditto.
12404         (vec_unpacks_float_hi_v4si): Ditto.
12405         (vec_unpacks_float_lo_v4si): Ditto.
12406         (vec_pack_sfix_trunc_v2df): Ditto.
12408         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
12409         Document.
12410         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
12411         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
12412         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
12413         [vec_pack_ufix_trunc]: Ditto.
12414         [vec_unpacks_float_hi]: Ditto.
12415         [vec_unpacks_float_lo]: Ditto.
12416         [vec_unpacku_float_hi]: Ditto.
12417         [vec_unpacku_float_lo]: Ditto.
12419 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
12421         * soft-fp/README: Update for new files.
12422         * soft-fp/floattisf.c: New file.
12423         * soft-fp/floattidf.c: New file.
12424         * soft-fp/floattitf.c: New file.
12425         * soft-fp/floatuntisf.c: New file.
12426         * soft-fp/floatuntidf.c: New file.
12427         * soft-fp/floatuntitf.c: New file.
12428         * soft-fp/fixsfti.c: New file.
12429         * soft-fp/fixdfti.c: New file.
12430         * soft-fp/fixtfti.c: New file.
12431         * soft-fp/fixunssfti.c: New file.
12432         * soft-fp/fixunsdfti.c: New file.
12433         * soft-fp/fixunstfti.c: New file.
12434         * soft-fp/extendxftf.c: New file.
12435         * soft-fp/trunctfxf.c: New file.
12437         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
12438         (__trunctfxf2): Ditto.
12440         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
12441         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
12442         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
12443         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
12444         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
12445         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
12447         * config/i386/t-fprules-softfp64: New file.
12448         * config/i386/sfp-machine.h: New file.
12449         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
12450         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
12451         and soft-fp/t-softfp to tmake_file.
12452         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
12453         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
12455         * config/i386/t-linux64 (softfp_wrap_start): New.
12456         (softfp_wrap_end): New.
12457         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
12458         supported for TARGET_64BIT.
12460 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
12462         * c-common.c (c_common_signed_or_unsigned_type): Emulate
12463         c_common_unsigned_type behavior.
12465 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
12467         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
12468         calls as pure.
12470 2007-05-16  Eric Christopher  <echristo@apple.com>
12472         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
12473         saving after stack push. Set sp_offset whenever we push.
12474         (rs6000_emit_epilogue): Move altivec register restore before
12475         stack push.
12477 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
12479         * configure.ac: Allow sysroots to be relocated under $prefix as
12480         well as $exec_prefix.
12481         * configure: Regenerate.
12483 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
12485         Revert:
12487         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
12489         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12490         (gcc_tooldir): Likewise.
12491         * configure: Regenerate.
12492         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12493         old configure.ac gcc_tooldir setting.
12494         (prefix_to_exec_prefix): New variable.
12495         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12496         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12498 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
12500         * c-typeck.c (build_binary_op): Return early for error.
12502 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
12504         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
12505         struct nb_iter_bound.
12506         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
12507         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
12508         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
12509         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
12510         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
12511         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
12512         (del_scev_info): Use ggc_free.
12513         (scev_initialize): Allocate scalar_evolution_info in gc memory.
12514         * loop-init.c: Include ggc.h.
12515         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
12516         (loop_optimizer_finalize): Use ggc_free.
12517         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
12518         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
12519         pass_iv_optimize): Add TODO_ggc_collect.
12520         * function.h (struct function): Remove skip marker from
12521         x_current_loops.
12522         * cfgloop.c: Include ggc.h.
12523         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
12524         memory.
12525         (establish_preds): Vector superloops is gc allocated.
12526         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
12527         loop->exits list.
12528         (flow_loops_find): Vector larray is gc allocated.
12529         (loop_exit_free): Use ggc_free.
12530         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
12531         that head of exits list is now not a part of struct loop.
12532         (record_loop_exits): Allocate exits table in gc memory.
12533         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
12534         that head of exits list is now not a part of struct loop.
12535         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
12536         struct loop_exit): Add GTY marker.
12537         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
12538         Add skip marker to aux field.  Make head of exits list a separate
12539         object.
12540         (struct loops): Add GTY marker.  Make larray vector gc allocated.
12541         Add param marker to exits table.
12542         (get_loops): Type changed.
12543         * Makefile.in (tree-scalar-evolution.o): Add
12544         gt-tree-scalar-evolution.h dependency.
12545         (cfgloop.o, loop-init.o): Add ggc.h dependency.
12546         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
12547         * basic-block.h (struct basic_block_def): Remove skip marker from
12548         loop_father field.
12550 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
12552         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
12553         of 0 in the call to expand_expr().
12554         (expand_builtin_mathfn_3): Ditto.
12555         (expand_builtin_interclass_mathfn): Ditto.
12556         (expand_builtin_cexpi): Ditto.
12557         (expand_builtin_int_roundingfn): Ditto.
12558         (expand_builtin_int_roundingfn_2): Ditto.
12559         (expand_builtin_pow): Ditto.
12560         (expand_builtin_powi): Ditto.
12561         (expand_builtin_bswap): Ditto.
12562         (expand_builtin_unop): Ditto.
12563         (expand_builtin_fabs): Ditto.
12564         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
12565         the call to expand_expr().
12566         (expand_builtin_sync_operation): Ditto.
12567         (expand_builtin_compare_and_swap): Ditto.
12568         (expand_builtin_lock_test_and_set): Ditto.
12569         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
12570         instead of 0 in the call to expand_expr().
12571         (expand_builtin_extract_return_addr): Ditto.
12572         (expand_builtin_eh_return): Ditto.
12573         (expand_eh_return): Ditto.
12574         * explow.c (expr_size): Ditto.
12575         * expr.c (optimize_bitfield_assignment_op): Ditto.
12576         (expand_assignement): Ditto.
12577         (store_expr): Ditto.
12578         (store_field): Ditto.
12579         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
12580         the call to expand_expr().
12581         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
12582         in the call to expand_expr().
12583         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
12584         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
12585         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
12586         of expand_expr().
12587         * optabs.c (expand_vec_shift_expr): Ditto.
12588         (expand_vec_cond_expr): Ditto.
12589         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
12590         call to expand_expr().
12591         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
12592         in the call to expand_expr().
12594 2007-05-14  Dave Korn  <dave.korn@artimi.com>
12596         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
12598 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
12600         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
12601         instead of c_common_unsigned_type.
12602         (c_common_unsigned_type): Remove.
12603         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
12604         c_common_unsigned_type.
12605         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
12606         c_common_unsigned_type.
12607         * c-common.h (c_common_unsigned_type): Remove.
12608         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
12609         c_common_unsigned_type.
12610         * c-format.c (check_format_types): Use unsigned_type_for instead of
12611         c_common_unsigned_type.
12612         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
12613         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
12614         of c_common_unsigned_type.
12615         * convert.c (convert_to_integer): Use unsigned_type_for instead of
12616         lang_hooks.types.unsigned_type.
12617         * expmed.c (make_tree): Use unsigned_type_for instead of
12618         lang_hooks.types.unsigned_type.
12619         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
12620         lang_hooks.types.unsigned_type.
12621         (build_range_check): Likewise.
12622         (fold_unary): Likewise.
12623         (fold_binary): Likewise.
12624         (fold_ternary): Likewise.
12625         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
12626         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
12627         * tree.c (get_unsigned_type): New.
12628         (unsigned_type_for): Use get_unsigned_type instead of
12629         lang_hooks.types.unsigned_type.
12631 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
12633         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
12634         to m68k_get_function_kind.  Update its prototype.
12635         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
12636         interrupt_thread.
12637         (m68k_interrupt_function_p): Return enum m68k_function_type
12638         instead of bool.  Rename to m68k_get_function_kind.
12639         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
12640         target is not fido.
12641         (m68k_compute_frame_layout): Don't mark any register for save
12642         if an interrupt_thread attribute is specified.
12643         (m68k_hard_regno_rename_ok): Update a use of
12644         m68k_interrupt_function_p.
12645         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
12646         m68k_interrupt_function_p.
12647         (m68k_function_type): New.
12648         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
12649         for a function with an interrupt_thread attribute.
12650         * doc/extend.texi: Document the interrupt_thread attribute.
12652 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
12654         Fix PR tree-optimization/31911
12655         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
12656         if they didn't change the expression.
12658 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
12660         * tree-scalar-evolution.c (resolve_mixers): Exported.
12661         * tree-scalar-evolution.h (resolve_mixers): Declare.
12662         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
12663         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
12664         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
12665         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
12666         init_array_ref, init_pointer_ref, analyze_indirect_ref,
12667         strip_conversion, analyze_offset_expr, address_analysis,
12668         object_analysis, analyze_offset): Removed.
12669         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
12670         split_constant_offset, canonicalize_base_object_address,
12671         object_address_invariant_in_loop_p, disjoint_objects_p,
12672         dr_may_alias_p, dr_address_invariant_p): New functions.
12673         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
12674         and dr_analyze_alias.
12675         (initialize_data_dependence_relation): Use dr_may_alias_p
12676         and object_address_invariant_in_loop_p.
12677         (compute_self_dependence): Handle the case when
12678         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
12679         (find_data_references_in_stmt): Restrict the analysis of data
12680         references to the given loop nest.
12681         (find_data_references_in_loop): Made static.  Pass loop nest to
12682         find_data_references_in_stmt.
12683         (compute_data_dependences_for_loop): Use DR_VOPS.
12684         (free_data_ref): Free DR_VOPS.
12685         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
12686         (struct innermost_loop_behavior): ... new.
12687         (struct base_object_info): Replaced by ...
12688         (struct indices): ... new.
12689         (struct dr_alias): New.
12690         (enum data_ref_type): Removed.
12691         (struct data_reference): Consist of struct innermost_loop_behavior,
12692         struct indices and struct dr_alias.
12693         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
12694         (DR_MEMTAG): Renamed to ...
12695         (DR_SYMBOL_TAG): ... this.
12696         (find_data_references_in_loop): Declaration removed.
12697         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
12698         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
12699         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
12700         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
12702 2007-05-13  Revital Eres  <eres@il.ibm.com>
12704         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
12705         which walks virtual def-use chains to find redundant stores.
12706         (dse_optimize_stmt): Call it.
12708 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
12710         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
12711         * passes.c (init_optimization_passes): Move pass_jump_bypass
12712         after loop2.
12714         * basic-block.h (bb_has_eh_pred): Fix style issue.
12716 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
12718         PR rtl-optimization/31848
12719         * loop-invariant.c (move_invariant_reg): If we move an insn
12720         with a REG_EQUAL note, and that insn is not always executed,
12721         remove the REG_EQUAL note.
12723 2007-05-12  Richard Guenther  <rguenther@suse.de>
12725         PR tree-optimization/31797
12726         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
12727         propagate into a stmt that has volatile ops.
12729 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
12731         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12732         (gcc_tooldir): Likewise.
12733         * configure: Regenerate.
12734         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12735         old configure.ac gcc_tooldir setting.
12736         (prefix_to_exec_prefix): New variable.
12737         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12738         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12740 2007-05-11  Silvius Rus  <rus@google.com>
12742         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
12743         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
12744         * c-common.h (strict_aliasing_warning): Change return type.
12745         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
12746         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
12747         (build_c_cast): Condition call to strict_aliasing_warning.
12748         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
12749         * flags.h (set_Wstrict_aliasing): Declare.
12750         * opts.c (set_Wstrict_alising): Define, add call to.
12751         * tree-flow.h (strict_aliasing_warning_backend): Declare.
12752         * tree-ssa-alias-warnings.c: New file.
12753         * tree-ssa-alias.c (compute_may_aliases): Add call to
12754         strict_aliasing_warning_backend.
12756 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
12758         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
12759         Use loop_depth and loop_outer accessor functions.
12760         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
12761         determine_invariantness_stmt, move_computations_stmt): Ditto.
12762         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
12763         add_loop, loopify, unloop, fix_loop_structure): Ditto.
12764         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
12765         * tree-scalar-evolution.c (interpret_loop_phi,
12766         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
12767         instantiate_parameters_1, scev_const_prop): Ditto.
12768         * cfghooks.c (make_forwarder_block): Ditto.
12769         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
12770         * modulo-sched.c (loop_canon_p): Ditto.
12771         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
12772         slpeel_can_duplicate_loop_p): Ditto.
12773         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
12774         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
12775         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
12776         cancel_loop, verify_loop_structure): Ditto.
12777         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
12778         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
12779         superloops vector instead of "pred" array.
12780         (establish_preds): Take father loop as an argument.  Initialize the
12781         superloops vector.
12782         (flow_loop_tree_node_add): Pass father loop to establish_preds.
12783         Do not initialize loop->outer.
12784         (flow_loop_tree_node_remove): Truncate the superloops vector.
12785         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
12786         "pred" merged to "superloops" vector.
12787         (loop_depth, loop_outer): New.
12788         (fel_init): Use loop_outer.
12790 2007-05-11  Jan Hubicka  <jh@suse.cz>
12792         * cgraphunit.c: Include gt-cgraphunit.h
12793         (static_ctors, static_dtors): New static vars.
12794         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
12795         based on implementation in c-common.c
12796         (cgraph_finalize_function): Call record_cdtor_fn.
12797         (cgraph_optimize): Call cgraph_build_cdtor_fns.
12798         * decl.c (finish_function): Do not call c_record_cdtor_fn.
12799         (c_write_global_declarations): Do not call c_build_cdtor_fns.
12800         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
12801         build_cdtor, c_build_cdtor_fns): Remove.
12802         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
12803         c_build_cdtor_fns): Remove prototype.
12805 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
12807         PR other/31852
12808         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
12809         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
12810         * builtins.c (fold_builtin_memchr): New.
12811         (expand_builtin_memchr): Call the latter.
12812         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
12813         * doc/extend.texi ([Other built-in functions provided by GCC]):
12814         Document memchr.
12816 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
12818         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
12819         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
12820         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
12821         PFPO_OP1_TYPE_SHIFT): Constants added.
12822         (DFP_ALL): Mode macro defined.
12823         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
12824         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
12825         Insn definitions added.
12826         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
12827         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
12828         Expanders added.
12830 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
12832         PR tree-optimization/31885
12833         * tree-chrec.c (chrec_contains_undetermined): Do not consider
12834         NULL_TREE to be undetermined.
12835         (automatically_generated_chrec_p): Return false for NULL.
12837 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
12839         * config/bfin/bfin.h (MOVE_RATIO): Define.
12841 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
12843         * config.gcc (sparc-wrs-vxworks): New target.
12844         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
12845         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
12846         * config/sparc/sparc.h: Include vxworks-dummy.h.
12847         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
12848         include LABEL_REFs too.
12849         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
12850         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
12851         VxWorks.
12852         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
12853         on VxWorks.
12854         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
12855         (sparc_emit_call_insn): New function.
12856         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
12857         functions when generating VxWorks PIC.
12858         * config/sparc/sparc.md (vxworks_load_got): New pattern.
12859         (call, call_value): Use sparc_emit_call_insn instead of
12860         emit_call_insn.
12862 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
12864         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
12866 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
12868         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
12869         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
12870         split_double instead of operand_subword.
12872 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
12874         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
12875         * config/bfin/bfin.c (bfin_local_alignment): New function.
12876         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
12878 2007-05-08  Chao-ying Fu  <fu@mips.com>
12880         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
12881         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
12882         (smsub_widen_optab, umsub_widen_optab): Define.
12883         * optabs.c (init_optabs): Initialize smsub_widen_optab and
12884         umsub_widen_optab.
12885         * genopinit.c (optabs): Fill in smsub_widen_optab and
12886         umsub_widen_optab.
12887         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
12888         and umsub_widen_optab to implement multiply-subtract sequences.
12889         * config/mips/mips.md (*msac<u>_di): Rename to...
12890         (<u>msubsidi4): ...this.  Extend condition to include
12891         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
12892         of operand 0 to "ka" and use the three-operand form of msub<u>
12893         for TARGET_DSPR2.
12894         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
12895         to define_expands.
12897 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
12899         PR rtl-optimization/28011
12900         * reload.c (push_reload): Set dont_share if IN appears in OUT
12901         also when IN is a PLUS rtx.
12902         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
12903         are same PLUS rtx.
12905 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
12907         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
12908         call unshare_all_decls.
12909         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
12910         (unshare_all_decls): Remove.
12912 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
12914         PR 31847
12915         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
12916         dumps.
12918 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
12919             Nigel Stephens  <nigel@mips.com>
12921         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
12922         Update comments and all uses.
12923         (MIN_FPRS_PER_FMT): Define.
12924         * config/mips/mips.c (function_arg): Fix to correctly handle
12925         the -mips32r2 -mfp64 -mabi=32 case.
12926         (override_options): Enable use of odd-numbered registers for
12927         SFmode values on MIPS32.
12928         (mips_save_reg_p): Save whole floating-point register pair if
12929         either half is used.
12930         (compute_frame_size): Fix comment.
12932 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
12934         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
12935         argument of type bool.
12936         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
12937         argument. Safely select temporary P register according to it.
12938         (do_link): Change call site of add_to_reg accordingly.
12939         (do_unlink): Add epilogue_p as a fourth argument and pass it
12940         to add_to_reg.
12941         (expand_interrupt_handler_epilogue): Change call of do_unlink
12942         accordingly.
12943         (bfin_expand_prologue): Add a third argument sibcall_p.
12944         * config/bfin/bfin.md (epilogue): Change call of
12945         bfin_expand_epilogue accordingly.
12946         (sibcall_epilogue): Likewise.
12947         (eh_return_internal): Likewise.
12949         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
12950         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
12951         * config/bfin/bfin.c (bfin_handle_option): Handle
12952         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
12953         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
12954         Support bf534, bf536 and bf561.
12955         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
12957 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
12959         PR target/31854
12960         * config/i386/i386.c (ix86_function_regparm): Process local
12961         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
12963 2007-05-07  Mike Stump  <mrs@apple.com>
12965         * doc/invoke.texi (Warning Options): Document that -Wempty-body
12966         also checks for and while statements in C++.
12968 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
12970         * gcc.c (at_file_supplied): New variable.
12971         (main): Set it if we expanded argv.
12972         (do_spec_1): Pass an @-file to the linker if we were called with
12973         an @-file argument and HAVE_GNU_LD.
12974         * collect2.c (at_file_supplied): New variable.
12975         (response_file): New variable.
12976         (collect_exit): Unlink response_file if necessary.
12977         (handler): Likewise.
12978         (do_wait): Likewise.
12979         (main): Set at_file_supplied if we expanded argv.
12980         (collect_execute): Pass an @-file to subprocesses if we were called
12981         with an @-file argument.
12982         * configure.ac: Add define for HAVE_GNU_LD.
12983         * configure: Regenerate.
12984         * config.in: Regenerate.
12986 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
12988         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
12989         operand to HI mode.
12990         (mulsi3): New.
12991         (divsi3): New.
12992         (udivsi3): New.
12994 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
12996         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
12997         (TARGET_ENCODE_SECTION_INFO): Re-define.
12998         (m32c_encode_section_info): New
12999         (function_vector_handler): New
13000         (current_function_special_page_vector): New
13001         (m32c_special_page_vector_p): New.
13002         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
13003         Prototype.
13004         * config/m32c/jump.md: Added instruction JSRS for functions
13005         with attribute "function_vector".
13006         * doc/extend.texi (function_vector): Added description
13007         for M16C, M32C targets.
13009 2007-05-07  DJ Delorie  <dj@redhat.com>
13011         PR 31794
13012         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
13013         ashrpsi3, lshrpsi3): Update shift count constraint.
13015 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
13016             Nathan Froyd  <froydnj@codesourcery.com>
13018         PR 22133
13019         * c-incpath.c (add_path): Strip trailing path separators.
13021 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
13023         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
13024         Free dominance info before purging EH edges.
13025         (eliminate_degenerate_phis): Likewise.
13026         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
13028 2007-05-07  Jan Hubicka  <jh@suse.cz>
13030         * gimplify.c (gimplify_expr): Do not crash when folding
13031         (void *)(int)&a + 4.
13033 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
13035         PR driver/31694
13036         * c-opts.c (lang_fortran): Make it non static.
13037         * c-common.h (lang_fortran): New prototype.
13038         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
13039         -lang-fortran option was passed by the driver.
13041 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
13043         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
13044         of ASSERT_CHECKING.  Tweak message.
13046 2007-05-06  Revital Eres  <eres@il.ibm.com>
13048         PR 30957
13049         * loop-unroll.c (insert_var_expansion_initialization):
13050         Initialize the expansions with -zero instead of +zero.
13052 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
13054         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
13055         into pic and non-pic versions. Mark r19 as used for
13056         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
13057         for tgd_load, tld_load and tie_load .
13058         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
13059         version of tgd_load, tld_load and tie_load depending on the
13060         value of flag_pic.
13062 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
13063             Jakub Jelinek  <jakub@redhat.com>
13065         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
13066         (__do_global_dtors_aux): Use more paranoid loop to run
13067         destructors if HIDDEN_DTOR_LIST_END.
13068         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
13070 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
13072         * varasm.c (align_variable): Don't increase alignment for
13073         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
13074         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
13076 2007-05-04  Josh Conner  <jconner@apple.com>
13078         * basic-block.h (cdi_direction): Assign values to all enumeration
13079         constants.
13080         (dom_computed): Remove.
13081         (dom_info_state): New.
13082         (set_dom_info_availability): New.
13083         * tree-ssa-loop-im.c (determine_invariantness): Initialize
13084         walk_data.dom_direction.
13085         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
13086         instead of dom_computed[].
13087         (split_edge): Likewise.
13088         (create_basic_block): Likewise.
13089         (merge_blocks): Likewise.
13090         * ifcvt.c (find_if_header): Likewise.
13091         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
13092         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
13093         * tree-ssa.c (verify_ssa): Likewise.
13094         * tree-cfg.c (tree_verify_flow_info): Likewise.
13095         (remove_edge_and_dominated_blocks): Likewise.
13096         * dominance.c (dom_computed): Make static.
13097         (calc_dfs_tree_nonrec): Change third param to a bool.
13098         (calc_dfs_tree): Change second param to a bool.
13099         (calc_idioms): Change second param to a bool.  Use
13100         dom_convert_dir_to_idx.
13101         (init_dom_info): Validate dir before using.
13102         (dom_convert_dir_to_idx): New.
13103         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
13104         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
13105         (free_dominance_info): Use dom_convert_dir_to_idx.
13106         (get_immediate_dominator): Likewise.
13107         (set_immediate_dominator): Likewise.
13108         (get_dominated_by): Likewise.
13109         (redirect_immediate_dominators): Likewise.
13110         (nearest_common_denominator): Likewise.
13111         (dominated_by_p): Likewise.
13112         (bb_dom_dfs_in): Likewise.
13113         (bb_dom_dfs_out): Likewise.
13114         (recount_dominator): Likewise.
13115         (iterate_fix_dominators): Likewise.
13116         (add_to_dominance_info): Likewise.
13117         (delete_from_dominance_info): Likewise.
13118         (first_dom_son): Likewise.
13119         (next_dom_son): Likewise.
13120         (dom_info_available_p): Likewise.
13121         (dom_info_state): New.
13122         (set_dom_info_availability): New.
13124 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
13126         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
13127         Expander removed.
13128         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
13130 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
13132         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
13133         (subdi3, subdi_carry): Delete.
13135 2007-05-04  Jan Hubicka  <jh@suse.cz>
13136             Richard Guenther  <rguenther@suse.de>
13138         * opts.c (decode_options): Do not fiddle with inlining
13139         parameters in case of optimizing for size.
13140         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
13141         for size do nothing.
13142         (cgraph_decide_inlining_of_small_function): When optimizing for
13143         size never inline functions increasing caller size.
13144         (cgraph_early_inlining): Inline for size when optimizing for size.
13146 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
13148         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
13149         logical operations piecewise.
13150         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
13151         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
13152         subdi_sesidi_di): Delete.
13153         (add_with_carry): Produce carry in CC instead of a DREG to shorten
13154         the generated sequence.  Allow three-reg add in constraints.  Rewrite
13155         the rtl expression for carry to avoid zero_extend of a constant.
13156         (sub_with_carry): New pattern.
13157         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
13158         different sequence not involving jumps.
13159         (notbi): Now a named pattern.
13161 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
13163         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
13164         Add the note about a significant loss of accuracy of some
13165         mathematical routines when these options are used.
13167 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13169         * haifa-sched.c (rtx_vec_t): New typedef.
13170         (contributes_to_priority_p): Extract piece of priority () into new
13171         static function.
13172         (priority): Use the function.  Add assertion.
13173         (rank_for_schedule, set_priorities): Add assertion to check that
13174         insn's priority is initialized.
13175         (clear_priorities, calc_priorities): Change signature.  Make it update
13176         all relevant insns.  Update all callers ('add_to_speculative_block ()'
13177         and 'create_block_check_twin ()').
13178         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
13179         Add new field 'priority_status'.
13180         (INSN_PRIORITY_STATUS): New macro.
13181         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
13183 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13185         * sched-ebb.c (debug_ebb_dependencies): New static function.
13186         (init_ready_list): Use it.
13188         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
13189         with changed signature and 'debug_rgn_dependencies ()'.
13190         (debug_rgn_dependencies): New static function.
13191         (init_ready_list): Use it.
13193         * sched-int.h (debug_dependencies): Declare.
13195 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
13197         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
13199 2007-05-04  Dirk Mueller  <dmueller@suse.de>
13201         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
13203 2007-05-03  Jan Hubicka  <jh@suse.cz>
13205         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
13206         ((T1)X op (T1)Y), for pointer type in more cases than before.
13208         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
13210         * tree-object-size.c (plus_expr_object_size): When operand size is
13211         unknown, return unknown.
13213 2007-05-03  Dirk Mueller  <dmueller@suse.de>
13215         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
13217         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
13218         options.
13220         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
13222 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
13224         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
13226 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
13228         * config/soft-fp/double.h, config/soft-fp/extended.h,
13229         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
13230         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
13231         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
13232         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
13233         glibc CVS.
13235 2007-05-03  Ian Lance Taylor  <iant@google.com>
13237         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
13238         MASK_PPC_GFXOPT for 8540 or 8548.
13240 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
13242         * tree-vect-transform.c (vect_update_inits_of_drs): Use
13243         vect_print_dump_info() to output debug information.
13245 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
13247         PR target/31768
13248         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
13249         operands of size 2 when operand is not MEM_P.
13251 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
13253         PR tree-optimization/30565
13254         * lambda-code.c (perfect_nestify): Fix updating of dominators.
13256 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
13258         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
13259         (umulsi3_highpart): Use them.
13260         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
13261         for final accumulator to D regisster tranfser.
13263 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
13265         PR tree-optimization/31699
13266         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
13267         wrong code.
13268         (vect_enhance_data_refs_alignment): Compute peel amount using
13269         TYPE_VECTOR_SUBPARTS instead of vf.
13270         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
13272 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
13274         PR bootstrap/31776
13275         * system.h: Remove inclusion of double-int.h
13276         * tree.h: Include double-int.h
13277         * gengtype.c: Likewise
13278         * cfgloop.h: Likewise
13279         * Makefile.in: Adjust dependencies on double-int.h
13281 2007-05-02  Eric Christopher  <echristo@apple.com>
13283         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
13284         -shared to -Zdynamiclib.
13286 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
13288         PR c++/31663
13289         * c-common.c (strip_pointer_or_array_types): New function.
13290         * c-common.h (strip_pointer_or_array_types): New function declaration.
13292 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
13294         PR tree-optimization/31771
13295         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
13297 2007-05-02  Paul Brook  <paul@codesourcery.com>
13299         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
13301 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13303         PR middle-end/29715
13304         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
13305         transformation.
13307 2007-05-02  Nick Clifton  <nickc@redhat.com>
13309         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
13311 2007-05-02  Richard Guenther  <rguenther@suse.de>
13313         PR tree-optimization/31146
13314         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
13315         argument, single_use_p.  If we have a single use that is
13316         a conversion to the definition rhs type, propagate that rhs.
13317         (forward_propagate_addr_expr): Pass single_use_p argument
13318         to forward_propagate_addr_expr_1.
13320 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
13322         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
13323         variable.
13325 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
13327         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
13328         'AMD Family 10 core'.
13330 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
13332         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
13333         and athlon64-sse3 as improved versions of k8, opteron and athlon64
13334         with SSE3 instruction set support.
13335         * doc/invoke.texi: Likewise.
13337 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
13339         * config/i386/i386.c (override_options): Tuning 32-byte loop
13340         alignment for amdfam10 architecture. Increasing the max loop
13341         alignment to 24 bytes.
13343 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
13345         * config/m68k/constraints.md: New.
13346         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
13347         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
13348         EXTRA_CONSTRAINT): Remove.
13349         * config/m68k/m68k.md: Include constraints.md.
13350         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
13352 2007-05-01  Ian Lance Taylor  <iant@google.com>
13354         PR tree-optimization/31739
13355         * tree-vrp.c (vrp_val_is_max): New static function.
13356         (vrp_val_is_min): New static function.
13357         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
13358         copying the node.
13359         (set_value_range): Use vrp_val_is_{max,min}.
13360         (extract_range_from_assert): Likewise.
13361         (extract_range_from_binary_expr): Likewise.
13362         (extract_range_from_unary_expr): Likewise.
13363         (dump_value_range, vrp_meet): Likewise.
13364         (vrp_visit_phi_node): Likewise.
13365         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
13367 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
13369         * config/i386/gmon-sol2.c (size_t): New type.
13370         (intptr_t): Likewise.
13371         (s_textsize): Declare as size_t.
13372         (sbrk): Declare.
13373         (monstartup): Use size_t for sizes.
13374         (_mcount): Save and restore registers.
13375         (internal_mcount): Pass 0 as the first argument to monstartup
13376         in 64-bit mode.
13377         (moncontrol): Convert pointer to appropriately sized integer
13378         before passing to profil.
13380 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
13382         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
13383         __NO_FPRS__, not just if _SOFT_DOUBLE.
13384         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
13385         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
13386         also for E500 double.
13387         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
13388         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
13389         && !TARGET_FPRS).
13391 2007-05-01  Richard Guenther  <rguenther@suse.de>
13393         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
13394         is NULL.
13396 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
13398         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
13400 2007-05-01  Jan Hubicka  <jh@suse.cz>
13402         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
13403         invariant.
13405 2007-05-01  Jan Hubicka  <jh@suse.cz>
13407         * tree.h (maybe_fold_offset_to_component_ref): Remove.
13408         (maybe_fold_offset_to_reference): Declare.
13409         * fold-const.c (fold_unary): Do not fold
13410         (type *)&A into &A->field_of_type_and_offset_0
13411         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
13412         size is unknown, give up.
13413         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
13414         offsets.
13415         (maybe_fold_offset_to_reference): New.
13416         (maybe_fold_stmt_indirect): Use it.
13417         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
13418         * gimplify.c (gimplify_conversion): Canonicalize conversions to
13419         field references.
13420         (gimplify_expr): Likewise for plus_expr.
13422 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
13424         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
13425         bsi_after_labels.  Always insert statements before bsi.
13426         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
13427         * predict.c (apply_return_prediction): Check for empty blocks.
13428         * cfgexpand.c (lab_rtx_for_bb): New variable.
13429         (label_rtx_for_bb): Do not create new tree labels.
13430         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
13431         (tree_expand_cfg): Initialize lab_rtx_for_bb.
13432         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
13433         creating edges.
13434         (label_for_bb): Add field used.
13435         (update_eh_label, main_block_label): Mark the label used.
13436         (cleanup_dead_labels): Remove unused labels.
13438 2007-05-01  Richard Guenther  <rguenther@suse.de>
13440         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
13441         if it is not about to be set.
13442         (get_value_range): Do not pre-allocate equiv bitmap.
13443         (update_value_range): No need to clear equiv field.
13444         (add_equivalence): Change prototype to get bitmap pointer.
13445         Allocate bitmap here if it is not already.
13446         (extract_range_from_assert): Do not allocate bitmap here.
13447         Update callers to add_equivalence.
13448         (extract_range_from_ssa_name): Likewise.
13449         (get_vr_for_comparison): New static helper.
13450         (compare_name_with_value): Handle NULL equiv bitmap by
13451         peeling the first iteration of the comparison loop.
13452         Use get_vr_for_comparison.
13453         (compare_names): Handle NULL equiv bitmaps by using fake
13454         ones.  Use get_vr_for_comparison.
13456 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
13458         * double-int.c (mpz_set_double_int): Moved from
13459         tree-ssa-loop-niter.c.
13460         (mpz_get_double_int): Likewise; also, add option to wrap
13461         out-of-range integers.
13462         * double-int.h: New prototypes for above.
13463         * tree.c (get_static_type_bounds): Moved from
13464         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
13465         TYPE_MAX_VALUE if they exist..
13466         * tree.h: New prototype for above.
13467         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
13468         get_type_bounds calls.
13469         (mpz_set_double_int): Move to double-int.c.
13470         (get_type_bounds): Move to tree.c, rename to
13471         get_static_type_bounds.
13472         (mpz_to_double_int): Move to double-int.c, rename to
13473         mpz_get_double_int.
13475 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
13477         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
13478         DIV0 exception can fall through to a normal return.
13480 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
13482         PR middle-end/22156
13483         Temporarily revert:
13484         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
13485         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
13486         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
13487         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
13488         initialize align to silence bogus warning.
13489         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
13490         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
13491         all_no_warning.
13492         (struct sra_walk_fns): Remove use_all parameter from use.
13493         (sra_hash_tree): Handle BIT_FIELD_REFs.
13494         (sra_elt_hash): Don't hash bitfld blocks.
13495         (sra_elt_eq): Skip them in parent compares as well.  Handle
13496         BIT_FIELD_REFs.
13497         (sra_walk_expr): Don't maintain or pass down use_all_p.
13498         (scan_use): Remove use_all parameter.
13499         (scalarize_use): Likewise.  Re-expand assignment to
13500         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
13501         output, and re-scalarize after output.  Don't mark anything
13502         for no warning.
13503         (scalarize_ldst): Adjust.
13504         (scalarize_walk_gimple_modify_statement): Likewise.
13505         (build_element_name_1): Handle BIT_FIELD_REFs.
13506         (instantiate_element): Don't warn for any element whose parent
13507         is used as a whole.
13508         (instantiate_missing_elements_1): Return the sra_elt.
13509         (canon_type_for_field): New.
13510         (try_instantiate_multiple_fields): New.
13511         (instantiate_missing_elemnts): Use them.
13512         (mark_no_warning): Removed.
13513         (generate_one_element_ref): Handle BIT_FIELD_REFs.
13514         (REPLDUP, sra_build_elt_assignment): New.
13515         (generate_copy_inout): Use them.
13516         (generate_element_copy): Likewise.  Handle bitfld differences.
13517         (generate_element_zero): Don't recurse for blocks.  Use
13518         sra_build_elt_assignment.
13519         (generate_one_element_int): Take elt instead of var.  Use
13520         sra_build_elt_assignment.
13521         (generate_element_init_1): Adjust.
13522         (scalarize_use, scalarize_copy): Use REPLDUP.
13523         (scalarize_ldst): Move assert before dereference.
13524         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
13526 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13528         PR C++/31721
13529         * tree.c (reconstruct_complex_type): Reconstruct a reference
13530         correctly.
13531         Also use the same mode for the pointer as the old pointer type.
13533 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
13535         * doc/trouble.texi (Interoperation): Remove note about Ultrix
13536         Fortran compiler.
13538 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
13540         PR rtl-optimization/31676
13541         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
13542         (df_refs_record): Call it.
13544 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
13546         * rtl.def (SS_ABS): New code.
13547         * config/bfin/bfin.c (print_operand): New modifier 'v'.
13548         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
13549         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
13550         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
13551         (bfin_init_builtins): Define them.
13552         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
13553         (bfin_expand_builtin): ... and handle the others here.
13554         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
13555         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
13556         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
13557         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
13558         operand is only HImode.
13560 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
13562         * regclass.c (scan_one_insn): Remove splitting of
13563         two address insns.
13565 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
13566             Nigel Stephens  <nigel@mips.com>
13568         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
13570 2007-04-28  Jan Hubicka  <jh@suse.cz>
13572         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
13573         insn_locators_alloc instead of insn_locators_initialize;
13574         call reset_block_changes.
13575         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
13576         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
13577         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
13578         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
13579         * config/score/score.c (th_output_mi_thunk): Likewise.
13580         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
13581         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
13582         tolerate uninitialized locator info.
13584         Re-apply:
13585         * function.c (init_function_start): Don't init line number info.
13586         (expand_function_end): Update.
13587         (reset_block_changes, record_block_change, finalize_block_changes,
13588         check_block_change, free_block_changes): Kill.
13589         * function.h (reset_block_changes, record_block_change,
13590         finalize_block_changes, check_block_change, free_block_changes):
13591         Remove prototypes.
13592         (struct function): Remove ib_boundaries_block.
13593         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13594         Use curr_insn_locator to initialize locator.
13595         (emit_line_note): Remove.
13596         * cfgexpand.c (expand_gimple_cond_expr): Update.
13597         (construct_exit_block): Likewise.
13598         (tree_expand_cfg): Initialize/finalize locators.
13599         * expr.c (expand_expr_real): Update.
13600         * cfglayout.c (line_locators_locs, line_locators_lines,
13601         file_locators_locs, file_locators_files): Remove.
13602         (set_block_levels): Move to cfgexpand.c.
13603         (insn_locators_initialize): Remove.
13604         (pass_insn_locators_initialize): Remove.
13605         (locations_locators_locs, locations_locators_vals): New static vars.
13606         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13607         Likewise.
13608         (insn_locators_alloc, insn_locators_finalize,
13609         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13610         New functions.
13611         (locator_location): New.
13612         (locator_line, locator_file): Rewrite.
13613         * rtl.h (emit_line_note): Kill.
13614         (insn_locators_alloc, insn_locators_finalize,
13615         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13616         Declare.
13617         * tree-inline.c (initialize_cfun): Do not initialize
13618         ib_boundaries_block.
13619         * passes.c (pass_insn_locators_initialize): Remove.
13621 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
13623         * tree-cfg.c (move_block_to_fn): Release bb from dominance
13624         info.  Update last_basic_block correctly.
13626 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
13628         PR target/31701
13629         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
13630         register itself to hold the offset constant.  Tell flow the use
13631         of r4 and r5 when they are used.
13633 2007-04-27  Richard Guenther  <rguenther@suse.de>
13635         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
13636         if we simplified anything.
13637         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
13638         warnings until we did a simplification and the stmt was not
13639         marked as TREE_NO_WARNING.
13641 2007-04-27  Mike Stump  <mrs@apple.com>
13643         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
13645 2007-04-27  Ian Lance Taylor  <iant@google.com>
13647         PR middle-end/31710
13648         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
13649         TYPE_MAX_VALUE exist, convert them to the new type.
13651 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13653         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
13654         if it claims to be available.
13655         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
13656         edge is redirected.
13657         (perform_tree_ssa_dce): Always free postdominators.
13659 2007-04-27  Richard Henderson  <rth@redhat.com>
13661         * config/alpha/predicates.md (aligned_memory_operand): Mark
13662         as define_special_predicate.
13663         (unaligned_memory_operand, normal_memory_operand): Likewise.
13664         (reg_or_unaligned_mem_operand): Remove.
13665         (any_memory_operand): Match the documentation and check for
13666         non-renumbered pseudos during reload.
13667         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
13668         alpha_secondary_reload_class, update to new interface, make static.
13669         Handle CQImode like HImode.  Remove FP subreg check.
13670         (alpha_expand_mov): Use replace_equiv_address.
13671         (alpha_expand_mov_nobwx): Use any_memory_operand.
13672         (TARGET_SECONDARY_RELOAD): New.
13673         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
13674         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
13675         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
13676         * config/alpha/alpha.md: ... here.
13677         (RELOAD12, reloadmode): New.
13678         (movcqi): New.
13679         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
13680         Don't handle the aligned case here.
13681         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
13682         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
13683         reload_inhi_help.  Don't expect a scratch register.
13684         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
13685         reload_outhi_help.
13686         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
13688 2007-04-27  Richard Guenther  <rguenther@suse.de>
13690         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
13692 2007-04-27  Richard Guenther  <rguenther@suse.de>
13694         PR tree-optimization/30965
13695         PR tree-optimization/30978
13696         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
13697         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
13698         (find_equivalent_equality_comparison): Likewise.
13699         (simplify_cond): Likewise.
13700         (get_prop_source_stmt): New helper.
13701         (get_prop_dest_stmt): Likewise.
13702         (can_propagate_from): Likewise.
13703         (remove_prop_source_from_use): Likewise.
13704         (combine_cond_expr_cond): Likewise.
13705         (forward_propagate_comparison): New function.
13706         (forward_propagate_into_cond): Rewrite to use fold for
13707         tree combining.
13708         (tree_ssa_forward_propagate_single_use_vars): Call
13709         forward_propagate_comparison to propagate comparisons.
13711 2007-04-27  Richard Guenther  <rguenther@suse.de>
13713         PR tree-optimization/31715
13714         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
13715         sure to do computation on the offset in an appropriate
13716         signed type.
13718 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
13720         * reload.h (elimination_target_reg_p): Declare.
13721         * reload.c (find_reloads): Don't apply the reg_rtx move
13722         optimization if the SET_DEST satisfies elimination_target_reg_p.
13723         * reload1.c (elimination_target_reg_p): New function.
13724         (gen_reload): In the move/add2 fallback, make sure that op0
13725         does not overlap the destination register.
13727 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13729         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
13730         transform only GIMPLE_MODIFY_STMTs.
13731         * tree-complex.c (expand_complex_operations_1): Ditto.
13732         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
13733         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
13734         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
13735         branches.
13736         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
13737         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
13738         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
13739         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
13740         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
13741         slpeel_add_loop_guard): Ditto.
13742         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
13743         * lambda-code.c (perfect_nestify): Ditto.
13744         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
13745         before the first statement.
13746         * tree-optimize.c (execute_free_datastructures): Fix comments.
13747         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
13748         * tree-flow.h (disband_implicit_edges): Declaration removed.
13749         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
13750         branches.
13751         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
13752         COND_EXPRs without gotos.
13753         (disband_implicit_edges, has_label_p): Removed.
13754         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
13755         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
13756         branches.
13757         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
13758         side effects.
13759         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
13760         also for COND_EXPRs.
13761         * cfgexpand.c (label_rtx_for_bb): New function.
13762         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
13763         Use label_rtx_for_bb to find the labels.
13764         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
13765         last block.  Detect fallthru edges.
13767 2007-04-26  Ian Lance Taylor  <iant@google.com>
13769         PR target/28675
13770         * reload.c (find_reloads_subreg_address): If the address was valid
13771         in the original mode but not in the new mode, reload the whole
13772         address.
13774 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13776         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
13777         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
13778         (cleanup_control_expr_graph): Do not invalidate dominance info.
13779         Record altered blocks.
13780         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
13781         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
13782         cleanup_tree_cfg_bb): New functions.
13783         (remove_forwarder_block): Do not maintain the worklist of blocks.
13784         Record altered blocks.
13785         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
13786         not over whole cfg.
13787         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
13788         delete_unreachable_blocks if dominators are not available.
13789         * tree-inline.c (optimize_inline_calls): Free dominance information
13790         earlier.
13791         * tree-flow.h (remove_edge_and_dominated_blocks,
13792         cfgcleanup_altered_bbs): Altered.
13793         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
13794         blocks.
13795         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
13796         functions.
13797         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
13798         do not invalidate dominators.
13800 2007-04-26  Anatoly Sokolov <aesok@post.ru>
13802         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
13803         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
13804         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
13805         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13807 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
13809         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
13811 2007-04-26  Richard Guenther  <rguenther@suse.de>
13813         PR tree-optimization/31703
13814         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
13815         the right type for the target of the bittest.
13817 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13819         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
13820         ix86_sol10_return_in_memory.
13822 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13824         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
13825         variables.
13827 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
13829         PR c++/31598
13830         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
13832         PR tree-optimization/30558
13833         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
13834         clear this_state.prev_try.
13836 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13837             Mark Mitchell  <mark@codesourcery.com>
13839         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
13840         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
13841         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
13843 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13845         PR driver/31107
13846         * doc/invoke.texi (%:print-asm-header): Document.
13847         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
13848         and -ftarget-help.
13849         (static_spec_functions): Add print-asm-header.
13850         (main): Print a banner before the --target-help linker options.
13851         (print_asm_header_spec_function): New function.
13853 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
13855         PR target/31403
13856         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
13857         (movsf_ie): Likewise.
13859 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
13861         * doc/extend.texi ([Type Traits]): Adjust per N2255.
13863 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
13865         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
13866         exception for divide-by-zero.
13867         (__umodsi3, __modsi3): Likewise.
13869 2007-04-25  Dirk Mueller  <dmueller@suse.de>
13871         * c-typeck.c (build_compound_expr): Annotate warning()
13872         call with OPT_Wunused_value.
13873         * tree-ssa.c (warn_uninit): Annotate warning with
13874         OPT_Wunintialized.
13875         * c-common.c (handle_sentinel_attribute): Annotate warning
13876         call with OPT_Wattributes.
13878 2007-04-25  Thiemo Seufer  <ths@mips.com>
13880         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
13881         (mips16): Fix typo.
13882         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
13883         on to the assembler.  Improve handling of -mno-mips16.  Add handling
13884         of -mno-mips3d, -mno-dsp, -mno-dspr2.
13885         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
13886         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
13887         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
13889 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
13891         PR target/31680
13892         * config/i386/winnt.c (i386_pe_file_end): Strip only
13893         USER_LABEL_PREFIX when writing export name.
13895 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
13897         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
13898         sh/elf.h, vx-common.h and vxworks.h.
13899         * config/sh/sh.h: Include config/vxworks-dummy.h.
13900         (SUBTARGET_OVERRIDE_OPTIONS): Define.
13901         (OVERRIDE_OPTIONS): Use it.
13902         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
13903         (vxworks_picreg): New pattern.
13904         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
13905         VXWORKS_OS_CPP_BUILTINS.
13906         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
13907         to their VXWORKS_* equivalents.
13908         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
13909         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
13910         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
13911         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
13912         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
13913         -mrtp/-fPIC multilibs.
13914         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
13915         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
13916         (MULTILIB_OSDIRNAMES): Delete.
13918 2007-04-25  Anatoly Sokolov <aesok@post.ru>
13920         PR target/18989
13921         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
13923 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
13925         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
13926         rounding mode to be specified by the caller.
13927         (real_to_mpfr) Likewise.
13928         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
13929         include new arguments.
13930         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
13932 2007-04-24  Ian Lance Taylor  <iant@google.com>
13934         PR tree-optimization/31605
13935         * tree-vrp.c (set_value_range): Check that min and max are not
13936         both overflow infinities.
13937         (set_value_range_to_value): New static function.
13938         (extract_range_from_binary_expr): Call set_value_range_to_value.
13939         (extract_range_from_cond_expr): Likewise.
13940         (extract_range_from_expr): Likewise.
13941         (extract_range_from_unary_expr): Likewise.  Don't create a range
13942         which overflows on both sides.
13943         (vrp_meet): Check for a useless range.
13944         (vrp_visit_phi_node): If we see a constant which looks like an
13945         overflow infinity, turn off the TREE_OVERFLOW flag.
13947 2007-04-24  Ian Lance Taylor  <iant@google.com>
13949         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
13951 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
13953         PR diagnostic/25923
13954         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
13955         diagnostic message is being built.
13956         * tree-pretty-print.c (dump_generic_node): Only write the
13957         formatted text into BUFFER's stream if we are not building a
13958         diagnostic message.
13959         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
13960         dump_generic_node.
13961         * Makefile.in (toplev.o): Depend on tree-pass.h.
13963 2007-04-24  Ian Lance Taylor  <iant@google.com>
13965         PR tree-optimization/31602
13966         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
13967         conditionals in the copied loop header.
13968         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
13969         warnings if TREE_NO_WARNING is set.
13970         * doc/invoke.texi (Warning Options): Clarify that
13971         -Wstrict-overflow does not warn about loops.
13973 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
13975         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
13976         expand on the comment about _Decimal128 arguments and check the
13977         integer result of the modulus operation; for 64-bit ELF ABI, ensure
13978         that _Decimal128 argument uses even/odd register pair.
13979         (function_arg): Ditto.
13981 2007-04-24  Hui-May Chang <hm.chang@apple.com>
13983         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
13984         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
13986 2007-04-24  Richard Guenther  <rguenther@suse.de>
13987             Olga Golovanevsky  <olga@il.ibm.com>
13989         * fold-const.c (multiple_of_p): Check for bottom
13990         to be zero.
13992 2007-04-24  Richard Henderson  <rth@redhat.com>
13994         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
13995         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
13996         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
13997         looking for non-zero bits shifted out.  Avoid a recursive call
13998         when constructing the scalar.
13999         (__floatundisf): Likewise.
14001 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
14003         * dwarf2out.c (field_byte_offset): Move the existing logic
14004         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
14005         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
14007 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14009         PR target/31641
14010         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
14011         length argument of 0 for memset.
14012         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
14013         unsigned shift instead of the signed variant.
14015 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14017         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
14018         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
14019         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
14020         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
14021         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
14022         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
14023         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
14024         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
14025         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
14026         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
14027         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
14028         "mul<mode>3", "div<mode>3"): Insn definitions added.
14029         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
14030         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
14031         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
14032         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
14033         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
14034         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
14035         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
14036         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
14037         TARGET_FLOAT_FORMAT): Macro definitions removed.
14038         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
14039         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
14040         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
14041         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
14042         (s390_gen_rtx_const_DI): Function removed.
14043         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
14045 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
14047         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
14048         over an external ffs function.
14050 2007-04-24  Chao-ying Fu  <fu@mips.com>
14051             Richard Sandiford  <richard@nildram.co.uk>
14053         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
14054         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
14055         (smadd_widen_optab, umadd_widen_optab): Define.
14056         * optabs.c (init_optabs): Initialize smadd_widen_optab and
14057         umadd_widen_optab.
14058         * genopinit.c (optabs): Fill in smadd_widen_optab and
14059         umadd_widen_optab.
14060         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
14061         and umadd_widen_optab to implement multiply-add sequences.
14062         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
14063         (<u>maddsidi4): ...this.  Extend condition to include
14064         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
14065         of operand 0 to "ka" and use the three-operand form of madd<u>
14066         for TARGET_DSPR2.
14067         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
14068         to define_expands.
14069         * config/mips/constraints.md (ka): New register constraint.
14071 2007-04-24  Jan Hubicka  <j@suse.cz>
14073         Revert:
14075         2007-04-23  Jan Hubicka  <jh@suse.cz>
14076         * function.c (init_function_start): Don't init line number info.
14077         (expand_function_end): Update.
14078         (reset_block_changes, record_block_change, finalize_block_changes,
14079         check_block_change, free_block_changes): Kill.
14080         * function.h (reset_block_changes, record_block_change,
14081         finalize_block_changes, check_block_change, free_block_changes):
14082         Remove prototypes.
14083         (struct function): Remove ib_boundaries_block.
14084         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
14085         Use curr_insn_locator to initialize locator.
14086         (emit_line_note): Remove.
14087         * cfgexpand.c (expand_gimple_cond_expr): Update.
14088         (construct_exit_block): Likewise.
14089         (tree_expand_cfg): Initialize/finalize locators.
14090         * expr.c (expand_expr_real): Update.
14091         * cfglayout.c (line_locators_locs, line_locators_lines,
14092         file_locators_locs, file_locators_files): Remove.
14093         (set_block_levels): Move to cfgexpand.c.
14094         (insn_locators_initialize): Remove.
14095         (pass_insn_locators_initialize): Remove.
14096         (locations_locators_locs, locations_locators_vals): New static vars.
14097         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
14098         Likewise.
14099         (insn_locators_alloc, insn_locators_finalize,
14100         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
14101         New functions.
14102         (locator_location): New.
14103         (locator_line, locator_file): Rewrite.
14104         * rtl.h (emit_line_note): Kill.
14105         (insn_locators_alloc, insn_locators_finalize,
14106         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
14107         Declare.
14108         * tree-inline.c (initialize_cfun): Do not initialize
14109         ib_boundaries_block.
14110         * passes.c (pass_insn_locators_initialize): Remove.
14112 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
14114         * doc/invoke.texi: Removed leading '-' from option index entries.
14116 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
14118         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
14119         Use phi_nodes_ptr.
14120         (create_phi_node): Use set_phi_nodes.
14121         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
14122         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
14123         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
14124         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
14125         (bsi_start, bsi_last): Use bb_stmt_list.
14126         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
14127         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
14128         Traverse the statements using tsi iterator.
14129         * basic-block.h (struct basic_block_def): Fields stmt_list
14130         and phi_nodes moved to ...
14131         (struct tree_bb_info): ... new structure.
14132         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
14133         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
14134         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
14135         (tree_verify_flow_info): Verify that il.tree is not set for
14136         entry and exit block.
14137         (tree_split_block): Use set_bb_stmt_list.
14139 2007-04-23  Mike Stump  <mrs@apple.com>
14141         * config/i386/i386.c (ix86_tune_features
14142         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
14143         nocona and core2.
14145 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
14147         * config/i386/i386.md (prefix_extra): New attribute.
14148         (length): Add prefix_extra.
14150         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
14151         (sse2_movntv2di): Likewise.
14152         (sse2_cvtps2dq): Likewise.
14153         (sse2_cvtpd2pi): Likewise.
14154         (sse2_cvttpd2pi): Likewise.
14155         (*sse2_cvtpd2ps): Likewise.
14156         (*add<mode>3): Likewise.
14157         (sse2_ssadd<mode>3): Likewise.
14158         (sse2_usadd<mode>3): Likewise.
14159         (*sub<mode>3): Likewise.
14160         (sse2_sssub<mode>3): Likewise.
14161         (sse2_ussub<mode>3): Likewise.
14162         (*mulv8hi3): Likewise.
14163         (*smulv8hi3_highpart): Likewise.
14164         (*umulv8hi3_highpart): Likewise.
14165         (sse2_umulv2siv2di3): Likewise.
14166         (sse2_pmaddwd): Likewise.
14167         (ashr<mode>3): Likewise.
14168         (lshr<mode>3): Likewise.
14169         (ashl<mode>3): Likewise.
14170         (sse2_ashlti3): Likewise.
14171         (sse2_lshrti3): Likewise.
14172         (*umaxv16qi3): Likewise.
14173         (*smaxv8hi3): Likewise.
14174         (*uminv16qi3): Likewise.
14175         (*sminv8hi3): Likewise.
14176         (sse2_eq<mode>3): Likewise.
14177         (sse2_gt<mode>3): Likewise.
14178         (*and<mode>3): Likewise.
14179         (sse2_nand<mode>3): Likewise.
14180         (*ior<mode>3): Likewise.
14181         (*xor<mode>3): Likewise.
14182         (sse2_packsswb): Likewise.
14183         (sse2_packssdw): Likewise.
14184         (sse2_packuswb): Likewise.
14185         (sse2_punpckhbw): Likewise.
14186         (sse2_punpcklbw): Likewise.
14187         (sse2_punpckhwd): Likewise.
14188         (sse2_punpcklwd): Likewise.
14189         (sse2_punpckhdq): Likewise.
14190         (sse2_punpckldq): Likewise.
14191         (sse2_punpckhqdq): Likewise.
14192         (sse2_punpcklqdq): Likewise.
14193         (*sse2_pinsrw): Likewise.
14194         (*sse2_pextrw): Likewise.
14195         (sse2_pshufd_1): Likewise.
14196         (sse2_uavgv16qi3): Likewise.
14197         (sse2_uavgv8hi3): Likewise.
14198         (sse2_psadbw): Likewise.
14199         (sse2_pmovmskb): Likewise.
14200         (*sse2_maskmovdqu): Likewise.
14201         (*sse2_maskmovdqu_rex64): Likewise.
14202         (sse4a_extrqi): Likewise.
14203         (sse4a_extrq): Likewise.
14204         (sse3_lddqu): Set prefix_rep.
14205         (sse3_addsubv4sf3): Likewise.
14206         (sse3_haddv4sf3): Likewise.
14207         (sse3_hsubv4sf3): Likewise.
14208         (sse_cvtss2si): Likewise.
14209         (sse_cvtss2si_2): Likewise.
14210         (sse_cvtss2siq): Likewise.
14211         (sse_cvtss2siq_2): Likewise.
14212         (sse_cvttss2si): Likewise.
14213         (sse_cvttss2siq): Likewise.
14214         (sse2_cvttps2dq): Likewise.
14215         (sse3_movshdup): Likewise.
14216         (sse3_movsldup): Likewise.
14217         (sse2_cvtsd2si): Likewise.
14218         (sse2_cvtsd2si_2): Likewise.
14219         (sse2_cvtsd2siq): Likewise.
14220         (sse2_cvtsd2siq_2): Likewise.
14221         (sse2_cvttsd2si): Likewise.
14222         (sse2_cvttsd2siq): Likewise.
14223         (*sse2_cvtpd2dq): Likewise.
14224         (*sse2_cvttpd2dq): Likewise.
14225         (sse2_pshuflw_1): Likewise.
14226         (sse2_pshufhw_1): Likewise.
14227         (sse4a_insertqi): Likewise.
14228         (sse4a_insertq): Likewise.
14229         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
14230         (ssse3_phadddv4si3): Likewise.
14231         (ssse3_phaddswv8hi3): Likewise.
14232         (ssse3_phsubwv8hi3): Likewise.
14233         (ssse3_phsubdv4si3): Likewise.
14234         (ssse3_phsubswv8hi3): Likewise.
14235         (ssse3_pmaddubswv8hi3): Likewise.
14236         (ssse3_pmulhrswv8hi3): Likewise.
14237         (ssse3_pshufbv16qi3): Likewise.
14238         (ssse3_psign<mode>3): Likewise.
14239         (ssse3_palignrti): Likewise.
14240         (abs<mode>2): Likewise.
14241         (ssse3_phaddwv4hi3): Set prefix_extra.
14242         (ssse3_phadddv2si3): Likewise.
14243         (ssse3_phaddswv4hi3): Likewise.
14244         (ssse3_phsubwv4hi3): Likewise.
14245         (ssse3_phsubdv2si3): Likewise.
14246         (ssse3_phsubswv4hi3): Likewise.
14247         (ssse3_pmaddubswv4hi3): Likewise.
14248         (ssse3_pmulhrswv4hi3): Likewise.
14249         (ssse3_pshufbv8qi3): Likewise.
14250         (ssse3_psign<mode>3): Likewise.
14251         (ssse3_palignrdi): Likewise.
14252         (abs<mode>2): Likewise.
14253         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
14254         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
14255         (sse2_pmovmskb): Set mode to SI instead of V2DF.
14257 2007-04-23  Nick Clifton  <nickc@redhat.com>
14259         * params.def: Fix formatting of emacs local variables.
14261 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
14263         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
14264         move if inter-unit move isn't allowed.
14265         Don't split moving the first element of V2DI to DI to inter-unit
14266         move if inter-unit move isn't allowed.
14268 2007-04-23  Richard Guenther  <rguenther@suse.de>
14270         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
14271         and CDI_POST_DOMINATORS separately.
14273 2007-04-23  Nick Clifton  <nickc@redhat.com>
14275         * c.opt (Wformat-contains-nul): Add warning attribute.
14277 2007-04-23  Jan Hubicka  <jh@suse.cz>
14279         * function.c (init_function_start): Don't init line number info.
14280         (expand_function_end): Update.
14281         (reset_block_changes, record_block_change, finalize_block_changes,
14282         check_block_change, free_block_changes): Kill.
14283         * function.h (reset_block_changes, record_block_change,
14284         finalize_block_changes, check_block_change, free_block_changes):
14285         Remove prototypes.
14286         (struct function): Remove ib_boundaries_block.
14287         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
14288         Use curr_insn_locator to initialize locator.
14289         (emit_line_note): Remove.
14290         * cfgexpand.c (expand_gimple_cond_expr): Update.
14291         (construct_exit_block): Likewise.
14292         (tree_expand_cfg): Initialize/finalize locators.
14293         * expr.c (expand_expr_real): Update.
14294         * cfglayout.c (line_locators_locs, line_locators_lines,
14295         file_locators_locs, file_locators_files): Remove.
14296         (set_block_levels): Move to cfgexpand.c.
14297         (insn_locators_initialize): Remove.
14298         (pass_insn_locators_initialize): Remove.
14299         (locations_locators_locs, locations_locators_vals): New static vars.
14300         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
14301         Likewise.
14302         (insn_locators_alloc, insn_locators_finalize,
14303         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
14304         New functions.
14305         (locator_location): New.
14306         (locator_line, locator_file): Rewrite.
14307         * rtl.h (emit_line_note): Kill.
14308         (insn_locators_alloc, insn_locators_finalize,
14309         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
14310         Declare.
14311         * tree-inline.c (initialize_cfun): Do not initialize
14312         ib_boundaries_block.
14313         * passes.c (pass_insn_locators_initialize): Remove.
14315 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14317         PR middle-end/31448
14318         * expr.c (reduce_to_bit_field_precision): Handle
14319         CONST_INT rtx's.
14321 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
14323         PR tree-optimization/24659
14324         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
14325         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
14326         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
14327         * genopinit.c (optabs): Rename vec_pack_mod_optab
14328         to vec_pack_trunc_optab.
14329         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
14330         early for scalar floating point operands for NOP_EXPR.
14331         (vectorizable_type_promotion): Ditto.
14332         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
14333         vec_pack_trunc_optab.
14334         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
14336         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
14337         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
14338         Rename from VEC_PACK_MOD_EXPR.
14339         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
14340         * expr.c (expand_expr_real_1): Ditto.
14341         * tree-inline.c (estimate_num_insns_1): Ditto.
14342         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
14344         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
14345         (vec_unpacks_lo_v4sf): Ditto.
14346         (vec_pack_trunc_v2df): Ditto.
14347         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
14348         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
14349         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
14351         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
14352         vec_pack_mod_v8hi.
14353         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
14355         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
14356         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
14357         packing of floating point operands.
14358         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
14359         represent unpacking of floating point operands.
14360         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
14361         [vec_unpacks_hi]: Ditto.
14362         [vec_unpacks_lo]: Ditto.
14364 2007-04-22  Jan Hubicka  <jh@suse.cz>
14366         * final.c (rest_of_handle_final): Call
14367         targetm.asm_out.constructor/targetm.asm_out.destructor
14368         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
14369         proper priority via decl_*_priority_insert.
14370         * c-common.c (c_expand_body): Likewise.
14372 2007-04-22  Richard Guenther  <rguenther@suse.de>
14374         PR tree-optimization/29789
14375         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
14376         (rewrite_reciprocal): New helper split out from
14377         determine_invariantness_stmt.
14378         (rewrite_bittest): Likewise.
14379         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
14380         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
14381         is not.
14383 2007-04-22  Revital Eres  <eres@il.ibm.com>
14385         * loop-unroll.c (var_to_expand): New field to support also
14386         insns of the form x = something + x.
14387         (analyze_insn_to_expand_var): Use it.
14388         (expand_var_during_unrolling): Likewise.
14390 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
14392         * predict.c: Include pointer-set.h.
14393         (bb_predictions): New variable.
14394         (tree_predicted_by_p, tree_predict_edge,
14395         remove_predictions_associated_with_edge): Use bb_predictions map
14396         instead of bb->predictions.
14397         (clear_bb_predictions, assert_is_empty): New functions.
14398         (combine_predictions_for_bb): Use bb_predictions map.  Call
14399         clear_bb_predictions.
14400         (tree_estimate_probability): Create and free bb_predictions map.
14401         * Makefile.in (predict.o): Add pointer-set.h dependency.
14402         * basic-block.h (struct basic_block_def): Remove predictions
14403         field.
14404         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
14406 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14408         PR target/31480
14409         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
14410         is null.
14412 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14414         * timevar.c (timevar_print): Change reference of --disable-checking to
14415         --enable-checking=release.  Also warn if assert checking is disabled.
14417 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14419         PR C/30265
14420         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
14421         decl as addressable if the compound literal was marked as
14422         addressable.
14423         Mark the decl as a gimple register if it is a complex or
14424         vector decl and does not live in memory.
14426 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14428         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
14429         (GENERIC_NEXT): New function macro.
14430         (PHI_CHAIN): Use phi_node's new chain variable.
14431         (tree_phi_node): Change tree_common to tree_base
14432         and add the chain field.
14433         * tree-phinodes.c (make_phi_node): Don't set
14434         TREE_TYPE on the new node.
14435         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
14436         instead of checking GIMPLE_TUPLE_P in chain_next.
14437         * tree-vect-transform.c
14438         (get_initial_def_for_induction): Look at
14439         PHI_RESULT_TREE for the type of the phi node.
14440         (update_vuses_to_preheader): Use PHI_CHAIN
14441         instead of TREE_CHAIN on the phi node.
14442         * tree-ssa-structalias.c (compute_points_to_sets):
14443         Likewise.
14444         (ipa_pta_execute): Likewise.
14446 2007-04-21  Richard Guenther  <rguenther@suse.de>
14448         PR middle-end/31136
14449         * fold-const.c (fold_unary): Call fold_convert_const on the
14450         original tree.
14452 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
14454         * gcse.c (store_killed_in_insn): Handle PARALLELs.
14455         (store_killed_in_pat): New.
14457 2007-04-20  Richard Henderson  <rth@redhat.com>
14459         PR target/31628
14460         * config/i386/i386.c (type_has_variadic_args_p): Look for any
14461         TREE_LIST with a void_type_node value, not void_list_node exactly.
14463 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
14465         * doc/standards.texi: Re-arrange into language-specific
14466         subsections. Add a C++ section, documenting which standards we
14467         support.
14469 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
14471         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
14472         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
14474 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
14476         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
14477         ecrti.o and crtbegin.o.
14478         (LIB_DEFAULT_SPEC): Include -lc.
14479         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
14481 2007-04-20  Richard Henderson  <rth@redhat.com>
14483         PR target/28623
14484         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
14485         argument; update all callers.
14486         (get_unaligned_offset): New.
14487         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
14488         get_unaligned_address, just pass on the address directly.
14489         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
14490         the subreg in the helper patterns.
14491         (unaligned_extendqidi_le): Use get_unaligned_offset.
14492         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
14493         (unaligned_extendhidi_be): Likewise.
14494         (unaligned_extendhidi): Tidy.
14495         * config/alpha/alpha-protos.h: Update.
14497 2007-04-20  Richard Henderson  <rth@redhat.com>
14499         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
14500         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
14501         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
14502         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14503         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14504         (CPP_SPEC): Don't include %(cpp_subtarget).
14505         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
14506         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14507         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
14509 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
14511         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
14512         for __builtin_ia32_cmpordss.
14514         PR tree-optimization/31632
14515         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
14516         and arg1 for optimizations of comparison against min/max values.
14517         Fold arg0 to arg1's type for optimizations of comparison against
14518         min+1 and max-1 values.
14520 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
14522         * reload.c (combine_reloads): When trying to use a dying register,
14523         check whether it's uninitialized and don't use if so.
14525 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
14527         * fold-const.c: Remove prototypes for native_encode_expr and
14528         native_interpret_expr.
14529         (native_encode_expr): Make non-static.
14530         (native_interpret_expr): Likewise.
14531         * tree.h: Add prototypes for the above.
14533 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
14535         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
14536         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
14537         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
14538         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
14539         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
14540         Add length attributes.
14542 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
14544         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
14545         not that it is 1.
14547         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
14548         __STDC_WANT_DEC_FP__.
14550 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
14552         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
14553         for long double compatibility.
14554         * configure: Regenerate.
14556 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
14558         PR rtl-optimization/29841
14559         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
14560         trap instructions.
14561         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
14562         that may cause control flow transfer from being moved.
14564 2007-04-18  Jan Hubicka  <jh@suse.cz>
14566         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
14567         types.
14569 2007-04-18  Eric Christopher  <echristo@apple.com>
14571         * config/rs6000/darwin.md (load_macho_picbase): Use link register
14572         only. Update operands.
14573         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
14574         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
14575         link register to pic register.
14577 2007-04-18  Dirk Mueller  <dmueller@suse.de>
14579         PR diagnostic/31227
14580         * tree-vrp.c (search_for_addr_array): New.
14581         (check_array_bounds): Suppress warning about
14582         address taken of array refs if its not de-referenced.
14584 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14586         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
14587         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
14589         * tree-vectorizer.h (NITERS_KNOWN_P): New.
14590         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
14591         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
14593         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
14594         dump print.
14595         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
14596         print message.
14597         (vect_analyze_scalar_cycles): Fix indentation.
14598         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
14599         (vect_mark_relevant): Include phis in relevance analysis.
14601         * tree-vect-transform.c (vect_transform_loop): Add an assert.
14603 2007-04-18  Anatoly Sokolov <aesok@post.ru>
14605         * config/avr/avr.c (ptrreg_to_str): Replace error() with
14606         output_operand_lossage().
14608 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14610         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
14611         the unused code for reduction without adjust-in-epilog to simplify the
14612         function.
14614 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
14616         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
14617         (S390_TDC_NEGATIVE_ZERO): New constant.
14618         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
14619         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
14620         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
14621         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
14622         (S390_TDC_POSITIVE_INFINITY): New constant.
14623         (S390_TDC_NEGATIVE_INFINITY): New constant.
14624         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
14625         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
14626         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
14627         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
14628         (S390_TDC_INFINITY): New constant.
14629         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
14630         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
14631         optimization for UNSPEC_CCZ_TO_INT.
14632         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
14633         ("*ccz_to_int"): New insn.
14634         ("isinf<mode>2"): New insn.
14635         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
14636         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
14637         (UNSPEC_CCZ_TO_INT): New constant.
14639 2007-04-18  Richard Guenther  <rguenther@suse.de>
14641         PR tree-optimization/19431
14642         PR tree-optimization/21463
14643         * tree-pass.h (pass_phiprop): Declare.
14644         * passes.c (init_optimization_passes): New phiprop pass.
14645         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
14646         (phivn_valid_p): New helper function.
14647         (phiprop_insert_phi): Likewise.
14648         (propagate_with_phi): Likewise.
14649         (tree_ssa_phiprop): New propagator propagating loads
14650         through phi nodes if profitable.
14652 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14654         * tree-vect-analyze.c (process_use): New function.
14655         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
14656         Check phis in all bbs.
14657         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
14658         assert.
14660 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
14662         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
14663         we use REG_EQUAL.
14665 2007-04-17  Anatoly Sokolov <aesok@post.ru>
14667         PR target/30483
14668         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
14669         error().
14671 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
14673         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
14674         on "0".
14675         (sse_vmmulv4sf3): Likewise.
14676         (sse2_vmaddv2df3): Likewise.
14677         (sse2_vmmulv2df3): Likewise.
14679 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
14681         PR rtl-optimization/31360
14682         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
14683         (target_reg_cost): New.
14684         (init_set_costs): Initialize target_reg_cost.  Add comments
14685         regarding the rationale of the costs.
14686         (global_cost_for_size): Renamed to...
14687         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
14688         of register pressure.
14689         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
14690         estimate_reg_pressure_cost.  Add number of ivs.
14691         (determine_set_costs): Dump target_reg_cost.
14692         * loop-invariant.c (gain_for_invariant):  Use
14693         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
14694         (best_gain_for_invariant, find_invariants_to_move): Remove
14695         n_inv_uses.
14696         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
14697         (target_reg_cost): Declare.
14698         (global_cost_for_size): Declaration removed.
14699         (estimate_reg_pressure_cost): Declare.
14701 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
14703         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
14704         regnos into even/odd register pairs.
14705         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
14706         TDmode similar to the other floating point modes.
14707         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
14708         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
14709         define_expand's.
14710         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
14711         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
14712         (movdd_hardfloat64): Use TARGET_MFPGPR.
14714 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
14716         * reload1.c (delete_output_reload): Don't count output in n_inherited.
14718         Revert
14719         2005-01-05  Richard Henderson  <rth@redhat.com>
14720         PR rtl-opt/10692
14721         * reload1.c (do_input_reload): Restrict the optimization deleteing
14722         a previous output reload to RELOAD_FOR_INPUT.
14724 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
14726         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
14727         induc_vec_info_type.
14728         (vectorizable_induction): New function declaration.
14729         * tree-vect-transform.c (get_initial_def_for_induction): No need to
14730         check if already vectorized.  Find first place in BB where new stmts
14731         can be inserted.  Takes only one argument.
14732         (vectorizable_induction): New function.
14733         (vect_transform_stmt): Add case for induc_vec_info_type to call
14734         vectorizable_induction.
14735         (vect_transform_loop): Consider phis for vectorization.
14736         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
14737         condition.
14738         (analyze_operations): Call vectorizable_induction when analyzing phis.
14739         Fix comment.
14740         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
14741         (vect_mark_relevant): Include phis in relevance analysis.
14742         (vect_mark_stmts_to_be_vectorize): Likewise.
14743         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
14745 2007-04-16  Lawrence Crowl  <crowl@google.com>
14747         * doc/invoke.texi (Debugging Options): Add documentation for the
14748         -femit-struct-debug options -femit-struct-debug-baseonly,
14749         -femit-struct-debug-reduced, and
14750         -femit-struct-debug-detailed[=...].
14752         * c-opts.c (c_common_handle_option): Add
14753         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
14754         and OPT_femit_struct_debug_detailed_.
14755         * c.opt: Add specifications for
14756         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
14757         and -femit-struct-debug-detailed[=...].
14758         * opts.c (set_struct_debug_option): Parse the
14759         -femit-struct-debug-... options.
14760         * opts.c (matches_main_base, main_input_basename,
14761         main_input_baselength, base_of_path, matches_main_base): Add
14762         variables and functions to compare header base name to compilation
14763         unit base name.
14764         * opts.c (should_emit_struct_debug): Add to determine to emit a
14765         structure based on the option.
14766         (dump_struct_debug) Also disabled function to debug this
14767         function.
14768         * opts.c (handle_options): Save the base name of the
14769         compilation unit.
14771         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
14772         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
14773         This hook indicates if a type is generic.  Set it by default
14774         to "never generic".
14775         * langhooks.h (struct lang_hooks_for_types): Add a new hook
14776         to determine if a struct type is generic or not.
14777         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
14778         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
14779         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
14780         with live C++ hook.
14782         * flags.h (enum debug_info_usage): Add an enumeration to describe
14783         a program's use of a structure type.
14784         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
14785         to indicate the program's usage of the type.  Filter structs based
14786         on the -femit-struct-debug-... specification.
14787         (gen_type_die): Split into two routines, gen_type_die and
14788         gen_type_die_with_usage.  gen_type_die is now a wrapper
14789         that assumes direct usage.
14790         (gen_type_die_with_usage): Replace calls to gen_type_die
14791         with gen_type_die_with_usage adding the program usage of
14792         the referenced type.
14793         (dwarf2out_imported_module_or_decl): Suppress struct debug
14794         information using should_emit_struct_debug when appropriate.
14796 2007-04-16  Ian Lance Taylor  <iant@google.com>
14798         PR tree-optimization/31522
14799         * tree-vrp.c (vr_phi_edge_counts): New static variable.
14800         (vrp_initialize): Allocate vr_phi_edge_counts.
14801         (vrp_visit_phi_node): Don't push to infinity if we saw a new
14802         executable edge.  Drop test for all constants.
14803         (vrp_finalize): Free vrp_phi_edge_counts.
14805         * doc/cpp.texi (Common Predefined Macros): Clarify description of
14806         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
14808         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
14809         predecessors at head rather than tail.
14811 2007-04-16  Matthias Klose  <doko@debian.org>
14813         * config/alpha/linux.h (CPP_SPEC): Define.
14814         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
14816 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
14818         * function.h: Remove sequence_stack extern declaration.
14820 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
14822         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
14823         TARGET_FIDOA.
14824         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
14825         defined.
14827 2007-04-16  Anatoly Sokolov <aesok@post.ru>
14829         * config/avr/avr.c (avr_arch_types): Rearranging  array.
14830         (enum avr_arch): Add.
14831         (avr_mcu_types): Use avr_arch enumeration constants instead of
14832         numbers.
14833         * config/avr/avr.h (LINK_SPEC): Simplify.
14835 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
14837         * config/m68k/m68k.c (m68k_libcall_value,
14838         m68k_function_value): Use macros for register names more.
14840         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
14841         instead.
14842         (M68K_REGNAME): Use A6_REG.
14843         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
14845 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14847         PR middle-end/28071
14848         * sched-int.h (struct deps): Split field 'pending_lists_length' into
14849         'pending_read_list_length' and 'pending_write_list_length'.  Update
14850         comment.
14851         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
14852         to handle two length counters instead of one.  Update all uses.
14853         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
14854         two length counters instead of one.
14855         * sched-rgn.c (propagate_deps): Update to handle two length counters
14856         instead of one.
14858 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
14860         PR target/31582
14861         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
14862         copy of source, pass it to ix86_expand_vector_set and return
14863         it as target.
14865 2007-04-16  David Ung  <davidu@mips.com>
14866             Joseph Myers  <joseph@codesourcery.com>
14868         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
14869         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
14870         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
14871         Add 74K processor information.
14872         * config/mips/mips.md: Include 74k.md.
14873         (cpu): Add 74kc,74kf,74kx.
14874         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
14875         * config/mips/74k.md: New.
14876         * doc/invoke.texi (MIPS Options): Document 74K support.
14878 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
14880         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
14881         vectorizable_* functions.
14882         * tree-vect-transform.c (vectorizable_call): Add check for
14883         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
14884         (vectorizable_store): likewise.
14885         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
14886         Add comments.
14887         (vectorizable_operation, vectorizable_type_demotion): Likewise.
14888         (vectorizable_type_promotion, vectorizable_load): Likewise.
14889         (vectorizable_live_operation, vectorizable_condition): Likewise.
14890         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
14891         STMT_VINFO_LIVE_P.
14892         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
14894 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14896         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
14897         register numbers more.
14898         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
14899         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
14900         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
14901         FUNCTION_VALUE_REGNO_P): Likewise.
14902         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
14903         STATIC_CHAIN_REGNUM): Likewise.
14904         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
14905         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
14906         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
14907         * config/m68k/m68k.md (FP_REG): New.
14909 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14911         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
14912         alignment on fido.
14914 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14916         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
14917         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
14918         comment typos.
14920 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14922         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
14923         cold loops.
14925 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14927         PR c/31520
14928         * c-decl.c (finish_decl): Grab the type of the decl after the call
14929         to store_init_value.
14931 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
14933         * common.opt (fforward-propagate): Fix "Optimization" annotation.
14935 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
14937         PR c++/25874
14938         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
14939         dominators, post dominators and cleanup cfg before returning.
14941 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
14943         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
14944         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
14946 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
14948         * config.gcc: Recognize fido.
14949         * config/m68k/m68k-devices.def (fidoa): New.
14950         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
14951         __mfido__.
14952         (FL_FIDOA, TARGET_FIDOA): New.
14953         * config/m68k/m68k.opt (mfidoa): New.
14955 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14957         PR middle-end/31322
14958         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
14959         when a personality function is used.
14961 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
14963         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
14965 2007-04-13  Mike Stump  <mrs@apple.com>
14967         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
14968         we can...
14969         * config/darwin.opt (fapple-kext): Make C++ only.
14970         * config/darwin.c (darwin_override_options): Remove code to ensure
14971         -fapple-kext is given for C++ only.
14973 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
14975         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
14976         * config/mips/mips.c (override_options): Call
14977         SUBTARGET_OVERRIDE_OPTIONS, if defined.
14979 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
14981         * config/i386/i386.opt (msvr3-shlib): Removed.
14983         * doc/invoke.texi: Remove -msvr3-shlib.
14985 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
14987         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
14988         with "popcnt" instruction.
14990 2007-04-13  Richard Guenther  <rguenther@suse.de>
14992         PR tree-optimization/21258
14993         * tree-vrp.c (compare_case_labels): New helper.
14994         (find_switch_asserts): New function.
14995         (find_assert_locations): Call it for SWITCH_EXPRs.
14997 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
14999         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
15000         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
15001         check is now implied in X87_FLOAT_MODE_P.
15002         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
15003         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
15004         (fix_trunc<mode>_i386_fisttp): Ditto.
15005         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
15006         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
15007         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
15008         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
15009         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
15010         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
15011         (unnamed_splitters): Ditto.
15012         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
15013         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
15014         FIRST_SSE_REG for local functions when SSE math is enabled or
15015         for functions with sseregparm attribute.
15016         (standard_80387_constant_p): Return -1 if mode is not
15017         X87_FLOAT_MODE_P.
15018         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
15019         (ix86_expand_compare): Ditto.
15020         (ix86_expand_carry_flag_compare): Ditto.
15021         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
15022         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
15023         DECIMAL_FLOAT_MODE_P.
15024         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
15025         of SCALAR_FLOAT_MODE_P.
15026         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
15027         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
15028         checks before FLOAT_MODE_P.
15029         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
15030         before FLOAT_MODE_P.
15031         [DIV]: Ditto.
15032         [NEG]: Ditto.
15033         [ABS]: Ditto.
15034         [SQRT]: Ditto.
15035         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
15037 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
15038             Charles Wilson  <libtool@cwilson.fastmail.fm>
15040         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
15041         (libgcc.mvars): Don't depend on them.
15042         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
15043         * exec-tool.in: New.
15045 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
15047         * doc/invoke.text (--help): Document --help=common.
15049 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
15051         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
15053 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15055         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
15056         * genemit.c (main): Emit #include "integrate.h".
15057         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
15058         (LOADGP_RTP): New mips_loadgp_style.
15059         * config/mips/mips.h: Include config/vxworks-dummy.h.
15060         (TARGET_RTP_PIC): New macro.
15061         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
15062         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
15063         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
15064         for TARGET_RTP_PIC.
15065         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
15066         -mvxworks-pic when using -mrtp and a PIC option.
15067         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
15068         for RTP PIC.
15069         (mips_symbolic_constant_p, mips_symbolic_address_p)
15070         (mips_symbol_insns): Handle SYMBOL_HALF.
15071         (override_options): Warn about -G and -mrtp being used together.
15072         Initialize mips_lo_relocs[SYMBOL_HALF].
15073         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
15074         (mips_emit_loadgp): Handle LOADGP_RTP.
15075         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
15076         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
15077         (tablejump): Handle function-relative case table entries if
15078         TARGET_RTP_PIC.
15079         * config/mips/predicates.md (symbol_ref_operand): New predicate.
15081 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15083         * config/mips/mips.md (load_call<mode>): Allow any general register.
15084         destination.
15085         (sibcall_value_internal, sibcall_value_multiple_internal)
15086         (call_value_internal, call_value_split, call_value_multiple_internal)
15087         (call_value_multiple_split): Remove constraints from operand 0.
15089 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15091         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
15092         rather than loadgp_noshared.
15093         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
15094         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
15095         gen_loadgp.
15096         * config/mips/mips.md (loadgp): Rename to...
15097         (loadgp_newabi): ...this.
15098         (loadgp_noshared): Rename to...
15099         (loadgp_absolute): ...this.
15101 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15103         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
15104         false for locally-binding symbols.
15105         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
15107 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15109         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
15110         (SYMBOL_GOT_PAGE_OFST): ...this.
15111         (SYMBOL_GOT_GLOBAL): Rename to...
15112         (SYMBOL_GOT_DISP): ...this.
15113         (SYMBOL_GOTOFF_GLOBAL): Rename to...
15114         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
15115         * config/mips/mips.c (mips_global_symbol_p): New function.
15116         (mips_symbol_binds_local_p): Likewise.
15117         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
15118         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
15119         mips_global_symbol_p and mips_symbol_binds_local_p.
15120         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
15121         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
15122         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
15123         SYMBOL_GOTOFF_DISP.
15124         (mips_ok_for_lazy_binding_p): New function.
15125         (mips_load_call_address, mips_expand_call): Use it.
15126         (mips_dangerous_for_la25_p): Likewise.
15127         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
15128         (*got_disp<mode>): Use got_disp_operand instead of
15129         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
15130         SYMBOL_GOTOFF_GLOBAL.
15131         (*got_page<mode>): Use got_page_ofst_operand instead of
15132         local_got_operand.
15133         * config/mips/predicates.md (const_call_insn_operand): Use
15134         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
15135         (global_got_operand): Rename to...
15136         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
15137         SYMBOL_GOT_GLOBAL.
15138         (local_got_operand): Rename to...
15139         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
15140         of SYMBOL_GOT_LOCAL.
15142 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15144         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
15145         TARGET_CALL_CLOBBERED_GP.
15146         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
15147         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
15148         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
15149         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
15150         of TARGET_ABICALLS && !TARGET_NEWABI.
15151         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
15152         * config/mips/mips.c (mips_load_call_address): Check
15153         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
15154         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
15155         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
15156         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
15157         TARGET_ABICALLS && TARGET_NEWABI.
15158         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
15159         TARGET_ABICALLS.
15160         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
15161         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
15162         TARGET_ABICALLS && TARGET_NEWABI.
15163         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
15164         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
15165         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
15166         whether indirect calls must use $25.
15167         (mips_extra_live_on_entry): Check TARGET_GOT instead of
15168         TARGET_ABICALLS.
15169         * config/mips/mips.md (jal_macro): Check flag_pic and
15170         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
15171         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
15172         instead of TARGET_ABICALLS.
15173         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
15174         TARGET_ABICALLS && TARGET_OLDABI.
15175         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
15176         (sibcall): In the comment above the define_insn, mention
15177         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
15178         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
15179         instead of TARGET_ABICALLS.
15181 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
15183         * doc/md.texi (Blackfin family constraints): Document PA and PB.
15184         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
15185         (MACFLAGS_MATCH_P): New macro.
15186         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
15187         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
15188         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
15189         the other MACFLAG constants.
15190         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
15191         (flag_machi): Tighten constraints.  Renumber some of the operands.
15192         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
15193         output template.
15194         (flag_machi_parts_acconly): New pattern.
15195         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
15196         used.
15197         (flag_macinit1hi): Tighten constraints.
15198         (flag_mul_macv2hi_parts_acconly): New pattern.
15200         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
15201         Use a more efficient implementation.
15202         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
15203         inline sequences when not optimizing for size.
15205         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
15206         movhi_high2low): Delete, merge functionality into...
15207         (packv2hi): ... this pattern.
15209         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
15210         * config/bfin/bfin.opt (msim): New option.
15211         (mcpu=): New option.
15212         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
15213         (bfin_cpu_t): Typedef of enum bfin_cpu.
15214         (bfin_cpu_type): New declaration.
15215         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
15216         -msim and -mcpu= options.
15217         (LIB_SPEC): Likewise.
15218         * config/bfin/bfin.c (bfin_cpu_type): Define.
15219         (bfin_handle_option): Handle -mcpu= option.
15220         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
15221         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
15222         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
15224 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15226         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
15227         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
15228         (powerpc-wrs-vxworksae): Use ${tm_file}.
15229         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
15230         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
15231         * config/i386/vx-common.h: New file.
15233 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15235         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
15236         of crt0.o%s.
15238 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
15240         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
15241         ldxtr.
15243 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
15245         PR c++/31078
15246         PR c++/31103
15247         * c-common.c (c_build_qualified_type): Set canonical type
15248         appropriately.
15250 2007-04-12  Richard Guenther  <rguenther@suse.de>
15252         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
15253         lower bound and element size if lower bound is not zero
15254         or either of the ARRAY_REF operands is set.
15256 2007-04-12  Richard Guenther  <rguenther@suse.de>
15258         PR tree-optimization/24689
15259         PR tree-optimization/31307
15260         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
15261         indices by value.
15262         * gimplify.c (canonicalize_addr_expr): To be consistent with
15263         gimplify_compound_lval only set operands two and three of
15264         ARRAY_REFs if they are not gimple_min_invariant.  This makes
15265         it never at this place.
15266         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
15268 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15270         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
15271         null before emitting a .nsubspa directive.
15273 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
15275         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
15276         need_to_partition_p if there are no memory statements in the
15277         function.
15279 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
15281         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
15282         (gcd_of_steps_may_divide_p): New function.
15283         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
15285 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15287         * reload.c (find_reloads_toplev, find_reloads_address,
15288         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
15289         not a pointer equality test, to decide if we need to call
15290         push_reg_equiv_alt_mem.
15292 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
15294         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
15295         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
15296         New.
15297         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
15299 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
15301         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
15302         vector to be positive.
15304 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
15306         PR 30735
15307         PR 31090
15308         * doc/invoke.texi: Document --params max-aliased-vops and
15309         avg-aliased-vops.
15310         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
15311         debug_memory_partitions): Move to tree-flow.h
15312         * params.h (AVG_ALIASED_VOPS): Define.
15313         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
15314         users.
15315         (mp_info_t): Likewise.
15316         (get_mem_sym_stats_for): New.
15317         (set_memory_partition): Move from tree-flow-inline.h.
15318         (mark_non_addressable): Only clear the set of symbols for the
15319         partition if it exists.
15320         (dump_memory_partitions): Move from tree-ssa-operands.c
15321         (debug_memory_partitions): Likewise.
15322         (need_to_partition_p): New.
15323         (dump_mem_ref_stats): New.
15324         (debug_mem_ref_stats): New.
15325         (dump_mem_sym_stats): New.
15326         (debug_mem_sym_stats): New.
15327         (update_mem_sym_stats_from_stmt): New.
15328         (compare_mp_info_entries): New.
15329         (mp_info_cmp): Call it.
15330         (sort_mp_info): Change argument to a list of mem_sym_stats_t
15331         objects.
15332         (get_mpt_for): Move from tree-ssa-operands.c.
15333         (find_partition_for): New.
15334         (create_partition_for): Remove.
15335         (estimate_vop_reduction): New.
15336         (update_reference_counts): New.
15337         (build_mp_info): New.
15338         (compute_memory_partitions): Refactor.
15339         Document new heuristic.
15340         Call build_mp_info, update_reference_counts,
15341         find_partition_for and estimate_vop_reduction.
15342         (compute_may_aliases): Populate virtual operands before
15343         calling debugging dumps.
15344         (delete_mem_sym_stats): New.
15345         (delete_mem_ref_stats): New.
15346         (init_mem_ref_stats): New.
15347         (init_alias_info): Call it.
15348         (maybe_create_global_var): Remove alias_info argument.
15349         Get number of call sites and number of pure/const call sites
15350         from gimple_mem_ref_stats().
15351         (dump_alias_info): Call dump_memory_partitions first.
15352         (dump_points_to_info_for): Show how many times a pointer has
15353         been dereferenced.
15354         * opts.c (decode_options): For -O2 set --param
15355         max-aliased-vops to 500.
15356         For -O3 set --param max-aliased-vops to 1000 and --param
15357         avg-aliased-vops to 3.
15358         * fortran/options.c (gfc_init_options): Remove assignment to
15359         MAX_ALIASED_VOPS.
15360         * tree-flow-inline.h (gimple_mem_ref_stats): New.
15361         * tree-dfa.c (dump_variable): Dump memory reference
15362         statistics.
15363         Dump NO_ALIAS* settings.
15364         (referenced_var_lookup): Tidy.
15365         (mem_sym_stats): New.
15366         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
15367         and ORIG are different SSA names for a memory partition.
15368         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
15369         * tree-flow.h (struct mem_sym_stats_d): Define.
15370         (mem_sym_stats_t): Define.
15371         (struct mem_ref_stats_d): Define.
15372         (struct gimple_df): Add field mem_ref_stats.
15373         (enum noalias_state): Define.
15374         (struct var_ann_d): Add bitfield noalias_state.
15375         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
15376         debug_mem_ref_stats, debug_memory_partitions,
15377         debug_mem_sym_stats): Declare.
15378         * tree-ssa-structalias.c (update_alias_info): Update call
15379         sites, pure/const call sites and asm sites in structure
15380         returned by gimple_mem_ref_stats.
15381         Remove local variable IS_POTENTIAL_DEREF.
15382         Increase NUM_DEREFS if the memory expression is a potential
15383         dereference.
15384         Call update_mem_sym_stats_from_stmt.
15385         If the memory references memory, call
15386         update_mem_sym_stats_from_stmt for all the direct memory
15387         symbol references found.
15388         (intra_create_variable_infos): Set noalias_state field for
15389         pointer arguments according to the value of
15390         flag_argument_noalias.
15391         * tree-ssa-structalias.h (struct alias_info): Remove fields
15392         num_calls_found and num_pure_const_calls_found.
15393         (update_mem_sym_stats_from_stmt): Declare.
15394         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
15395         Set default value to 100.
15396         (PARAM_AVG_ALIASED_VOPS): Define.
15398 2007-04-11  Richard Guenther  <rguenther@suse.de>
15400         PR middle-end/31530
15401         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
15402         a * -b + c as c - a * b if we honor sign dependent rounding.
15404 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15406         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
15407         bfin_expand_strmov.
15408         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
15409         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
15410         variables.
15411         (initialize_trampoline): Don't use old-style function definition.
15412         (bfin_secondary_reload): Mark IN_P argument as unused.
15414 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
15416         PR tree-optimization/31343
15417         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
15418         (build_polynomial_chrec): Return a scalar when the evolution is zero.
15419         * testsuite/gcc.dg/vect/pr31343.c: New.
15421 2007-04-10  Eric Christopher  <echristo@apple.com>
15423         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
15424         * config/i386/i386.md (*cmpfp0): Use.
15425         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
15426         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
15427         (fix_trunc<mode>_i386_fisttp): Ditto.
15428         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
15429         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
15430         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
15431         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
15432         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
15433         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
15434         (unnamed_splitters): Ditto.
15435         * config/i386/i386.c (output_fix_trunc): Assert that
15436         we're not being passed a TFmode operand.
15438 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
15440         PR tree-optimization/31526
15441         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
15442         n_basic_blocks to find newly added blocks.
15444 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
15446         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
15447         alternative.
15448         (fix_trunc<mode>si_sse): Ditto.
15449         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
15450         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
15451         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
15452         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
15453         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
15454         expander using SSEMODEF mode macro.
15455         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
15456         expander using SSEMODEF mode macro.
15457         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
15458         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
15459         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
15460         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
15461         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
15462         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
15463         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
15464         Macroize insn using X87MODEF mode macro.
15466 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
15468         * config/i386/sse.md (sse2_pinsrw): Removed.
15469         (sse2_pextrw): Renamed to ...
15470         (*sse2_pextrw): This.
15472 2007-04-09  Jan Hubicka  <jh@suse.cz>
15474         PR target/27869
15475         * config/i386/sse.md
15476         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
15477         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
15478         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
15479         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
15481 2007-04-09  Jan Hubicka  <jh@suse.cz>
15483         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
15484         multiple fields of union.
15486 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
15488         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
15489         (create_preheaders): Check that loops are available.
15490         (fix_loop_structure): Clean up, improve comments.
15491         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
15492         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
15493         state flags.
15494         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
15495         * predict.c (tree_estimate_probability): Do not call
15496         calculate_dominance_info.  Call create_preheaders.
15497         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
15498         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
15499         flags.
15500         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
15501         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
15502         * tree-cfg.c (tree_split_edge): Make an assert more precise.
15503         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
15504         arguments.
15506 2007-04-08  Jan Hubicka  <jh@suse.cz>
15508         * tree.h (maybe_fold_offset_to_component_ref): Declare.
15509         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
15510         * fold-const.c (fold_unary): Use it.
15512 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15514         * varasm.c (assemble_variable): Remove call to
15515         lang_hooks.decls.prepare_assemble_variable.
15516         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
15517         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
15518         * langhooks.h (lang_hooks_for_decls): Remove
15519         prepare_assemble_variable.
15521 2007-04-08  Mike Stump  <mrs@apple.com>
15523         * config/i386/i386.c: Use inc/dec on Core2.
15525 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
15527         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
15528         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
15529         lhd_tree_inlining_end_inlining): Remove.
15530         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
15531         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
15532         end_inlining hooks.
15533         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
15534         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
15535         lhd_tree_inlining_end_inlining): Remove prototypes.
15536         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
15537         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
15538         LANG_HOOKS_TREE_INLINING_START_INLINING,
15539         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
15541         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
15542         not set it.
15544 2007-04-08  Anatoly Sokolov <aesok@post.ru>
15546         PR target/29932
15547         * config/avr/predicates.md (io_address_operand): Delete predicate.
15548         (low_io_address_operand): Don't use 'mode' argument.
15549         (higth_io_address_operand): Rename ...
15550         (high_io_address_operand): ... to this. Don't use 'mode' argument.
15551         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
15552         for above change.
15554 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
15556         Revert change removing staticp.
15558 2007-04-07  Anatoly Sokolov <aesok@post.ru>
15560         PR target/30289
15561         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
15562         earlyclobber.
15564 2007-04-07  Bruce Korb  <bkorb@gnu.org>
15566         * c.opt: Add -Wformat-contains-nul.
15567         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
15568           -Wformat setting.
15569         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
15570         the NUL byte warning.
15572 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
15574         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
15576 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
15578         * tree.c (staticp): No longer use staticp langhook.
15579         * langhooks.c (lhd_staticp): Removed.
15580         * langhooks.h (struct lang_hooks): Remove staticp.
15581         * c-common.c (c_staticp): Remove.
15582         * c-common.h (c_staticp): Ditto.
15583         * langhooks-defs.h (lhd_staticp): Ditto.
15584         (LHD_HOOKS_STATICP): Ditto
15585         * tree.h (gcc_assert_lowered): New macro.
15587 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
15589         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
15590         argument "reliable".
15591         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
15592         Add argument "reliable".  Propagate it through calls.
15593         (infer_loop_bounds_from_undefined):  Derive number of iterations
15594         estimates from references in blocks that do not dominate loop latch.
15595         (gcov_type_to_double_int): New function.
15596         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
15597         and expected_loop_iterations_unbounded.
15598         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
15599         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
15600         * tree-data-ref.c (estimated_loop_iterations): Export.
15601         (get_references_in_stmt): Fix -- do not return addresses of local
15602         objects.
15603         * cfgloop.h (expected_loop_iterations_unbounded,
15604         estimated_loop_iterations): Declare.
15606 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
15608         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
15610 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
15612         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
15613         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
15614         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
15615         Use output_387_reg_move().
15616         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
15617         expander using X87MODEF12 mode macro.
15618         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
15619         choosing register preferences.  Use output_387_reg_move().
15620         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
15621         instead of "x".  Use output_387_reg_move().
15622         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
15623         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
15624         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
15625         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
15626         Use output_387_reg_move().
15627         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
15628         mode macro.
15629         (*truncxf?f_i387 splitter): Ditto.
15631 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
15633         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
15634         LANG_HOOKS_SAFE_FROM_P.
15635         * expr.c (safe_from_p): Remove langhook call.
15636         * langhooks.h (lang_hooks): Remove safe_from_p.
15637         (lhd_safe_from_p): Remove prototype.
15638         * langhooks.c (lhd_safe_from_p): Remove.
15640 2007-04-06  Jan Hubicka  <jh@suse.cz>
15642         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
15643         functions.
15645 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
15647         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
15648         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
15649         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
15650         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
15651         alternative.
15652         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
15653         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
15655 2007-04-05  Richard Henderson  <rth@redhat.com>
15657         * config/alpha/alpha.c (print_operand) [+]: Remove.
15658         (alpha_end_function): Print nop if call at end of function.
15659         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
15660         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
15661         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
15662         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
15663         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
15664         the call pattern. Update peepholes to match.
15666 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
15668         * doc/extend.texi (Other Builtins): Add decimal float variants
15669         of signbit.
15670         * builtins.def: Ditto.
15671         * builtins.c (expand_builtin): Ditto.
15673 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
15674             H.J. Lu  <hongjiu.lu@intel.com>
15676         PR target/31478
15677         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
15678         of V8HImode when calling ix86_binary_operator_ok.
15679         (sse2_pmaddwd): Call ix86_binary_operator_ok.
15680         (sdot_prodv8hi): Operands 1 and 2 must be register.
15682 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
15684         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
15685         initialize align to silence bogus warning.
15687 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
15689         PR middle-end/22156
15690         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
15691         all_no_warning.
15692         (struct sra_walk_fns): Remove use_all parameter from use.
15693         (sra_hash_tree): Handle BIT_FIELD_REFs.
15694         (sra_elt_hash): Don't hash bitfld blocks.
15695         (sra_elt_eq): Skip them in parent compares as well.  Handle
15696         BIT_FIELD_REFs.
15697         (sra_walk_expr): Don't maintain or pass down use_all_p.
15698         (scan_use): Remove use_all parameter.
15699         (scalarize_use): Likewise.  Re-expand assignment to
15700         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
15701         output, and re-scalarize after output.  Don't mark anything
15702         for no warning.
15703         (scalarize_ldst): Adjust.
15704         (scalarize_walk_gimple_modify_statement): Likewise.
15705         (build_element_name_1): Handle BIT_FIELD_REFs.
15706         (instantiate_element): Don't warn for any element whose parent
15707         is used as a whole.
15708         (instantiate_missing_elements_1): Return the sra_elt.
15709         (canon_type_for_field): New.
15710         (try_instantiate_multiple_fields): New.
15711         (instantiate_missing_elemnts): Use them.
15712         (mark_no_warning): Removed.
15713         (generate_one_element_ref): Handle BIT_FIELD_REFs.
15714         (REPLDUP, sra_build_elt_assignment): New.
15715         (generate_copy_inout): Use them.
15716         (generate_element_copy): Likewise.  Handle bitfld differences.
15717         (generate_element_zero): Don't recurse for blocks.  Use
15718         sra_build_elt_assignment.
15719         (generate_one_element_int): Take elt instead of var.  Use
15720         sra_build_elt_assignment.
15721         (generate_element_init_1): Adjust.
15722         (scalarize_use, scalarize_copy): Use REPLDUP.
15723         (scalarize_ldst): Move assert before dereference.
15724         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
15726 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
15728         * regmove.c: Fix unused variable warnings due to previous commit.
15730 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
15732         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
15733         (regmove_bb_head): Remove.
15734         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
15735         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
15736         problems with fixup_match_1.
15737         Don't initialize/free regmove_bb_head.
15739         (reg_is_remote_constant_p): If an insn is in the same basic block
15740         but not before INSN, consider it remote, too.
15742 2007-04-05  Anatoly Sokolov <aesok@post.ru>
15744         PR target/25448
15745         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
15746         DECL_ASSEMBLER_NAME, not the DECL_NAME.
15748 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
15750         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
15751         (CONDITIONAL_REGISTER_USAGE): Likewise.
15753 2007-04-04  Richard Henderson  <rth@redhat.com>
15755         * config/alpha/lib1funcs.asm: Remove unused file.
15757 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15759         PR other/31356
15760         * opts.c (print_specific_help): Fix --help=<language>
15761         header line.
15762         (common_handle_option): Support --help=common.
15764 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15766         PR other/31353
15767         * gcc.c (main): Do not run the linker if
15768         print_subprocess_help indicates that it shouldn't be
15769         run.
15771 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15773         PR doc/31355
15774         * doc/invoke.texi (--help=): Document <languages> value, fix
15775         formatting in tables of values.
15777 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
15779         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
15780         dllimport attribute of virtual methods.
15782 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
15784         * config/score/crti.asm: Change _bss_start to __bss_start.
15785         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
15786         (OUTGOING_REG_PARM_STACK_SPACE) update.
15787         * config/score/score.opt: add options to make backend support
15788         score5, score5u, score7 and score7d.
15789         * config/score/score.md: Likewise.
15790         * config/score/misc.md: Likewise.
15791         * config/score/mac.md: Likewise.
15792         * doc/invoke.texi: Likewise.
15793         * doc/md.texi: update constraints define.
15795 2007-04-03  Richard Henderson  <rth@redhat.com>
15797         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
15798         an appropriate type, use the mode instead.
15800 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
15802         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
15803         Set the default --with-arch setting to mips2.
15804         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
15805         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
15806         (MULTILIB_OSDIRNAMES): Delete.
15807         (MULTILIB_DIRNAMES): Define.
15808         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
15809         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
15810         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
15811         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
15812         VXWORKS_OS_CPP_BUILTINS.
15813         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
15814         (MIPS_DEBUGGING_INFO): Undefine.
15815         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
15817 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
15819         PR middle-end/30704
15820         * fold-const.c (native_encode_real): Encode real.c provided longs
15821         as a series of 32-bit native integers.
15822         (native_interpret_real): Interpret buffer as a series of 32-bit
15823         native integers.
15825 2007-04-03  Richard Guenther  <rguenther@suse.de>
15827         * genpreds.c (write_insn_constraint_len): Write function
15828         optimized for CONSTRAINT_LEN implementation.
15829         (write_tm_preds_h): Output insn_constraint_len inline and
15830         use it for CONSTRAINT_LEN.
15831         (write_insn_preds_c): Don't output insn_constraint_len.
15832         * doc/md.texi (define_register_constraint): Document multi-letter
15833         constraints shall have the same length if they start with the same
15834         letter.
15836 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
15838         PR target/31175
15839         * config/i386/i386.md (isinf<mode>2): Expand only when
15840         TARGET_C99_FUNCTIONS is set.
15842 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
15844         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
15845         (x86_64-*-linux*): Ditto.
15846         * config/i386/i386.opt (mpc): New option.
15847         * config/i386/i386.c (overrride_options): Handle
15848         ix87_precision_string.
15849         * config/i386/crtprec.c: New file.
15850         * config/i386/t-crtpc: Ditto.
15851         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
15852         and -mpc80 options.
15853         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
15854         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
15855         crtprec32.o, crtprec64.o and crtprec80.o.
15857         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
15858         and -mpc80 options.
15859         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
15861 2007-04-02  Eric Christopher  <echristo@apple.com>
15863         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
15864         limitations on darwin.
15866 2007-04-02  Anatoly Sokolov <aesok@post.ru>
15868         PR target/31137
15869         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
15871 2007-04-02  Dave Korn  <dave.korn@artimi.com>
15873         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
15875 2007-04-02  Dave Korn  <dave.korn@artimi.com>
15877         * libgcc2.h (exception_descriptor): Don't forward-declare.
15878         (__get_eh_table_language, __get_eh_table_version): Delete
15879         prototypes of long-dead functions.
15881 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
15883         * ebitmap.h: New file
15884         * ebitmap.c: New file
15885         * Makefile.in (ebitmap.o): New target.
15887 2007-04-01  Jan Hubicka  <jh@suse.cz>
15889         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
15890         before very first instruction.
15892 2007-04-01  Jan Hubicka  <jh@suse.cz>
15894         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
15895         waring on 64bit hosts.
15896         * bitmap.h: Fix typo in bitmap_head_def.
15898 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
15900         PR rtl-optimization/31391
15901         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
15902         into a DELETED_LABEL note, and the label is in an empty basic
15903         block, update BB_END as well as BB_HEAD.
15905 2007-04-01  Richard Henderson  <rth@redhat.com>
15907         PR tree-optimization/31169
15908         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
15909         to varying if the range is outside [0,  prec-1].
15911 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
15913         PR target/31388
15914         * config/mips/mips.md (load_const_gp): New insn.
15915         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
15916         the MIPS16 GP pseudo register if no_new_pseudos.
15917         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
15919 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15921         PR target/31364
15922         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
15923         secureplt.
15924         (call_value): Likewise.
15926 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
15927             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15929         PR 14737
15930         * doc/invoke.texi: (optimization options): Reword description
15931         of -ffast-math. Document its primary purpose.
15933 2007-03-31  Richard Guenther  <rguenther@suse.de>
15935         * omp-low.c (splay-tree.h): Include.
15936         (lookup_decl): Replace splay-tree usage by pointer-map.
15937         (maybe_lookup_decl): Likewise.
15938         (new_omp_context): Likewise.
15939         (delete_omp_context): Likewise.
15940         * gimplify.c (splay-tree.h): Include.
15941         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
15942         pointer-map.
15943         (remap_ssa_name): Likewise.
15944         (remap_decl): Likewise.
15945         (remap_type_1): Likewise.
15946         (remap_type): Likewise.
15947         (copy_body_r): Likewise.
15948         (expand_call_inline): Likewise.
15949         (clone_body): Likewise.
15950         (copy_tree_r): Likewise.
15951         (remap_save_expr): Likewise.
15952         (unsave_r): Likewise.
15953         (unsave_expr_now): Likewise.
15954         (tree_function_versioning): Likewise.
15955         (build_duplicate_type): Likewise.
15956         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
15957         (struct copy_body_data): Replace splay-tree by pointer-map.
15958         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
15959         not $(SPLAY_TREE_H).
15960         (gimplify.o): Depend on $(SPLAY_TREE_H).
15961         (omp-low.p): Likewise.
15963 2007-03-31  Anatoly Sokolov <aesok@post.ru>
15965         * config/avr/predicates.md (even_register_operand,
15966         odd_register_operand): New predicates.
15967         * config/avr/avr.md (movw peephole2): New.
15968         (movw_r peephole2): New.
15970 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
15972         * tree.h (get_signed_or_unsigned_type): New.
15973         * fold-const.c (operand_equal_for_comparison_p): Use
15974         get_signed_or_unsigned_type instead of
15975         lang_hooks.types.signed_or_unsigned_type.
15976         * expr.c (store_expr): Ditto.
15977         * langhooks.c (get_signed_or_unsigned_type): New.
15978         (lhd_signed_or_unsigned_type): New.
15979         * langhooks.h (lhd_signed_or_unsigned_type): New.
15980         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
15982 2007-03-30  Richard Henderson  <rth@redhat.com>
15984         * tree-ssa-loop-ivopts.c: Include target.h.
15985         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
15986         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
15987         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
15988         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
15990 2007-03-30  Richard Henderson  <rth@redhat.com>
15991             Kai Tietz  <kai.tietz@onevision.com>
15993         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
15994         default for 64-bit.
15995         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
15996         (TARGET_64BIT_MS_ABI): New.
15997         (DBX_REGISTER_NUMBER): Handle 64-bit.
15998         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
15999         (LONG_TYPE_SIZE): Force to 32.
16000         (REG_PARM_STACK_SPACE): New.
16001         (OUTGOING_REG_PARM_STACK_SPACE): New.
16002         (REGPARM_MAX, SSE_REGPARM_MAX): New.
16003         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
16004         (STACK_BOUNDARY): Use 128 for 64-bit.
16005         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
16006         Add 64-bit implementation.
16007         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
16008         argument unused.
16009         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
16010         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
16011         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
16012         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
16013         (ix86_handle_cconv_attribute): Don't warn when ignoring if
16014         TARGET_64BIT_MS_ABI.
16015         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
16016         (ix86_pass_by_reference): Likewise.
16017         (ix86_function_value_regno_p): Likewise.
16018         (ix86_build_builtin_va_list): Likewise.
16019         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
16020         (function_arg_advance_ms_64): New.
16021         (function_arg_advance): Call it.
16022         (function_arg_ms_64): New.
16023         (function_arg): Call it.
16024         (function_value_ms_64): New.
16025         (ix86_function_value_1): Call it.
16026         (return_in_memory_ms_64): New.
16027         (ix86_return_in_memory): Call it.
16028         (setup_incoming_varargs_ms_64): New.
16029         (ix86_setup_incoming_varargs): Call it.
16030         (ix86_expand_prologue): Handle 64-bit stack probing.
16031         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
16032         (output_pic_addr_const): Likewise.
16033         (x86_this_parameter): Likewise.
16034         (x86_output_mi_thunk): Likewise.
16035         (x86_function_profiler): Likewise.
16036         (TARGET_STRICT_ARGUMENT_NAMING): New.
16037         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
16038         (TARGET_64BIT_MS_ABI): New.
16039         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
16040         * config/i386/i386.md (allocate_stack_worker): Remove.
16041         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
16042         describe the clobber of eax without a match_scratch.
16043         (allocate_stack_worker_postreload): Remove.
16044         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
16045         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
16046         (allocate_stack_worker_rex64_postreload): Remove.
16047         (allocate_stack): Handle 64-bit.
16048         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
16049         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
16050         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
16051         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
16052         (STANDARD_STARTFILE_PREFIX_1): Likewise.
16053         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
16054         * config.build (x86_64-*-mingw*): New host.
16055         * config.host (x86_64-*-mingw*): New host.
16056         * config.gcc (x86_64-*-mingw*): New target.
16057         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
16059 2007-03-30  Richard Henderson  <rth@redhat.com>
16060             Kai Tietz  <kai.tietz@onevision.com>
16062         * c-pragma.c (struct def_pragma_macro_value): New.
16063         (struct def_pragma_macro): New.
16064         (pushed_macro_table): New.
16065         (dpm_hash, dpm_eq): New.
16066         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
16067         (init_pragma): Install them.
16068         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
16070 2007-03-30  Anatoly Sokolov <aesok@post.ru>
16072         * config/avr/avr.c (avr_override_options): Clear
16073         'flag_delete_null_pointer_checks'.
16075 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
16077         PR c++/26099
16078         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
16079         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
16080         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
16081         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
16082         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
16083         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
16084         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
16085         C++ extensions.
16086         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
16088 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
16090         * regmove.c: Move all of pass_stack_adjustments from here...
16091         * combine-stack-adj.c: ...to this new file.
16092         * Makefile.in: Add rules for combine-stack-adj.o.
16094 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
16096         PR tree-optimization/31383
16097         * tree-data-ref.c (affine_function_equal_p): Do not require the
16098         vectors to have the same length.
16100 2007-03-30  Jan Hubicka  <jh@suse.cz>
16102         PR middle-end/30700
16103         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
16104         availablility; add more sanity checking; ask varpool only about
16105         VAR_DECL.
16107 2007-03-29  Richard Henderson  <rth@redhat.com>
16109         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
16110         to decide, but __SIZEOF_LONG_LONG__.
16112 2007-03-29  Richard Henderson  <rth@redhat.com>
16114         * emutls.c (struct __emutls_array): New.
16115         (emutls_destroy): Use it instead of casting element 0 from void*.
16116         (__emutls_get_address): Likewise.
16118 2007-03-29  Richard Henderson  <rth@redhat.com>
16120         * varasm.c (initializer_constant_valid_p): Don't deny
16121         DECL_DLLIMPORT_P on functions.
16123         * config/i386/cygming.h: Remove function declarations.
16124         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
16125         (ASM_OUTPUT_LABELREF): Remove.
16126         (COMMON_ASM_OP): Remove.
16127         (ASM_OUTPUT_COMMON): Remove.
16128         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
16129         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
16130         (ASM_DECLARE_FUNCTION_NAME): Likewise.
16131         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
16132         Rename from TARGET_ENCODE_SECTION_INFO.
16133         * config/i386/netware.h: Likewise.
16134         * config/i386/i386-protos.h: Update.
16135         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
16136         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
16137         (legitimate_constant_p): Reject dllimports.
16138         (dllimport_map, get_dllimport_decl): New.
16139         (legitimize_dllimport_symbol): New.
16140         (legitimize_address, ix86_expand_move): Use it.
16141         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
16142         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
16143         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
16144         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
16145         * config/i386/predicates.md (constant_call_address_operand): Only
16146         accept symbols; reject dllimport_p symbols.
16147         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
16148         i386_pe_maybe_record_exported_symbol.
16149         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
16150         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
16151         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
16152         trust the setting of DECL_DLLIMPORT_P.
16153         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
16154         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
16155         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
16156         tidy the argument scanning loop.
16157         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
16158         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
16159         (i386_pe_strip_name_encoding): Remove.
16160         (i386_pe_binds_local_p): New.
16161         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
16162         (i386_pe_output_labelref): Remove.
16163         (i386_pe_asm_output_aligned_decl_common): New.
16164         (i386_pe_maybe_record_exported_symbol): Rename from
16165         i386_pe_record_exported_symbol; check for dllexported symbols.
16167 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
16169         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
16170         add comment explaining why vsnprintf cannot be used.
16172 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
16174         PR tree-optimization/30666
16175         * tree.c (build_complex_type): When creating type names for DWARF2
16176         debug info, create TYPE_DECLs for TYPE_NAME instead of
16177         IDENTIFIER_NODEs.
16178         (build_common_tree_nodes_2): Use build_complex_type when building
16179         predefined complex types, to preserve canonical types.
16181 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
16183         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
16184         (noce_get_alt_condition): Look at it to determine whether to
16185         reverse the condition or not.
16186         (noce_get_condition): Substitute the truth for lies.
16187         (noce_find_if_block): Set the then_else_reversed field.
16189 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
16191         * config/fr30/fr30.md (movdi): Do not accept immediates as the
16192         destination of this insn.
16193         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
16194         than calling gen_rtx_SET directly.  Use r0 to hold the value of
16195         'address + 4' rather than a stack based temporary which can be
16196         mis-optimized away.
16198 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
16200         * config/s390/s390.c (s390_secondary_input_reload_class,
16201         s390_secondary_output_reload_class): Functions removed.
16202         (s390_secondary_reload): New function.
16203         (TARGET_SECONDARY_RELOAD): Target macro defined.
16204         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
16205         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
16206         * config/s390/s390.md ("reload_outti", "reload_outdi",
16207         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
16208         "reload_out<mode>"): Expanders removed.
16209         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
16210         "reload<mode>_nonoffmem_out"): Expanders added.
16212 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
16214         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
16215         action if SRC->DEST replacement failed anyway.
16217 2007-03-28  Mike Stump  <mrs@apple.com>
16219         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
16220         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
16221         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
16223 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
16225         * config.gcc: Accept barcelona as a variant of amdfam10.
16226         * config/i386/i386.c (override_options): Likewise.
16227         * doc/invoke.texi: Likewise.
16229 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
16231         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
16232         offsets for BIT_FIELD_REF and COMPONENT_REF.
16234 2007-03-28  Richard Guenther  <rguenther@suse.de>
16236         * tree.c (is_global_var): Move ...
16237         * tree-flow-inline.h (is_global_var): ... here.
16238         * tree.h (is_global_var): Remove declaration.
16240 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
16242         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
16243         option.
16244         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
16245         * config/i386/i386.c (ix86_tune_features): Initialize new
16246         tuning option.
16247         * config/i386/predicates.md (promotable_binary_operator): Use
16248         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
16250 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
16252         PR target/31380
16253         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
16255 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
16257         * config/fr30/fr30.md (movsi_internal): Change destination
16258         constraint from m to V and add m to the end.
16260 2007-03-28  Christian Bruel  <christian.bruel@st.com>
16262         * config/sh/sh.md (movsi_i): Fix type attribute.
16264 2007-03-28  Christian Bruel  <christian.bruel@st.com>
16266         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
16267         (movsf_ie): Likewise.
16269 2007-03-28  Christian Bruel  <christian.bruel@st.com>
16271         * config.gcc: Add sh4-300 to multilib.
16272         * config/sh/t-mlib-sh4-300: New file.
16274 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
16276         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
16277         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
16278         fix_trunc<mode>di2.
16279         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
16280         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
16281         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
16282         "fixuns_trunctddi2"): Whitespace fix.
16284 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
16286         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
16287         the definition of struct sh_args.
16288         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
16289         CALL_COOKIE_INT_REG_GET): Likewise.
16291 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
16293         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
16294         transformations are applied successfully.
16296 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
16298         * tree.c (tree_contains_struct): Permit 512 tree codes.
16299         * tree.h (tree_contains_struct): Ditto.
16300         (MAX_TREE_CODES): Ditto.
16301         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
16302         SPARE member to store remaining padding bits.
16304 2007-03-27  Anatoly Sokolov <aesok@post.ru>
16306         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
16307         architecture.
16309 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
16311         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
16312         * configure: Regenerate.
16314         * configure: Regenerate using the correct version of autoconf.
16316 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
16318         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
16319         pointer regs.
16320         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
16321         regs to "__SP_L__" and "__SP_H__".
16323 2007-03-27  Richard Guenther  <rguenther@suse.de>
16325         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
16326         computations with it with a HOST_WIDE_INT variable.
16328 2007-03-26  Mike Stump  <mrs@apple.com>
16330         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
16331         objective-c-header, objective-c++-header and objc++-cpp-output
16332         support.
16333         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
16335 2007-03-26  Richard Henderson  <rth@redhat.com>
16337         PR target/31361
16338         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
16339         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
16340         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
16341         IX86_BUILTIN_PSRLQ128): New.
16342         (ix86_init_mmx_sse_builtins): Add them.
16343         (ix86_expand_builtin): Expand them.
16344         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
16345         operand 2 be TImode.
16346         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
16347         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
16348         _mm_srli_epi64): Mark __B const.
16349         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
16350         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
16351         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
16352         new two-vector shift builtins.
16354 2007-03-26  Ian Lance Taylor  <iant@google.com>
16356         PR tree-optimization/31345
16357         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
16358         [+INF, +INF(OVF)] into VARYING.
16360 2007-03-26  Zack Weinberg  <zackw@panix.com>
16362         * gengtype-parse.c: New file.
16363         * gengtype-yacc.y: Delete.
16364         * gengtype-lex.l: Don't include gengtype-yacc.h.
16365         Define YY_DECL and yyterminate appropriately for recursive
16366         descent parser.  yylval is now a string out-parameter to yylex.
16367         (HWS, EOID): New shorthand.
16368         (IWORD): Add a couple more types.
16369         (yylex): Add a setup stanza.  Remove the complex rules for
16370         detecting GTY'ed types and typedefs; replace with simple
16371         keyword detectors.  Adjust everything for the changed
16372         definition of yylval.  Ignore all pp-directives, not just #define.
16373         (yyerror): Delete.
16374         (parse_file): Rename yybegin; do not call yyparse.
16375         (yyend): New.
16376         * gengtype.c (xasprintf): Export again.
16377         (this_file): New.  Use everywhere __FILE__ was being used.
16378         (get_lang_bitmap): Special case types defined in gengtype.c.
16379         (do_typedef, new_structure): Suppress definition of certain types.
16380         (new_structure): Improve diagnostics of duplicate definitions.
16381         Make sure location_s is associated with input.h.
16382         (nreverse_pairs, define_location_structures): New functions.
16383         (main): Improve tagging of kludge types.  Remove old kludges
16384         for input.h types; use define_location_structures.
16385         * gengtype.h: Update prototypes.  Define token codes here.
16386         * Makefile.in: Remove all references to gengtype-yacc.
16387         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
16388         and gengtype.
16389         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
16390         add GTY((skip)) to the field that's only conditionally there.
16391         * doc/install.texi: Document that Bison is no longer required
16392         unless building treelang.
16394         * gengtype.c: Don't include gtyp-gen.h.
16395         (srcdir): Declare here.
16396         (base_files, lang_dir_names): Allocate dynamically.
16397         (gt_files, num_gt_files, num_lang_dirs): New globals.
16398         (measure_input_list, read_input_line, read_input_list)
16399         (set_lang_bitmap): New functions.
16400         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
16401         simplify, relying on read_input_list to set up the bitmaps.
16402         (main): Arguments are no longer unused.  Check for correct number
16403         of command line arguments, set srcdir and srcdir_len, then call
16404         read_input_list, before doing anything else.  No need to worry
16405         about duplicates in main loop.
16406         * configure.ac: Simplify the calculation of all_gtfiles.
16407         Put language tags in there.  Don't set or substitute
16408         all_gtfiles_files_langs or all_gtfiles_files_frags.
16409         * Makefile.in: Revamp the way gengtype is invoked, now that it
16410         takes a file on its command line with a much simpler format.
16411         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
16412         (GTFILES): Remove duplicates and C source files.
16413         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
16414         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
16415         * configure: Regenerate.
16417         * gengtype.h: Remove all type definitions to gengtype.c; leave
16418         only definitions of options_p, type_p, and pair_p as opaque
16419         pointers.  Update prototypes.
16420         * gengtype.c: Many type definitions moved here from gengtype.h.
16421         Consolidate type definitions at the top of the file.
16422         (xvasprintf): Delete.
16423         (xasprintf): Make static.
16424         (create_nested_pointer_option): Add 'next' parameter.
16425         (create_field_all, create_field_at): New functions.
16426         (create_field): Now a thin wrapper around create_field_all.
16427         (create_optional_field): Rename create_optional_field_ and add
16428         line argument.  Original name is now a macro which supplies
16429         __LINE__.
16430         (oprintf): Use vsnprintf directly.
16431         (close_output_files): Use fatal rather than perror/exit.
16432         (note_def_vec, note_def_vec_alloc): Use create_field_at.
16433         (main): Set progname.  Don't use exit.
16434         * gengtype-yacc.y (struct_fields): Use create_field_at.
16435         (option, optionseqopt): Delete.
16436         (optionseq): Consolidate productions from option here so we
16437         can use the first argument to create_option.
16439         * gengtype-lex.l: Distinguish unions from structures in the
16440         token type.  Don't call find_structure; return the tag as a string.
16441         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
16442         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
16443         string.  Reorganize typedef_struct production accordingly.
16444         Use create_nested_ptr_option.
16445         * gengtype.c (create_nested_ptr_option): New function.
16446         * gengtype.h: Declare it.
16448         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
16449         (string_type): Don't declare.
16450         (do_scalar_typedef): Declare.
16451         (create_scalar_type): Update prototype.
16452         * gengtype.c (string_type): Make static.
16453         (scalar_nonchar, scalar_char): New.
16454         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
16455         (resolve_typedef): Use scalar_nonchar for error recovery.
16456         (create_scalar_type): Remove name_len field.  Return scalar_char
16457         or scalar_nonchar as appropriate.
16458         (adjust_field_type): Look at scalar_is_char boolean to decide whether
16459         to use string_type.
16460         (throughout): Use scalar_nonchar instead of calling
16461         create_scalar_type, whenever possible.
16462         (main): Initialize scalar_char and scalar_nonchar before calling
16463         gen_rtx_next.
16464         * gengtype-lex.l: Adjust for removal of second argument to
16465         create_scalar_type.  Use yylval.s instead of yylval.t when
16466         returning SCALAR.
16467         * gengtype-yacc.y: Type of SCALAR is string.  Call
16468         create_scalar_type from type:SCALAR rule.  Adjust for removal of
16469         second argument to create_scalar_type.
16471         * vec.h: Remove all #if IN_GENGTYPE blocks.
16472         Add comment saying that changes may require adjustments to gengtype.
16473         * gengtype.c: Don't include coretypes.h or tm.h.
16474         Add comment to inclusion of errors.h.
16475         (note_def_vec, note_def_vec_alloc): New functions.
16476         * gengtype.h: Declare new functions.
16477         * gengtype-lex.l: Don't include coretypes.h.
16478         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
16479         Delete.
16480         (update_lineno): Remove unnecessary prototype.
16481         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
16482         (VEC rule): Just return VEC_TOKEN.
16483         * gengtype-yacc.y (VEC_TOKEN): New token type.
16484         (type): Add a production for VEC(a,b).
16485         * Makefile.in: Update dependencies.
16487         * gengtype-lex.l: Remove rules for parsing pointer-to-function
16488         typedefs that use the old PARAMS macro.
16490         * gengtype-lex.l: Remove all rules and states relating to yacc
16491         input files.
16492         * gengtype-yacc.y: Similarly.
16493         * gengtype.c (note_yacc_type): Delete function.
16494         * gengtype.h: Update prototypes.
16496 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
16498         * tree-pretty-print.c (dump_generic_node): Report precision of
16499         unnamed integer types.
16501 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
16503         * ifcvt.c (noce_try_store_flag_constants): Don't check
16504         no_new_pseudos here.
16505         (noce_try_store_flag_constants): Don't check no_new_pseudos.
16506         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
16507         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
16508         noce_try_sign_mask): Likewise.
16509         (if_convert): Check no_new_pseudos here.
16511         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
16512         Remove prototypes.
16513         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
16514         (noce_get_condition): Handle new then_else_reversed argument.
16515         (noce_init_if_info): Remove, fold into noce_find_if_block.
16516         (noce_process_if_block): Take a struct noce_if_info as the
16517         argument.  Don't set up one based on ce_if_info.  Update pointer
16518         references accordingly.
16519         (cond_move_process_if_block): Likewise.
16520         (process_if_block): Removed.
16521         (find_if_block): Removed.  Move functionality two new functions,
16522         noce_find_if_block and cond_exec_find_if_block.
16523         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
16524         blocks and the symmetric IF-ELSE-JOIN case.
16525         (cond_exec_find_if_block): Also new function mostly based on old
16526         find_if_block and process_if_block.
16527         (find_if_header): Replace find_if_block call with separately
16528         guarded calls to noce_find_if_block and cond_exec_find_if_block.
16529         (find_cond_trap): Update noce_get_condition call.
16530         (dead_or_predicable): Likewise.
16532 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
16534         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
16535         Remove.
16536         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
16537         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
16538         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
16539         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
16540         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
16541         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
16542         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
16543         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
16544         __builtin_ia32_psrad128 builtins.
16546 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
16548         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
16549         * config/i386/constraints.md
16550         (define_constraint "I"): Use IN_RANGE macro.
16551         (define_constraint "J"): Ditto.
16552         (define_constraint "K"): Ditto.
16553         (define_constraint "M"): Ditto.
16554         (define_constraint "N"): Ditto.
16555         (define_constraint "O"): Ditto.
16556         * config/i386/predicates.md
16557         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
16558         (define_predicate "const_0_to_3_operand"): Ditto.
16559         (define_predicate "const_0_to_7_operand"): Ditto.
16560         (define_predicate "const_0_to_15_operand"): Ditto.
16561         (define_predicate "const_0_to_63_operand"): Ditto.
16562         (define_predicate "const_0_to_255_operand"): Ditto.
16563         (define_predicate "const_1_to_31_operand"): Ditto.
16564         (define_predicate "const_2_to_3_operand"): Ditto.
16565         (define_predicate "const_4_to_7_operand"): Ditto.
16567 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
16569         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
16570         in SImode for save_world.
16571         * config/rs6000/altivec.md (save_world, restore_world): Convert to
16572         LR hard reg.
16574 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
16576         PR tree-optimization/30784
16577         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
16578         BIT_FIELD_REF.
16580 2007-03-25  Revital Eres  <eres@il.ibm.com>
16582         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
16583           Fold movement_possibility function into it.
16585 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
16587         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
16588         (load_macho_picbase_{si,di}): Convert to LR hard reg.
16589         (call_indirect_nonlocal_darwin64): Same.
16590         (call_nonlocal_darwin64): Same.
16591         (call_value_indirect_nonlocal_darwin64): Same.
16592         (call_value_nonlocal_darwin64): Same.
16593         (sibcall_nonlocal_darwin64): Same.
16594         (sibcall_value_nonlocal_darwin64): Same.
16595         (sibcall_symbolic_64): Same.
16596         (sibcall_value_symbolic_64): Same.
16597         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
16598         LR pseudo.
16599         (rs6000_emit_load_toc_table): Same.
16600         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
16601         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
16602         (mull_call): Same.
16603         (divss_call): Same.
16604         (divus_call): Same.
16605         (quoss_call): Same.
16606         (quous_call): Same.
16607         (load_toc_v4_pic_si): Same
16608         (load_toc_v4_PIC_1): Same.
16609         (load_toc_v4_PIC_1b): Same.
16610         (call_indirect_aix{32,64}): Same.
16611         (call_value_indirect_aix{32,64}): Same.
16612         (call): Same.
16613         (call_value): Same.
16614         (call_local{32,64}): Same.
16615         (call_value_local{32,64}): Same.
16616         (call_indirect_nonlocal_aix{32,64}): Same.
16617         (call_nonlocal_aix{32,64}): Same.
16618         (call_value_indirect_nonlocal_aix{32,64}): Same.
16619         (call_value_nonlocal_aix{32,64}): Same.
16620         (call_indirect_nonlocal_sysv<mode>): Same.
16621         (call_nonlocal_sysv<mode>): Same.
16622         (call_value_indirect_nonlocal_sysv<mode>): Same.
16623         (call_value_nonlocal_sysv<mode>): Same.
16624         (sibcall): Same.
16625         (sibcall_local{32,64}): Same.
16626         (sibcall_value_local{32,64}): Same.
16627         (sibcall_nonlocal_aix{32,64}): Same.
16628         (sibcall_value_nonlocal_aix{32,64}): Same.
16629         (sibcall_nonlocal_sysv<mode>): Same.
16630         (sibcall_value): Same.
16631         (sibcall_value_nonlocal_sysv<mode>): Same.
16633 2007-03-24  Paul Brook  <paul@codesourcery.com>
16635         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
16636         * config/arm/linux-eabi.h: Remove legacy syscall hack.
16638 2007-03-24  Richard Henderson  <rth@redhat.com>
16640         * config/ia64/constraints.md: New file.
16641         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
16642         satisfies_constraint_?.
16643         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
16644         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
16645         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
16646         ia64_output_mi_thunk): Likewise.
16647         (ia64_const_ok_for_letter_p): Remove.
16648         (ia64_const_double_ok_for_letter_p): Remove.
16649         (ia64_extra_constraint): Remove.
16650         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
16651         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
16652         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
16653         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
16654         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
16655         EXTRA_MEMORY_CONSTRAINT): Remove.
16656         * config/ia64/ia64.md: Include constriants.md.  Replace
16657         CONST_OK_FOR_? with satisfies_constraint_?.
16659 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
16660             H.J. Lu  <hongjiu.lu@intel.com>
16662         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
16663         DPD or BID name.
16664         (name macros): Use DPD_BID_NAME to convert names properly.
16666         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
16667         decimal floating point format.
16668         (init_floating_libfuncs): Change decimal functions so that they
16669         have a "bid_" prefix if the decimal system uses the BID format,
16670         and "dpd_" prefix if the decimal system uses the DPD format.
16671         (init_interclass_conv_libfuncs): Ditto.
16672         (init_intraclass_conv_libfuncs): Ditto.
16674         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
16675         using the BID format.
16677         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
16678         whether we are using the BID decimal format.
16679         * configure: Regenerate.
16681         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
16682         the compiler has decimal floating point enabled.  Define
16683         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
16684         instead of DPD.
16686         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
16687         using the BID format.
16689         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
16690         whether we are using the BID decimal format.
16691         * configure: Regenerate.
16693         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
16694         the compiler has decimal floating point enabled.  Define
16695         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
16696         instead of DPD.
16698         * doc/install.texi (--enable-decimal-float): Document BID and DPD
16699         options, and that it is enabled for i386/x86_64 systems.
16701         * Makefile.in (enable_decimal_float): New.
16702         (DECNUMFMT): New.
16703         (DECNUMINC): Add  -I$(DECNUMFMT).
16704         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
16705         to $(DECNUMFMT) from $(DECNUM).
16707         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
16708         Substitute enable_decimal_float.
16709         * configure: Regenerated.
16711         PR other/30529
16712         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
16713         unsigned long.
16715         * configure.ac: Enable decimal float for x86_64-*-linux*.
16716         * configure: Regenerated.
16718         PR other/30530
16719         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
16720         decimal128ClearSign to flip and clear the sign bit in decimal128.
16721         (decimal_real_maxval): Set decimal128SetSign to set the sign
16722         bit in decimal128.
16724 2007-03-23  Ian Lance Taylor  <iant@google.com>
16726         * fold-const.c (fold_binary): Correct warning for X - c >= X.
16728 2007-03-23  Ian Lance Taylor  <iant@google.com>
16730         * tree-dump.c (dump_files): Correct comment.
16732 2007-03-23  Ian Lance Taylor  <iant@google.com>
16734         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
16736 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
16738         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
16739         in cfglayout mode.  Don't go into and out of cfglayout mode.
16740         Link the blocks in the order of the constructed traces.
16741         (rest_of_handle_tracer): Adjust call to tracer.
16742         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
16743         Don't go into cfglayout mode.
16744         (rtl_loop_done): Don't go out of cfglayout mode.
16745         * cfglayout.c (relink_block_chain): New function, split out from...
16746         (fixup_reorder_chain): ...here.  Remove redundant checking.
16747         (cfg_layout_finalize): Don't clear the header, footer, and aux
16748         fields here, move the code to do so to relink_block_chain.  Likewise
16749         for free_original_copy_tables.
16750         * rtl.h (tracer): Update prototype.
16751         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
16752         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
16753         mode.  Use relink_block_chain to serialize the CFG according to the
16754         new basic block order.  Move targetm.cannot_modify_jumps_p check from
16755         here...
16756         (gate_handle_reorder_blocks): ...to here.
16757         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
16758         from here...
16759         (gate_duplicate_computed_gotos): ...to here.
16760         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
16761         something always changes when going into and out of cfglayout mode.
16762         Perform an expensive cfg cleanup while going into cfglayout mode.
16763         Always update liveness information on HAVE_conditional_execution
16764         targets.  Reserialize the basic blocks and go out of cfglayout mode.
16765         * reg-stack.c: Include cfglayout.h.
16766         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
16767         the call to reorder_basic_blocks.
16768         * basic-block.h (reorder_basic_blocks): Update prototype.
16769         (relink_block_chain): New prototype.
16770         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
16772 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
16774         * config/mips/mips.md (type, hazard, *movdi_32bit,
16775         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
16776         *movhi_internal, *movqi_internal, *movsf_hardfloat,
16777         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
16778         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
16779         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
16780         applicable.
16781         (movcc): Change first xfer to multi.
16782         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
16783         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
16784         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
16785         config/mips/generic.md: Change reservations using "xfer" to use
16786         "mfc,mtc".
16787         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
16788         using match_operand.
16789         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
16790         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
16791         examining mode.
16792         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
16794 2007-03-22  Richard Henderson  <rth@redhat.com>
16796         * config/i386/i386.c: Remove unnecessary function declarations.
16797         Move targetm definition, and all related macros, to the end of
16798         the file.  Resort some functions to put definitions before uses.
16799         (ix86_attribute_table): Make static.  Move to end of file.
16800         (ix86_gimplify_va_arg): Make static.
16802 2007-03-22  Richard Henderson  <rth@redhat.com>
16804         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
16805         don't increase local_regparm with force_align_arg_pointer check.
16806         (ix86_function_sseregparm): Assert 32-bit.
16807         (type_has_variadic_args_p): New.
16808         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
16809         type_has_variadic_args_p.
16810         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
16811         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
16812         use memset instead.  Do maybe_vaarg check first; skip attribute
16813         tests if true; skip attribute tests for 64-bit.
16814         (construct_container): Remove TARGET_DEBUG_ARG.
16815         (function_arg_advance_32, function_arg_advance_64): Split out ...
16816         (function_arg_advance): ... from here.
16817         (function_arg_32, function_arg_64): Split out ...
16818         (function_arg): ... from here.
16819         (ix86_pass_by_reference): Tidy.
16820         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
16821         (function_value_32): New, from parts of ix86_function_value
16822         and ix86_value_regno.
16823         (function_value_64): New, from parts of ix86_function_value
16824         and ix86_libcall_value.
16825         (ix86_function_value_1): New.
16826         (ix86_function_value, ix86_libcall_value): Use it.
16827         (return_in_memory_32, return_in_memory_64): Split out ...
16828         (ix86_return_in_memory): ... from here.
16829         (ix86_struct_value_rtx): Skip for 64-bit.
16830         (ix86_libcall_value, ix86_value_regno): Remove.
16831         (setup_incoming_varargs_64): Split out ...
16832         (ix86_setup_incoming_varargs): ... from here.
16833         (ix86_va_start): Remove TARGET_DEBUG_ARG.
16834         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
16835         * config/i386/i386-protos.h (ix86_function_value): Remove.
16836         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
16838 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16840         PR other/23572
16841         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
16842         infinities not supported, otherwise emit warning if -Woverflow. On
16843         underflow, emit warning if -Woverflow.
16844         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
16845         and 0 otherwise.
16846         * real.h (real_from_string): Update declaration
16848 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
16849             Richard Henderson  <rth@redhat.com>
16851         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
16852         * calls.c (compute_argument_block_size, expand_call,
16853         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
16854         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
16855         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
16856         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
16857         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
16858         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
16859         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
16860         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
16861         Set to 1.
16863 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
16865         * c-incpath.c (add_sysroot_to_chain): New.
16866         (merge_include_chains): Add sysroot argument.  Call
16867         add_sysroot_to_chain if sysrooted.
16868         (register_include_chains): Update call to merge_include_chains.
16869         * doc/cppopts.texi: Document use of '=' in include directory
16870         arguments.
16872 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
16874         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
16875         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
16876         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
16877         insn pattern using X87MODEF12 mode macro.
16879 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
16881         * regmove.c (regmove_optimize): Use reg_mentioned_p
16882         instead of reg_overlap_mentioned_p for DST.
16884 2007-03-21  Mike Stump  <mrs@apple.com>
16886         * c.opt: Fixup for Objective-C/C++.
16888 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
16890         * explow.c (convert_memory_address): Fold memory reference when
16891         POINTERS_EXTEND_UNSIGNED < 0
16893 2007-03-21  Richard Henderson  <rth@redhat.com>
16895         PR target/31245
16896         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
16897         * config/i386/mmintrin.h (__m64): Likewise.
16898         * config/i386/xmmintrin.h (__m128): Likewise.
16900 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16902         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
16903         (VXWORKS_OS_CPP_BUILTINS): Define.
16904         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
16905         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
16907 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16909         * rtl.h (constant_pool_reference_p): Delete.
16910         (find_constant_src): Declare.
16911         * rtlanal.c (find_constant_src): New function.
16912         * simplify-rtx.c (constant_pool_reference_p): Delete.
16913         * config/i386/i386.md: Use find_constant_src instead of
16914         constant_pool_reference_p/avoid_constant_pool_reference pairs.
16916 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16918         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
16919         * c-cppbuiltin.c (c_cpp_builtins): Define them.
16921 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
16923         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
16924         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
16925         (arm_elf_asm_constructor): Use it.
16926         (arm_elf_asm_destructor): New function.
16928 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
16930         * jump.c (mark_jump_label): Treat SEQUENCE specially.
16932 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
16934         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
16936 2007-03-19  Andrew Haley  <aph@redhat.com>
16938         PR tree-optimization/31264
16939         * tree-vrp.c (register_edge_assert_for_1): Don't look though
16940         VIEW_CONVERT_EXPRs.
16942 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
16944         PR rtl-optimization/30907
16945         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
16946         (fwprop_init): Always call loop_optimizer_initialize.
16947         (fwprop_done): Always call loop_optimizer_finalize.
16948         (fwprop): We always have loop info now.
16949         (gate_fwprop_addr): Remove.
16950         (pass_fwprop_addr): Use gate_fwprop as gate.
16952         PR rtl-optimization/30841
16953         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
16954         df_chain_alloc): Call df_reorganize_refs unconditionally.
16955         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
16956         refs_organized to refs_organized_size.
16957         (df_ref_create_structure): Use refs_organized_size instead of
16958         bitmap_size if refs had been organized, and keep refs_organized_size
16959         up-to-date.
16960         * df.h (struct df_ref_info): Change refs_organized to
16961         refs_organized_size.
16962         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
16963         bitmap_size.
16965 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
16967         * except.c (output_function_exception_table): Do not reference the
16968         EH personality routine for functions that do not require an
16969         exception table.
16971 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
16973         PR c/30762
16974         * c-typeck.c (convert_for_assignment): Call comptypes for
16975         RECORD_TYPE or UNION_TYPE.
16977         PR inline-asm/30505
16978         * reload1.c (reload): Do invalid ASM checking after
16979         cleanup_subreg_operands.
16981 2007-03-19  Jeff Law  <law@redhat.com>
16983         * tree-cfg.c (find_taken_edge): Tighten conditions for
16984         optimizing computed gotos.
16986 2007-03-19  Michael Matz  <matz@suse.de>
16988         * builtins.c (expand_builtin_sync_operation,
16989         expand_builtin_compare_and_swap,
16990         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
16991         correctly.
16993         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
16994         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
16995         for operand 3.
16997 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16999         * doc/tm.texi: Add brackets around the return type of
17000         TARGET_SECONDARY_RELOAD.
17002 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17003         Richard Guenther  <rguenther@suse.de>
17005         PR tree-optimization/31254
17006         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
17007         Use handled_component_p () where appropriate.  Continue
17008         propagating into the rhs if we propagated into an INDIRECT_REF
17009         on the lhs.
17011 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17013         * config/s390/s390.md (op_type attribute): RRR instruction type added.
17014         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
17015         (xde, xdee): Mode attributes adjusted to support DFP modes.
17016         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
17017         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
17018         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
17019         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
17020         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
17021         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
17022         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
17023         numbers.
17024         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
17025         "movsf"): Insn definitions removed.
17026         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
17027         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
17028         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
17029         definitions added.
17030         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
17031         "reload_in<mode>", "reload_out<mode>"): Expander added.
17032         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
17033         Expander removed.
17035 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17037         * config/s390/s390.md: Only non-functional changes.  Renamed
17038         FPR mode macro to BFP all over the file.
17040 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17042         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
17043         (op_type attribute): RRF instruction type added.
17044         (fT0): New mode attribute.
17045         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
17046         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
17047         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
17048         instruction no secondary memory is needed when moving DFmode values
17049         between GPRs and FPRs.
17051 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17053         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
17054         inverted and documentation adjusted.
17055         ("mhard-dfp", "msoft-dfp"): New options.
17056         * config/s390/s390.c (s390_handle_arch_option): New architecture
17057         switch: z9-ec.
17058         (override_options): Sanity checks for the new options added.
17059         * config.gcc: New architecture switch: z9-ec.
17060         * config/s390/s390.h (processor_flags): PF_DFP added.
17061         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
17062         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
17063         when the bit is NOT set so remove it from the defaults.
17065 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17067         * genemit.c (main): Print include statement for dfp.h.
17068         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
17069         is not available.
17071 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
17073         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
17075 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
17077         PR target/31022
17078         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
17079         instead of PATTERN.
17081 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17083         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
17084         attr_length_call, output_call, output_indirect_call): Cleanup
17085         formatting of targetm calls.
17087 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
17089         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
17091 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17093         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
17094         reservation, bypass and anti-bypass descriptions for these
17095         instructions.  Update move patterns.
17096         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
17097         TYPE_FPSTORE.
17099 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
17101         * tree-vect-transform.c (get_initial_def_for_induction): Replace
17102         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
17103         (get_initial_def_for_reduction): Likewise.
17105 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
17107         Fix PR tree-optimization/29922
17108         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
17109         (get_representative): Removed.
17110         (value_dies_in_block_x): Update for rvuse removal.
17111         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
17112         (compute_antic_aux): Handle when PHI nodes appear in
17113         non-single-successors.
17114         (dump_bitmap_of_names): Removed.
17115         (compute_antic_safe): Renamed and removed rvuse calculation.
17116         Calculate only antic safe.
17117         (insert_into_preds_of_block): Remove assert.
17118         (execute_pre): Update for renamed functions.
17119         (defer_or_phi_translate_block): New function.
17121 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
17123         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
17124         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
17125         typos.
17126         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
17127         Follow spelling conventions.
17129         * tree-data-ref.h: Remove the prototype for analyze_array.
17131 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
17133         PR tree-optimization/31041
17134         * tree-vect-transform.c (get_initial_def_for_induction): Call
17135         force_gimple_operand.
17137 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
17139         * ipa-type-escape.c (look_for_casts) : Revert code to use
17140         handled_component_p due to ada test a-numaux.adb.
17142 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
17144         * final.c (final_scan_insn): Alter the condition of a
17145         conditional trap if we have nonstandard CC.
17147 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
17149         * configure.ac: Remove excess quoting from asm line 0 test.
17150         * configure: Rebuilt.
17152 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17154         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
17155         * c-common.c (convert_and_check): Move warning logic to...
17156         (warnings_for_convert_and_check): ...here. Define.
17157         * c-common.h (warnings_for_convert_and_check): Declare.
17159 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17161         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
17162         (output_call): Likewise.
17164 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
17166         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
17168 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
17170         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
17172 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
17174         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
17175         opteron, athlon-64 and athlon-fx processor_alias_table entries.
17177 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
17179         PR tree-optimization/31183
17180         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
17181         Use double_int instead of unsigned int for representing access_strides.
17182         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
17184 2007-03-16  Richard Guenther  <rguenther@suse.de>
17186         PR tree-optimization/31146
17187         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
17188         to allow recursion of forward_propagate_addr_expr.
17189         (forward_propagate_addr_into_variable_array_index): Likewise.
17190         (forward_propagate_addr_expr): Likewise.
17191         (tree_ssa_forward_propagate_single_use_vars): Likewise.
17192         (forward_propagate_addr_expr_1): Recurse on simple copies
17193         instead of propagating into them.  Do so for useless conversions
17194         as well.
17195         (forward_propagate_addr_expr): Clean up unused statements after
17196         recursion.
17198 2007-03-16  Richard Guenther  <rguenther@suse.de>
17200         * builtins.c (expand_builtin_cexpi): Use the right argument
17201         for the expansion via cexp.
17203 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
17205         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
17206         * configure: Rebuilt.
17208 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
17210         PR debug/29906
17211         * dwarf2out.c (force_type_die): Adjust comment.
17212         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
17214 2007-03-15  DJ Delorie  <dj@redhat.com>
17216         * config/frv/predicates.md (minmax_operator): Don't check operands
17217         here.
17219 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
17221         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
17222         Update constant estimates of number of iterations.
17223         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
17224         argument renamed to "realistic".
17225         (compute_estimated_nb_iterations): Removed.
17226         (record_niter_bound): New function.
17227         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
17228         call record_nonwrapping_iv with upper = false.
17229         (infer_loop_bounds_from_signedness): Pass upper argument to
17230         record_nonwrapping_iv.
17231         (estimate_numbers_of_iterations_loop): Do not call
17232         compute_estimated_nb_iterations.  Record estimate based on profile
17233         information.  Initialize the constant estimates of number of
17234         iterations.
17235         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
17236         estimates.
17237         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
17238         number of iterations is too small.
17239         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
17240         (EST_NOT_AVAILABLE): Removed.
17241         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
17242         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
17243         fields.
17245 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
17247         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
17248         Handle NE_EXPR guards.
17250 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17252         PR c++/24924
17253         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
17254         Set also -pedantic-errors by default for the  preprocessor unless
17255         -fpermissive is given.
17257 2007-03-15  Richard Guenther  <rguenther@suse.de>
17259         PR middle-end/29719
17260         PR middle-end/31161
17261         * builtins.c (expand_builtin_cexpi): As a fallback if we
17262         don't have builtins for sincos or cexp create a function
17263         declaration for cexp and expand to a call to that.
17264         (expand_builtin_int_roundingfn): Always fall
17265         back to floor/ceil and its variants even if they may be
17266         not available.
17268 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
17270         PR middle-end/31159
17271         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
17272         jump tables, move the call to delete_dead_jumptables from here...
17273         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
17274         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
17275         don't allow merging of blocks that try_redirect_by_replacing_jump
17276         also does not handle when not optimizing.
17278 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
17279             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
17281         * config/i386/i386.md (x86_sahf_1): Correctly handle
17282         HAVE_AS_IX86_SAHF.
17284 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
17286         PR target/31167
17287         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
17288         x86_64_general_operand as operand[2] predicate.  Remove "iF"
17289         from operand constraints and use "e" constraint instead.
17290         (*subti3_1, *subti3_1 splitter): Ditto.
17291         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
17292         operand[1] predicate.
17294 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
17296         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
17297         arrays, multiply the access strides by the size of the sub-array.
17298         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
17300 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
17302         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
17303         the configured assembler supports the sahf mnemonic.
17304         * configure: Regenerate.
17305         * config.in: Regenerate.
17307         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
17308         emit "sahf" or ".byte\t0x9e" as asm template.
17310 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
17312         PR 31018
17313         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
17314         option to replace hard coded TARGET_xxx in md file.
17315         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
17316         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
17317         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
17318         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
17319         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
17320         (X86_TUNE_NOT_VECTORMODE): Ditto.
17321         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
17322         (TUNE_AVOID_VECTOR_DECODE): Ditto.
17323         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
17324         (TUNE_SLOW_IMUL_IMM8): Ditto.
17325         (TUNE_MOVE_M1_VIA_OR): Ditto.
17326         (TUNE_NOT_UNPAIRABLE): Ditto.
17327         (TUNE_NOT_VECTORMODE): Ditto.
17329         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
17330         options.
17332         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
17333         tuning options instead of hard coded TARGET_xxx.
17334         (fix ssemode peephole2's): Ditto.
17335         (imul peephole2's): Ditto.
17336         (movsi_or): Ditto.
17337         (movdi_or_rex64): Ditto.
17338         (move peephole2): Ditto.
17339         (not peephole2's): Ditto.
17341 2007-03-14  Dirk Mueller  <dmueller@suse.de>
17343         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
17344         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
17345         * c-parser.c (c_parser_if_body): Always add an empty statement in case
17346         of empty body.
17347         * c-parser.c (c_parser_do_statement): Warn about empty body in
17348         do/while statement.
17349         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
17350         * doc/invoke.texi (-Wempty-body): Update documentation.
17352 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17354         PR c/21438
17355         * c-common.h (warn_for_div_by_zero): Declare.
17356         * c-common.c (warn_for_div_by_zero): Define.
17357         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
17358         warning.
17360 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
17362         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
17363         to PREFIX and STANDARD_PREFIX.
17365 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
17366             Phil Edwards  <phil@codesourcery.com>
17368         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
17369         (__gthread_once_t): Remove busy field for RTPs.
17370         (__GTHREAD_ONCE_INIT): Update accordingly.
17372 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
17374         * doc/invoke.texi: Document VxWorks options.
17376 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
17378         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
17380 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
17382         PR tree-optimization/30590
17383         * tree-nrv.c (tree_nrv): Check for the partial update of the
17384         return value.
17386 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
17388         * flags.h (flag_random_seed): Remove declaration, in favor of...
17389         * toplev.h (get_random_seed, set_random_seed): ... these.
17390         * tree.c (get_file_function_name): Use the former.
17391         * opts.c (common_handle_option): Use the latter.
17392         * toplev.c
17394 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
17396         PR middle-end/31127
17397         * cse.c (cse_find_path): Do not bail out if a basic block that
17398         we already visited now becomes part of a path that starts at a
17399         different basic block.  Just disallow this, to make sure we
17400         visit each basic block at most once.
17402 2007-03-13  Jan Hubicka  <jh@suse.cz>
17404         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
17405         attributes, when profile esitmate is present, calls with very low
17406         frequency are cold.
17408 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
17410         PR tree-optimization/30730
17411         PR tree-optimization/26900
17412         * tree-ssa-loop-niter.c: Include gmp.h.
17413         (bounds): New type.
17414         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
17415         split_to_var_and_offset, determine_value_range,
17416         bound_difference_of_offsetted_base, refine_bounds_using_guard,
17417         bound_difference, bounds_add, bounds_negate,
17418         number_of_iterations_ne_max, dump_affine_iv): New functions.
17419         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
17420         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
17421         difference of initial and final value of control iv to validate
17422         results.
17423         (number_of_iterations_cond): Add loop parameter.  Determine bounds
17424         on the difference of the extremes of the control iv.  Add dumps.
17425         (expand_simple_operations): Handle phi nodes.
17426         (simplify_using_initial_conditions): Do not record used conditions.
17427         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
17428         Do not set additional_info.
17429         (implies_nonnegative_p, implies_ge_p): Removed.
17430         (derive_constant_upper_bound): Do not use parameter `additional'.
17431         (record_estimate): Parameter `additional' removed.  Parameter
17432         `i_bound' added.  Do not call derive_constant_upper_bound.
17433         (record_nonwrapping_iv): Use derive_constant_upper_bound to
17434         bound the number of iterations estimate.
17435         (estimate_numbers_of_iterations_loop): Pass the estimate from
17436         the number of iterations analysis to record_estimate.
17437         * tree.h (multiple_of_p): Declare.
17438         * tree-scalar-evolution.c (expression_expensive_p): Removed.
17439         (scev_const_prop): Do not check expression_expensive_p.
17440         * fold-const.c (multiple_of_p): Exported.
17441         * double-int.c (double_int_mask): Exported.
17442         * double-int.h (double_int_mask): Declare.
17443         * tree-flow.h (struct tree_niter_desc): Removed additional_info
17444         field.  Added max field.
17446 2007-03-13  David Taylor  <taylor@candd.org>
17448         PR driver/12448:
17449         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
17450         default -MQ.
17452 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17454         PR target/31123
17455         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
17456         two unamed patterns.
17458 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
17460         * config/i386/i386.opt (mcx16, msahf): New options.
17461         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
17462         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
17464         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
17465         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
17466         Output -mcx16 and -msahf options when corresponding bit is set.
17468         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
17469         and -msahf options.
17471 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
17473         * configure.ac: Test for assembler tolerance to # 0 "".
17474         * configure, config.in: Rebuilt.
17475         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
17477 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
17479         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
17481         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
17482         (handle_syscall): Handle direct system calls.
17483         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
17485 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
17487         * doc/invoke.texi: Fix cpp.info cross-reference.
17488         * doc/passes.texi: Fix gcc.info cross-reference.
17490 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
17492         PR tree-optimization/30835
17493         * lambda-code.c (can_convert_to_perfect_nest): Check whether
17494         bb_for_stmt is not NULL before accessing it.
17496 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
17498         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
17499         some multilibs.
17501 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
17503         PR 30635
17504         * doc/install.texi: Document --enable-stage1-languages
17506 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
17508         * tree-pass.h (pass_into_cfg_layout_mode,
17509         pass_outof_cfg_layout_mode): Declare.
17510         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
17511         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
17512         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
17513         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
17515 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
17517         * c-decl.c (warn_variable_length_array): New function.
17518         Refactored from grokdeclarator to handle warn_vla
17519         and handle unnamed array case.
17520         (grokdeclarator): Refactored VLA warning case.
17521         * c.opt (Wvla): New flag.
17522         * doc/invoke.texi (Wvla): New warning.
17524 2007-03-12  Richard Henderson  <rth@redhat.com>
17526         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
17527         (TARGET_SECTION_TYPE_FLAGS): New.
17529 2007-03-12  Richard Henderson  <rth@redhat.com>
17531         * config/darwin.c (machopic_reloc_rw_mask): New.
17532         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
17533         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
17535 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
17537         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
17538         * cppdefault.h (cpp_PREFIX): Document.
17539         (cpp_PREFIX_len): Likewise.
17540         (cpp_EXEC_PREFIX): New variable.
17541         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
17542         * c-incpath.c (add_standard_paths): Correct logic for relocating
17543         paths within prefix.
17545 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
17547         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
17548         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
17549         mode macro.
17550         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
17551         fix_truncdfdi_sse using SSEMODEF mode macro.
17552         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
17553         fix_truncdfsi_sse using SSEMODEF mode macro.
17554         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
17555         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
17557 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
17559         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
17560         elfos.h to tm_file.
17562 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
17564         * tree.h : Add multiple_of_p declaration.
17565         * fold-const.c (multiple_of_p): Make multiple_of_p public.
17566         * ipa-type-escape.c (results_of_malloc): Redundant.
17567         (visited_stmts): New. Visited stmt for walk_use_def_chains.
17568         (cast_type): Extended with new members.
17569         (check_cast): Returns cast_type.
17570         (cast): New structure for data of walk_use_def_chains.
17571         (is_malloc_result, is_cast_from_non_pointer_1,
17572         is_cast_from_non_pointer,
17573         is_array_access_through_pointer_and_index): New functions.
17574         (look_for_casts): Returns cast types.
17575         (check_call): Returns void.
17576         (okay_pointer_operation): Use support of pointer plus index,
17577         pointer plus constant and allow all multiplications.
17579 2007-03-11  Richard Guenther  <rguenther@suse.de>
17581         PR tree-optimization/31115
17582         * tree-vrp.c (extract_range_from_binary_expr): Make sure
17583         the shift count is positive and non-anti-range for RSHIFT_EXPR.
17584         A shift count of zero is not special as with *_DIV_EXPR.
17585         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
17586         direction.
17588 2007-03-11  Ian Lance Taylor  <iant@google.com>
17590         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
17591         the *_DIV_EXPR codes correctly with overflow infinities.
17593 2007-03-11  Ira Rosen  <irar@il.ibm.com>
17595         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
17596         indicate success/failure of the analysis. Add negation to subtrahend
17597         in case of subtraction. Fail if both operands contain constants.
17598         (create_data_ref): Fail if analyze_offset fails.
17600 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
17602         * config/i386/i386.md (frndintxf2): Rename to ...
17603         (rintxf2): ... this. Remove expander having same name.
17604         (rintsf2, rintdf2): Implement using SSEMODEF macro.
17605         (roundsf2, rounddf2): Ditto.
17606         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
17607         (lround<mode>di2, lround<mode>si2): Ditto.
17609 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
17611         * lower-subreg.c: Include except.h.
17612         (decompose_multiword_subregs): Verify that the only control flow
17613         insns we can split are loads to multi-words pseudos.
17614         Handle breaking such blocks after splitting, instead of calling
17615         find_many_sub_basic_blocks.
17617         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
17618         on the new basic block.  Add a lengthy comment explaining why we
17619         thought this was necessary.
17620         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
17622 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
17624         PR c++/30924
17625         * tree.c (walk_type_fields): Recurse into the element type of
17626         ARRAY_TYPEs if there is a pointer set.
17628 2007-03-10  Dirk Mueller  <dmueller@suse.de>
17630         * c-common.c (warn_logical_operator): Fix condition.
17632 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
17634         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
17635         quotation mark.
17636         * config/darwin.c (machopic_select_section): Remove superfluous
17637         argument in call to categorize_decl_for_section.  Remove unused
17638         variable shlib.
17640 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
17642         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
17643         defined.
17644         * configure: Regenerate.
17646 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
17648         PR target/31101
17649         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
17650         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
17651         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
17652         Add LABEL_NUSES to emitted label.
17653         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
17654         branch probability value to emitted jump insn.
17655         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
17656         Do not check life information and do not re-arrange input operands
17657         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
17659 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
17661         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
17662         the change of decode_asm_operands.
17664 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
17666         * mode-switching.c (create_pre_exit): Skip blockage insn.
17668 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
17670         * tree-pass.h (TODO_update_smt_usage): Remove.
17671         Update all users.
17672         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
17673         argument SOME.
17674         Update all users.
17676 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17678         * pa.c (attr_length_call): Revise condition for long
17679         pc-relative branch.
17680         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
17681         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
17682         sequence on SOM target.
17684 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
17686         * gcc.c: Document %{, in big comment at top.
17687         (input_suffix_matches): Remove special handling for .s and
17688         .S.
17689         (input_spec_matches): New.
17690         (handle_braces): Handle %{,.
17691         (validate_switches): ',' indicates a value which is not a switch.
17692         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
17693         to detect assembler input.
17694         * config/i386/sol2.h (CPP_SPEC): Likewise.
17695         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
17696         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
17697         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
17698         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
17699         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
17700         -m64 causes deployment target to default to 10.5.
17701         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
17703 2007-03-09  Richard Henderson  <rth@redhat.com>
17705         PR target/26090
17706         * target.h (targetm.asm.out.reloc_rw_mask): New.
17707         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
17708         (TARGET_ASM_OUT): Use it.
17709         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
17710         * varasm.c (categorize_decl_for_section): Remove shlib argument;
17711         use the new reloc_rw_mask target hook instead.
17712         (default_section_type_flags_1): Merge into...
17713         (default_section_type_flags): ... here.
17714         (decl_readonly_section_1): Merge into...
17715         (decl_readonly_section): ... here.
17716         (default_elf_select_section_1): Merge into...
17717         (default_elf_select_section): ... here.
17718         (default_unique_section_1): Merge into...
17719         (default_unique_section): ... here.
17720         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
17721         (default_select_rtx_section): Use it.
17722         (default_elf_select_rtx_section): Likewise.
17723         * output.h: Update to match.
17724         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
17725         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
17726         (TARGET_ASM_RELOC_RW_MASK): New.
17727         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
17728         to categorize_decl_for_section.
17729         (x86_64_elf_unique_section): Likewise.
17730         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
17731         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
17732         (TARGET_ASM_RELOC_RW_MASK): New.
17733         * config/ia64/ia64.c (ia64_rwreloc_select_section,
17734         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
17735         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
17736         (TARGET_RWRELOC): Remove.
17737         (ia64_section_type_flags): Adjust call to default_section_type_flags.
17738         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
17739         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
17740         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
17741         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
17742         (rs6000_xcoff_select_section): Use decl_readonly_section.
17743         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
17744         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
17745         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
17746         (TARGET_SECTION_TYPE_FLAGS): Remove.
17747         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
17749 2007-03-09  Roger Sayle  <roger@eyesopen.com>
17751         * fold-const.c (fold_comparison): Remove compile-time evaluation of
17752         complex constant equality/inequality comparisons for here.
17753         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
17754         known at compile-time or can be simplified to a scalar comparison.
17755         (fold_relational_const): Move compile-time evaluation of complex
17756         constant equality/inequality comparisons to here.
17758 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17760         PR rtl-optimization/30643
17761         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
17762         dest_addr_elt.
17763         (fold_rtx): Recurse, like before 2006-11-03.
17765 2007-03-09  DJ Delorie  <dj@redhat.com>
17767         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
17768         m32c-pragma.o.
17770 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
17772         PR tree-optimization/30375
17773         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
17774         LHS of statements is not the same.
17775         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
17777 2007-03-09  Chao-ying Fu  <fu@mips.com>
17779         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
17780         REV 2.
17781         * doc/invoke.texi (-mdspr2): Document new option.
17782         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
17783         New unspec for DSP REV 2.
17784         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
17785         these instructions are extended in DSP REV 2.
17786         (mips-dspr2.md): Include.
17787         * config/mips/mips.opt (mdspr2): New option.
17788         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
17789         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
17790         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
17791         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
17792         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
17793         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
17794         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
17795         and 2 builtins.
17796         (bdesc_map): Add one field of unsupported_target_flags.
17797         (bdesc_arrays):  Update entries to have extra fields.  Add
17798         dsp_32only_bdesc.
17799         (mips_init_builtins): Initialize new function types.
17800         Check unsupported_target_fileds to filter out builtins.
17801         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
17802         TARGET_DSPR2.
17803         (ASM_SPEC): Pass mdspr2 to the assembler.
17804         * config/mips/mips-dspr2.md: New file.
17806 2007-03-09  Sa Liu  <saliu@de.ibm.com>
17808         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
17810 2007-03-09  Ian Lance Taylor  <iant@google.com>
17812         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
17813         argument) like -Wstrict-overflow=2.
17814         * doc/invoke.texi (Warning Options): Update documentation.
17816 2007-03-09  Dirk Mueller  <dmueller@suse.de>
17818         PR c++/17946
17819         * doc/invoke.texi (-Wlogical-op): Document.
17820         * common.opt (-Wlogical-op): New.
17821         * c-common.h (warn_logical_operator): Declare.
17822         * c-common.c (warn_logical_operator): Define.
17823         * c-typeck.c (parser_build_binary_op): Call
17824         warn_logical_operator.
17826 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17828         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
17829         * final.c (final_scan_insn): Test for non-"" file name.
17831 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
17833         * doc/loop.texi: Document the Omega linear constraints solver.
17834         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
17835         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
17836         omega-hash-table-size, omega-max-keys, and
17837         omega-eliminate-redundant-constraints.
17838         * tree-pass.h (pass_check_data_deps): Declared.
17839         * omega.c: New.
17840         * omega.h: New.
17841         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
17842         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
17843         pass_check_data_deps): New.
17844         * tree-data-ref.c (init_data_ref): Remove declaration.
17845         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
17846         (analyze_array): Renamed init_array_ref, move up initializations.
17847         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
17848         Removed arguments that are set to NULL.
17849         (analyze_indirect_ref): Correct indentation, correct call to
17850         init_pointer_ref.
17851         (object_analysis): Call init_array_ref instead of analyze_array.
17852         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
17853         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
17854         of DR_ACCESS_FNS_ADDR.
17855         (init_omega_eq_with_af, omega_extract_distance_vectors,
17856         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
17857         ddr_consistent_p): New.
17858         (compute_affine_dependence): Check consistency of ddrs when
17859         flag_check_data_deps is passed.
17860         (analyze_all_data_dependences): Uncomment.
17861         (tree_check_data_deps): New.
17862         * tree-data-ref.h: Include omega.h.
17863         (DR_ACCESS_FNS_ADDR): Removed.
17864         (data_dependence_relation): Add inner_loop.
17865         (DDR_INNER_LOOP): New.
17866         * common.opt (fcheck-data-deps): New.
17867         * tree-flow.h (tree_check_data_deps): Declare.
17868         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
17869         (OBJS-common): Depend on omega.o.
17870         (omega.o): Define.
17871         * passes.c (pass_check_data_deps): Scheduled.
17872         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
17873         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
17874         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
17875         PARAM_VECT_MAX_VERSION_CHECKS,
17876         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
17878 2007-03-09  Richard Guenther  <rguenther@suse.de>
17880         PR tree-optimization/30904
17881         PR middle-end/31058
17882         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
17883         the same way as *_DIV_EXPR.
17885 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17887         * recog.c (decode_asm_operands): No mixed declarations and code.
17889 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17891         * rtl.def (ASM_INPUT): Add location.
17892         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
17893         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
17894         (decode_asm_operands): Add loc operand.
17895         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
17896         * stmt.c (expand_asm): Rename to...
17897         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
17898         gen_rtx_ASM_INPUT_loc.
17899         (expand_asm_expr): Adjust.
17900         * recog.c (decode_asm_operands): Add loc operand.
17901         (check_asm_operands, extract_insn): Adjust.
17902         * reload1.c (maybe_fix_stack_asms): Likewise.
17903         * final.c (asm_insn_count): Likewise.
17904         (final_scan_insn): Output # line before and after asm.
17906 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
17908         * tree-ssa-structalias.c (variable_info): Remove
17909         finished_solution.
17910         (new_var_info): Ditto.
17911         (shared_bitmap_info_t): New structure.
17912         (shared_bitmap_table): New variable.
17913         (shared_bitmap_hash): New function.
17914         (shared_bitmap_eq): Ditto
17915         (shared_bitmap_lookup): Ditto.
17916         (shared_bitmap_add): Ditto.
17917         (merge_smts_into): Change to take bitmap directly.
17918         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
17919         (init_alias_vars): Init shared bitmap hashtable.
17920         (delete_points_to_sets): Delete shared bitmap hashtable.
17921         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
17922         is_aliased removal as a change that was still necessary was
17923         deleted.
17925 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
17927         * config/i386/i386.h (override_options): Conditionally disable
17928         x86_sahf for 64bit targets only.
17930 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17932         PR C/31072
17933         * c-decl.c (merge_decls): Don't call make_var_volatile.
17934         * varasm.c (make_var_volatile): Remove.
17935         * output.h (make_var_volatile): Remove.
17937 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
17939         PR tree-optimization/31085
17940         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
17942 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17944         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
17945         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
17946         ATTR_CONST_NOTHROW_LIST.
17948         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
17949         FIX_TRUNC_EXPR.
17951 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
17953         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
17955 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
17957         PR 31013
17958         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
17959         is declared.
17960         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
17961         passed, use shared libgcc.
17963 2007-03-08  Roger Sayle  <roger@eyesopen.com>
17965         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
17966         instead of calling build2 with a GIMPLE_MODIFY_STMT.
17967         (honor_protect_cleanup_actions, lower_try_finally_switch):
17968         Likewise.
17969         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
17970         ifc_temp_var): Likewise.
17971         * tree-inline.c (setup_one_parameter): Likewise.
17972         * tree-mudflap.c (mf_decl_cache_locals,
17973         mf_build_check_statement_for): Likewise.
17974         * tree-nested.c (init_tmp_var, save_tmp_var,
17975         finalize_nesting_tree_1): Likewise.
17976         * tree-outof-ssa.c (insert_copy_on_edge,
17977         insert_backedge_copies): Likewise.
17978         * tree-profile.c (tree_gen_edge_profiler,
17979         tree_gen_ic_profiler): Likewise.
17980         * tree-scalar-evolution.c (scev_const_prop): Likewise.
17981         * tree-sra.c (sra_build_assignment): Likewise.
17982         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
17983         * tree-ssa-math-opts.c (insert_reciprocals,
17984         execute_cse_sincos_1): Likewise.
17985         * tree-tailcall.c (adjust_accumulator_values,
17986         adjust_return_value): Likewise.
17987         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
17988         * tree-vect-transform.c (vect_create_data_ref_ptr,
17989         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
17990         vect_create_epilog_for_reduction, vectorizable_reduction,
17991         vectorizable_call, vectorizable_conversion,
17992         vectorizable_assignment, vectorizable_operation,
17993         vectorizable_type_demotion, vect_gen_widened_results_half,
17994         vect_permute_store_chain, vectorizable_store,
17995         vect_setup_realignment, vect_permute_load_chain,
17996         vectorizable_load, vectorizable_condition,
17997         vect_create_cond_for_align_checks): Likewise.
17998         * tree-vrp.c (build_assert_expr_for): Likewise.
18000 2007-03-08  Ian Lance Taylor  <iant@google.com>
18002         * tree-vrp.c: Include "intl.h".
18003         (usable_range_p): New static function.
18004         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
18005         overflowed values, juts set *strict_overflow_p.
18006         (compare_values): Only return -2 if one of the operands is not a
18007         constant.
18008         (compare_ranges): Call usable_range_p.
18009         (compare_range_with_value): Likewise.
18010         (vrp_evaluate_conditional_warnv): Rename from
18011         vrp_evaluate_conditional.  Make static.  Change all callers.
18012         (vrp_evaluate_conditional): New function.
18013         (simplify_div_or_mod_using_ranges): Issue warning about reliance
18014         on signed overflow.
18015         (simplify_abs_using_ranges): Likewise.
18016         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
18017         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
18018         within_stmt parameter.
18019         * tree-ssa-propagate.c (fold_predicate_in): Update call to
18020         vrp_evaluate_conditional.
18021         * tree-ssa-threadedge.c
18022         (record_temporary_equivalences_from_stmts_at_dest): Change
18023         simplify parameter to take a second tree parameter.
18024         (simplify_control_stmt_condition): Likewise.
18025         (thread_across_edge): Likewise.
18026         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
18027         (thread_across_edge): Likewise.
18028         * Makefile.in (tree-vrp.o): Depend upon intl.h.
18030 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
18032         * config/i386/i386.h (TARGET_SAHF): New define.
18033         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
18034         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
18035         (x86_sahf): New global variable.
18036         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
18037         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
18038         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
18039         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
18040         for 64-bit.
18041         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
18042         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
18043         when expanding fcomi/sahf based tests.
18044         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
18045         expanding sahf based alternative. Emit sahf based sequence when
18046         optimizing for code size.
18047         * config/i386/i386.md (x86_sahf_1): Do not disable for
18048         TARGET_64BIT, enable for TARGET_SAHF.
18050 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
18052         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
18053         spurious whitespace from error message.
18055 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
18057         PR c++/30852
18058         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
18060 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
18062         * c-decl.c (grokdeclarator): Disable warnings for anonymous
18063         bitfields.
18064         * tree-sra.c (instantiate_element): Propagate disabled warnings
18065         from the element itself to the created variable.
18067 2007-03-07  Richard Henderson  <rth@redhat.com>
18069         PR target/30848
18070         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
18071         silently fix up the stack in the case of a missing register.
18073 2007-03-07  Paul Brook  <paul@codesourcery.com>
18075         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
18077 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
18079         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
18080         New.
18081         (phase1_vrs): Use them.
18082         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
18083         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
18084         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
18085         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
18086         __gnu_Unwind_Restore_WMMXC if required.
18087         (_Unwind_VRS_Pop): Implement iWMMXt support.
18088         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
18089         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
18090         gnu_Unwind_Save_WMMXC): Define.
18092 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
18094         * config/vxworks.h (vxworks_override_options): Declare.
18095         (VXWORKS_OVERRIDE_OPTIONS): Use it.
18096         * config/vxworks.c: Include target.h and toplev.h.
18097         (vxworks_override_options): New function.
18098         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
18100 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
18102         * config/s390/s390.c (override_options): Don't emit an error when
18103         -mstack-size is used without providing -mstack-guard.
18104         (s390_emit_prologue): Choose stack_guard value automatically if not
18105         provided via command line.
18106         * doc/invoke.texi: Adjust description of -mstack-guard and
18107         -mstack-size.
18109 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
18111         * config/i386/i386.c (output_set_got): Add a GOT initialization
18112         sequence for VxWorks PIC.
18113         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
18114         around labels as well as symbols.  Use gotoff_operand instead
18115         of local_symbolic_operand.
18116         (legitimize_pic_address): Use gotoff_operand instead of
18117         local_symbolic_operand.  Use @GOT accesses for labels as
18118         well as symbols.
18119         (ix86_output_addr_diff_elt): Use PC-relative rather than
18120         GP-relative offsets for VxWorks PIC.
18121         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
18122         no_new_pseudos.  Check whether the returned register is op0.
18123         * config/i386/i386.md (tablejump): Use PC-relative rather than
18124         GP-relative offsets for VxWorks PIC.
18125         * config/i386/predicates.md (gotoff_operand): New predicate.
18127 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18129         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
18130         before defining.
18131         * config/vxworks-dummy.h: New file.
18132         * config/i386/i386.h: Include it.
18134 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
18136         * dwarf2out.c (is_inlined_entry_point): New
18137         (add_high_low_attributes): Emit DW_AT_entry_pc along with
18138         DW_AT_ranges if the first subblock is the entry point.
18140 2007-03-06  David Daney  <ddaney@avtrex.com>
18142         * doc/install.texi (mips-*-*): Change recommended binutils
18143         version.
18145 2007-03-06  Anatoly Sokolov <aesok@post.ru>
18147         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
18148         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
18149         devices.
18150         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
18151         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
18153 2007-03-06  Jan Hubicka  <jh@suse.cz>
18155         * errors.h (warning, error, fatal, internal_error): Mark as cold.
18156         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
18157         functions are hot.
18158         (probably_cold_bb_p): Cold functions are cold.
18159         (probably_never_executed_bb_p): Cold functions are cold.
18160         (tree_bb_level_predictions): Predict calls to cold functions as not
18161         taken.
18162         (compute_function_frequency): Check hot/cold attributes.
18163         * function.h (function_frequency): Update comments.
18164         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
18165         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
18166         (c_common_att): Add cold and hot.
18168         * doc/extend.texi (hot,cold attributes): Document.
18170 2007-03-06  Andrew Haley  <aph@redhat.com>
18172         * function.c (expand_function_end): Move blockage to just after we
18173         emit the label for the naked return from the function.
18175 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18177         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
18178         before redefining.
18180 2007-03-06  Jan Hubicka  <jh@suse.cz>
18182         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
18183         loaded for constant large models.  Non-large 64bit PIC can do.
18184         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
18185         * cmodel.h: Add LARGE PIC.
18186         * i386.md (UNSPEC_PLTOFF): New.
18187         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
18188         unspecs as needed.
18189         (*call_1_rex64): Disable for large models.
18190         (*call_1_rex64_large): New.
18191         (*call_value_1_rex64): Disable for large models.
18192         (*call_value_1_rex64_large): New.
18193         (set_rip_rex4): New.
18194         (set_got_offset_rex64): New.
18195         * predicates.md (constant_call_address_operand): For large model
18196         constant calls are not possible.
18197         * i386-protos.h (construct_plt_address): Declare.
18198         * i386.c (override_options): Accept large models.
18199         (ix86_expand_prologue): Expand large PIC GOT pointer load.
18200         (legitimate_constant_p): Add new UNSPECs.
18201         (legitimate_pic_operand_p): Likewise.
18202         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
18203         (legitimize_pic_address): Do easy RIP relative way for TLS only for
18204         non-large model.
18205         (output_pic_addr_const): Add PLTOFF.
18206         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
18207         (ix86_expand_move): Legitimize pic address when in PIC mode.
18208         (construct_plt_address): New function.
18209         (ix86_expand_call): Offload the address to register and use GOT
18210         pointer for large model.
18211         * invoke.texi (mcmodel=large): Update documentation.
18213 2007-03-06  Richard Henderson  <rth@redhat.com>
18215         * config/i386/i386.c (x86_use_leave, x86_push_memory,
18216         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
18217         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
18218         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
18219         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
18220         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
18221         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
18222         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
18223         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
18224         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
18225         x86_partial_reg_dependency, x86_memory_mismatch_stall,
18226         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
18227         x86_sse_partial_reg_dependency, x86_sse_split_regs,
18228         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
18229         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
18230         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
18231         x86_schedule, x86_use_bt, x86_pad_returns,
18232         x86_use_xchgb): Merge into ...
18233         (ix86_tune_features): ... here.  New array.
18234         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
18235         x86_bswap): Merge into ...
18236         (ix86_arch_features): ... here.  New array.
18237         (x86_3dnow_a): Remove.
18238         (x86_accumulate_outgoing_args): Make static.
18239         (x86_arch_always_fancy_math_387): Make static.
18240         (ix86_tune_mask, ix86_arch_mask): Move ...
18241         (override_options): ... to local variables here.  Apply the
18242         appropriate mask to each element of ix86_arch_features and
18243         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
18244         as were done in the old macros.
18245         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
18246         * config/i386/i386.h (x86_use_leave, x86_push_memory,
18247         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
18248         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
18249         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
18250         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
18251         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
18252         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
18253         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
18254         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
18255         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
18256         x86_partial_reg_dependency, x86_memory_mismatch_stall,
18257         x86_accumulate_outgoing_args, x86_prologue_using_move,
18258         x86_epilogue_using_move, x86_decompose_lea,
18259         x86_arch_always_fancy_math_387, x86_shift1,
18260         x86_sse_partial_reg_dependency, x86_sse_split_regs,
18261         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
18262         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
18263         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
18264         x86_use_incdec, x86_pad_returns, x86_bswap,
18265         x86_partial_flag_reg_stall): Remove.
18266         (enum ix86_tune_indices): New.
18267         (ix86_tune_features): New.
18268         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
18269         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
18270         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
18271         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
18272         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
18273         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
18274         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
18275         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
18276         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
18277         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
18278         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
18279         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
18280         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
18281         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
18282         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
18283         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
18284         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
18285         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
18286         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
18287         TARGET_EXT_80387_CONSTANTS): Use it.
18288         (enum ix86_arch_indices): New.
18289         (ix86_arch_features): New.
18290         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
18291         TARGET_BSWAP): Use it.
18292         (ix86_tune_mask, ix86_arch_mask): Remove.
18294 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
18296         PR bootstrap/31020
18297         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
18298         Define using $${sysroot_headers_suffix}.
18299         * configure: Regenerate.
18300         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
18301         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
18302         defined.
18303         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
18304         * gcc.c (print_sysroot_headers_suffix): New.
18305         (option_map): Include --print-sysroot-headers-suffix.
18306         (display_help): Mention -print-sysroot-headers-suffix.
18307         (process_command): Handle -print-sysroot-headers-suffix.
18308         (do_spec_1): Append multilib directory to include-fixed path if
18309         sysroot suffixes in use.
18310         (main): Handle -print-sysroot-headers-suffix.
18311         * Makefile.in (start.encap): Don't depend on xlimits.h
18312         (xlimits.h): Remove.
18313         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
18314         limits.h for each multilib in fixinc_list.
18315         (fixinc_list, s-fixinc_list): New.
18316         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
18317         generate them for each multilib in fixinc_list.
18318         (stmp-fixproto): Use include-fixed.  Run fixproto for each
18319         multilib in fixinc_list.
18320         (mostlyclean): Don't remove xlimits.h.
18321         (clean): Remove include-fixed.
18322         (real-install-headers-tar, real-install-headers-cpio,
18323         real-install-headers-cp): Don't copy include, only include-fixed.
18324         (install-mkheaders): Depend on fixinc_list.  Don't depend on
18325         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
18326         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
18327         SYSTEM_HEADER_DIR setting in mkheaders.conf.
18329 2007-03-06  Jan Hubicka  <jh@suse.cz>
18331         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
18332         NANs easilly.
18334 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18336         * configure.ac: Allow tm_file to contain build-directory files.
18337         * configure: Regenerate.
18338         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
18339         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
18340         * config/m68k/print-sysroot-suffix.sh: New file.
18342 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18344         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
18345         of pic_offset_table_rtx if reload_completed.
18346         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
18347         PIC_OFFSET_TABLE_REGNUM.
18348         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
18349         return true.
18350         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
18351         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
18353 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18355         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
18356         functions that call eh_return.
18358 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18360         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
18361         functions that need a constant pool.
18363 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18365         PR target/28181
18366         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
18367         (m68k_preferred_reload_class): Likewise.
18368         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
18369         (SECONDARY_RELOAD_CLASS): Define.
18370         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
18371         (LIMIT_RELOAD_CLASS): Delete.
18372         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
18373         registers from storing bytes.
18374         (m68k_secondary_reload_class): New function.
18375         (m68k_preferred_reload_class): Likewise.
18377 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18379         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
18380         leaf functions.
18381         (m68k_expand_prologue): Likewise.
18383 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18385         * config/m68k/m68k-protos.h (output_sibcall): Declare.
18386         (mips_expand_epilogue): Add a bool parameter.
18387         (m68k_legitimize_sibcall_address): Declare.
18388         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
18389         (m68k_expand_epilogue): Add a parameter to select between sibling
18390         and normal epilogues.  Only generate a return for the latter.
18391         (m68k_ok_for_sibcall_p): New function.
18392         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
18393         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
18394         (sibcall_value, *sibcall_value): Likewise.
18395         (*call, *call_value): Require !SIBLING_CALL_P.
18396         (epilogue): Update call to m68k_expand_epilogue.
18397         (sibcall_epilogue): New pattern.
18398         * config/m68k/predicates.md (const_call_operand): Say that this
18399         predicate applies to sibling calls too.
18400         (sibcall_operand): New predicate.
18402 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18404         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
18405         alternatives as movsi_cf.
18406         (movsf_cf_hard): Add commentary.
18408 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
18409             Richard Sandiford  <richard@codesourcery.com>
18411         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
18412         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
18413         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
18414         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
18415         as being live on exit from an interrupt function.
18416         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
18417         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
18418         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
18419         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
18420         (m68k_interrupt_function_p): Globalize.
18421         (m68k_compute_frame_layout): Remove reverse mask code.
18422         (m68k_emit_movem, m68k_set_frame_related): New functions.
18423         (m68k_output_function_prologue): Delete in favor of...
18424         (m68k_expand_prologue): ...this new function.
18425         (m68k_output_function_epilogue): Delete in favor of...
18426         (m68k_expand_epilogue): ...this new function.
18427         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
18428         functions.
18429         (print_operand): Handle %?.
18430         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
18431         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
18432         (prologue, epilogue): New patterns.
18433         (return): Turn into a define_expand.
18434         (*return): New pattern, derived from old "return" pattern.  Use rte
18435         rather than rts for interrupt functions.  Only use rtd if the pop
18436         count is nonzero.
18437         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
18438         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
18439         (link, *link, unlink, *unlink, load_got): Likewise.
18441 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18443         PR target/23482
18444         PR target/17114
18445         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
18446         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
18447         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
18448         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
18449         and m68k_matches_u_p.
18450         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
18451         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
18452         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
18453         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
18454         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
18455         (REG_STRICT_P): New macro.
18456         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
18457         PCREL_GENERAL_OPERAND_OK.
18458         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
18459         m68k_legitimate_base_reg_p.
18460         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
18461         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
18462         (PIC_CASE_VECTOR_ADDRESS): Update comment.
18463         * config/m68k/m68k.c (m68k_address): New structure.
18464         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
18465         (m68k_decompose_index, m68k_legitimate_constant_address_p)
18466         (m68k_jump_table_ref_p, m68k_decompose_address)
18467         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
18468         (m68k_matches_u_p): New functions.
18469         (print_operand_address): Rewrite to use m68k_decompose_index.
18471 2007-03-05  David Taylor  <dtaylor@emc.com>
18473         * gcc.c: Correct copyright date in --version output.
18475 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18477         * pa.md: In unamed move patterns, disparge copies between general
18478         and floating point registers using '?' modifier.  Don't include 'f'
18479         constraint for register preferences in DImode, SImode, HImode and
18480         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
18481         Remove constraints for copies between general and floating registers
18482         in soft-float DFmode pattern.
18483         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
18484         floating register.
18485         (movsf): Likewise.
18487 2007-03-05  Mike Stump  <mrs@apple.com>
18489         * c-common.c (targetcm): Add.
18490         * c-opts.c (c_common_handle_option): Handle language specific
18491         target options.
18492         * opts.c (handle_option): Verify language for target options, if
18493         any are given.
18494         * opth-gen.awk: Add CL_LANG_ALL.
18495         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
18496         (TARGETCM_INITIALIZER): Add.
18497         * target.h (struct gcc_targetcm): Add.
18498         (targetcm): Add.
18499         * targhooks.c (default_handle_c_option): Add.
18500         * targhooks.h (default_handle_c_option): Add.
18501         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
18503         * config/darwin.opt (iframework): Add.
18504         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
18505         * config/darwin-c.c (handle_c_option): Add.
18506         (TARGET_HANDLE_C_OPTION): Add.
18507         (targetcm): Add.
18508         * doc/invoke.texi (Darwin Options): Add -iframework.
18510 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18512         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
18513         conversion.
18515 2007-03-05  Ian Lance Taylor  <iant@google.com>
18517         * c.opt (fgnu89-inline): New option.
18518         * c-opts.c (c_common_post_options): Set default value for
18519         flag_gnu89_inline.
18520         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
18521         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
18522         inline functions.
18523         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
18524         (grokdeclarator, start_function): Likewise.
18525         * c-cppbuiltin.c (c_cpp_builtins): Define either
18526         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
18527         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
18528         (C Dialect Options): Document -fgnu89-inline.
18529         * doc/extend.texi (Function Attributes): Explain what the
18530         gnu_inline attribute does.
18531         * doc/cpp.texi (Common Predefined Macros): Document
18532         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
18534 2007-03-05  Ian Lance Taylor  <iant@google.com>
18536         PR tree-optimization/31034
18537         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
18538         half-range if the other side is an overflow infinity.
18540 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
18542         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
18543         (bfin*-linux-uclibc*): New configuration.
18544         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
18545         defining.
18546         * config/bfin/linux.h: New file.
18547         * config/bfin/libgcc-bfin.ver: New file.
18548         * config/bfin/t-bfin-uclinux: New file.
18549         * config/bfin/t-bfin-linux: New file.
18550         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
18551         (TARGET_OS_CPP_BUILTINS): New macro.
18553 2007-03-05  Richard Guenther  <rguenther@suse.de>
18555         * fold-const.c (fold_binary): Remove duplicate folding
18556         of comparison of non-null ADDR_EXPR against null.
18558 2007-03-05  Richard Guenther  <rguenther@suse.de>
18559             Dorit Nuzman  <dorit@il.ibm.com>
18561         PR tree-optimization/26420
18562         * tree-vectorizer.c (vectorize_loops): Bail out early if there
18563         are no loops in the function.  Only print the number of
18564         vectorized loops if it is greater than zero or we are supposed
18565         to print information about unvectorized loops.
18567 2007-03-05  Revital Eres  <eres@il.ibm.com>
18569         * gcc.dg/var-expand1.c: New test.
18570         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
18571         when an accumulator is expanded.
18573 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18575         PR other/30465
18576         * c-common.c (convert_and_check): Don't give warnings for
18577         conversion if 'expr' already overflowed.
18579 2007-03-04  Roger Sayle  <roger@eyesopen.com>
18581         PR middle-end/30744
18582         * fold-const.c (fold_comparison): Enforce type consistency when
18583         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
18585 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
18587         * tree-ssa-address.c (create_mem_ref): Do not put an expression
18588         containing a cast to the base of TARGET_MEM_REF.
18590 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
18592         * tree.c (tree_contains_struct_check_failed): Remove spurious
18593         whitespace from error message.
18595 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
18597         PR target/30406
18598         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
18599         instead of precision.
18601 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
18602             Nathan Sidwell  <nathan@codesourcery.com>
18604         * emit-rtl.c (find_auto_inc): New.
18605         (try_split): recreate REG_INC notes,
18606         Use regular for loops rather than whiles.
18608 2007-03-03  Andreas Schwab  <schwab@suse.de>
18610         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
18611         * configure: Regenerate.
18613 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18615         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
18616         flag_rounding_math, not flag_unsafe_math_optimizations.
18618         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
18619         fold_build2.
18620         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
18621         alpha_fold_vector_minmax): Likewise.
18622         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
18623         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
18625 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
18627         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
18628         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
18629         if the lhs has side-effects.
18630         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
18632 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18634         * config/i386/i386.h (TUNEMASK): Remove define.
18635         (ARCHMASK): Remove define.
18636         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
18637          Use ix86_arch_mask variable instead of ARCHMASK.
18638         * config/i386/i386.c (override_options): Ditto.
18639         (standard_80387_constant_p): Ditto.
18641 2007-03-02  Ian Lance Taylor  <iant@google.com>
18643         Used signed infinities in VRP.
18644         * tree-vrp.c (uses_overflow_infinity): New static function.
18645         (supports_overflow_infinity): New static function.
18646         (make_overflow_infinity): New static function.
18647         (negative_overflow_infinity): New static function.
18648         (positive_overflow_infinity): New static function.
18649         (is_negative_overflow_infinity): New static function.
18650         (is_positive_overflow_infinity): New static function.
18651         (is_overflow_infinity): New static function.
18652         (overflow_infinity_range_p): New static function.
18653         (compare_values_warnv): New function split out of compare_values.
18654         (compare_value): Call it.
18655         (set_value_range_to_nonnegative): Add overflow_infinity
18656         parameter.  Change caller.
18657         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
18658         Change callers.
18659         (vrp_expr_computes_nonzero): Likewise.
18660         (compare_ranges, compare_range_with_value): Likewise.
18661         (compare_name_with_value, compare_names): Likewise.
18662         (vrp_evaluate_conditional): Likewise.
18663         (set_value_range): Handle infinity
18664         (vrp_operand_equal_p, operand_less_p): Likewise.
18665         (extract_range_from_assert): Likewise.
18666         (vrp_int_const_binop): Likewise.
18667         (extract_range_from_binary_expr): Likewise.
18668         (extract_range_from_unary_expr): Likewise.
18669         (extract_range_from_comparison): Likewise.
18670         (extract_range_from_expr): Likewise.
18671         (dump_value_range): Likewise.
18672         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
18673         (test_for_singularity): Likewise.
18674         (vrp_int_const_binop): Remove inline qualifier.
18675         (adjust_range_with_scev): Add comment.
18676         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
18678 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
18680         * tree-ssa-structalias.c (could_have_pointers): Tidy.
18681         (get_constraint_for): Likewise.
18682         (do_structure_copy): Likewise.
18683         (find_func_aliases): Fix references to MODIFY_EXPR.
18684         (intra_create_variable_infos): Tidy.
18685         * tree-ssa-operands.c (add_virtual_operand): Add argument
18686         IS_CALL_SITE.
18687         When adding members of alias sets, if IS_CALL_SITE is true and
18688         the symbol is not call-clobbered, skip it.
18689         Adjust all callers.
18691 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
18693         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
18694         entry by means of emit_insn_at_entry.
18696 2007-03-02  Richard Henderson  <rth@redhat.com>
18698         * expr.h (promoted_input_arg): Remove decl.
18699         * function.c (promoted_input_arg): Merge into ...
18700         * combine.c (setup_incoming_promotions): ... only caller.
18701         Rearrange to avoid double loop.
18703 2007-03-02  Ben Elliston  <bje@au.ibm.com>
18704             Peter Bergner  <bergner@vnet.ibm.com>
18705             Janis Johnson  <janis187@us.ibm.com>
18707         * config/rs6000/dfp.md: New file.
18708         * config/rs6000/rs6000.md: Include dfp.md.
18709         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
18710         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
18711         and TDmode decimal float modes in FP registers.
18712         (num_insns_constant): Likewise.
18713         (rs6000_legitimate_offset_address_p): Likewise.
18714         (rs6000_legitimize_address): Likewise.
18715         (rs6000_legitimize_reload_address): Likewise.
18716         (rs6000_legitimate_address): Likewise.
18717         (rs6000_emit_move): Likewise.
18718         (function_arg_boundary): Likewise.
18719         (function_arg_advance): Likewise.
18720         (rs6000_darwin64_record_arg_recurse): Likewise.
18721         (function_arg): Likewise.
18722         (rs6000_gimplify_va_arg): Likewise.
18723         (rs6000_split_multireg_move): Likewise.
18724         (rs6000_output_function_epilogue): Likewise.
18725         (rs6000_output_function_epilogue): Likewise.
18726         (rs6000_register_move_cost): Likewise.
18727         (rs6000_function_value): Likewise.
18728         (rs6000_libcall_value): Likewise.
18730 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
18732         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
18734 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
18736         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
18737         Use $MULTIDIR to choose between the kernel and RTP headers,
18738         and use $WIND_BASE and $WIND_USR to locate them.
18740 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18742         * config/i386/i386.c (override_options): Put initialization of
18743         ix86_tune_mask and ix86_arch_mask to the correct place.
18745 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18746             Michael Meissner  <michael.meissner@amd.com>
18748         PR target/31019
18749         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
18750         (ARCHMASK): Define.
18751         (TARGET_CMOVE): Use ARCHMASK.
18752         (TARGET_CMPXCHG): Ditto.
18753         (TARGET_CMPXCHG8B): Ditto.
18754         (TARGET_XADD): Ditto.
18755         (TARGET_BSWAP): Ditto.
18756         * config/i386/i386.c (ix86_tune_mask): New global variable.
18757         (ix86_arch_mask): Ditto.
18758         (override_options): Initialize ix86_tune_mask and
18759         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
18760         target_flags.
18762 2007-03-02  Ben Elliston  <bje@au.ibm.com>
18764         PR 30992
18765         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
18767 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
18769         * target.h (init_dwarf_reg_sizes_extra): New target hook.
18770         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
18771         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
18772         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
18773         hook.
18774         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
18775         rs6000_init_dwarf_reg_sizes_extra): New.
18776         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
18777         SPE register high parts.
18779 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
18781         * Makefile.in: Add install-pdf target as
18782         copied from automake v1.10 rules.
18783         * configure.ac: Add install-pdf to target list.
18784         * configure: Regenerate.
18786 2007-03-01  Paul Brook  <paul@codesourcery.com>
18788         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
18789         modes to LDRD for DImode.
18790         (output_move_double): Fixup out of range ldrd/strd.
18791         (vfp_secondary_reload_class): Rename...
18792         (coproc_secondary_reload_class): ... to this.  Add wb argument.
18793         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
18794         coproc_secondary_reload_class for CLASS_IWMMXT.
18795         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
18796         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
18798 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
18800         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
18801         unroll factor by the estimated number of iterations.
18802         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
18803         than prefetch latency.
18805         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
18806         decode_caches_intel, detect_caches_intel): New functions.
18807         (host_detect_local_cpu): Use detect_caches_amd and
18808         detect_caches_intel.
18810 2007-03-01  Richard Henderson  <rth@redhat.com>
18812         * expr.c (emit_move_complex_push): Export.
18813         (emit_move_complex_parts): Split out from ...
18814         (emit_move_complex): ... here.
18815         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
18816         * config/i386/i386.md (movcdi): New.
18818 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
18820         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
18821         size of mode1 to check for tieable modes in MMX case.
18823 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
18825         * Makefile.in (rtlanal.o): Depend on tree.h.
18826         * rtl.h (offset_within_section_p, split_const): Declare.
18827         * rtlanal.c: Include tree.h.
18828         (offset_within_block_p): New function, taken from
18829         mips_offset_within_object_p.
18830         (split_const): New function, taken from mips_split_const.
18831         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
18832         Declare.
18833         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
18834         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
18835         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
18836         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
18837         (m68k_illegitimate_symbolic_constant_p): New function.
18838         * config/m68k/m68k.md (movsi): Remove misleading predicates.
18839         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
18840         symbolic constant that might be outside the symbol's section,
18841         move the symbol first and then add the offset.
18842         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
18843         Override.
18844         * config/mips/mips.c (mips_split_const): Delete.
18845         (mips_offset_within_object_p): Delete.
18846         (mips_symbolic_constant_p): Use offset_within_section_p and
18847         split_const instead of mips_offset_within_object_p and
18848         mips_split_const.
18849         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
18850         (mips_legitimize_const_move, print_operand_reloc)
18851         (mips_dangerous_for_la25_p): Use split_const instead of
18852         mips_split_const.
18854 2007-02-28  Eric Christopher  <echristo@apple.com>
18856         * Makefile.in (install-include-dir): Don't rm -rf include.
18858 2007-02-28  Richard Guenther  <rguenther@suse.de>
18860         PR middle-end/30364
18861         * fold-const.c (fold_binary): Do not associate expressions
18862         with more than one variable for integer types that do not wrap.
18864 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
18866         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
18867         Delete, and replace with...
18868         (fold_builtin_call_array): This.  Update callers to use it.
18869         * fold-const.c (fold_build_call_list): Delete, and replace with...
18870         (fold_build_call_array): This.
18871         (fold_build_call_list_initializer): Delete, and replace with...
18872         (fold_build_call_array_initializer): This.
18873         * tree.h: Update declarations to reflect above changes.
18875         * c-typeck.c (build_function_call): Store converted arguments
18876         in a stack-allocated array instead of building a list.
18877         (convert_arguments): Store arguments in the array passed in as an
18878         argument, and return the actual number of arguments.
18879         * c-format.c: (check_function_format): Pass arguments in an
18880         array instead of a list.
18881         * c-common.c (check_function_nonnull): Likewise.
18882         (check_function_sentinel): Likewise.
18883         (check_function_arguments): Likewise.
18884         * c-common.h: Update declarations to reflect above changes.
18886 2007-02-28  Jan Hubicka  <jh@suse.cz>
18888         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
18889         PRED_NEGATIVE_RETURN): Update outcomes.
18891 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
18893         * calls.c (emit_library_call_value_1): Handle partial registers
18894         correctly when building up CALL_INSN_FUNCTION_USAGE.
18896 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18898         * pa/predicates.md (move_src_operand): Allow zero for mode.
18899         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
18900         move pattern.
18902 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
18904         PR target/30970
18905         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
18906         *movv2df_internal): Enable pattern only for valid operand
18907         combinations.
18908         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
18909         tie only 128bit modes. For MMX registers, tie only 64bit modes.
18911 2007-02-27  Mike Stump  <mrs@apple.com>
18913         * config/darwin-crt3.c: Avoid compilation when compiling for a
18914         kext multilib.
18916 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
18918         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
18919         FIXED_INCLUDE_DIR.
18920         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
18921         for fixed headers and limits.h.
18922         (install-include-dir, install-headers-tar, install-headers-cpio,
18923         install-headers-cp, real-install-headers-tar,
18924         real-install-headers-cpio, real-install-headers-cp): Handle
18925         include-fixed as well as include.
18926         (install-mkheaders): Don't install files that go only in include
18927         not include-fixed.
18928         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
18929         from GCC_INCLUDE_DIR.
18930         * gcc.c (process_command): Remove special -BstageN/ handling.
18931         (do_spec_1): Add include-fixed directories.
18933 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18935         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
18936         _smulsi3_highpart.
18937         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
18938         New functions.
18939         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
18940         patterns.
18942 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
18944         * c-common.c (get_priority): Add check for
18945         SUPPORTS_INIT_PRIORITY.
18947 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18949         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
18951         * config/bfin/bfin.c: Include "cfglayout.h".
18952         (MAX_LSETUP_DISTANCE): New macro.
18953         (struct loop_info): New members incoming, incoming_src and
18954         incoming_dest.  Delete member predecessor.
18955         (length_for_loop): New function.
18956         (bfin_optimize_loop): Handle more different loop structures.
18957         (bfin_discover_loop): Rework detection of predecessor blocks by
18958         examining incoming edges.
18959         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
18960         bfin_reorg_loops.
18961         (bfin_reorder_loops): New function.
18962         (bfin_reorg_loops): Use these three new functions.
18964         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
18965         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
18966         (CONSTRAINT_LEN): Add entry for 'q'.
18967         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
18968         Add 'q' constraints.
18969         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
18970         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
18972         * config/bfin/bfin.md (add_with_carry): New pattern.
18973         (s_or_u, su_optab, su_modifier): New code macros/attrs.
18974         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
18975         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
18976         support unsigned multiplies too.  Removed incorrect commutativity from
18977         operand 1 constraint where appropriate.
18978         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
18979         patterns.
18980         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
18981         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
18982         New patterns.
18983         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
18984         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
18985         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
18986         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
18987         usmulhisi_hh_huh): New patterns.
18989         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
18990         lshifthi3): Fix output template to use half reg for operand 2.
18992         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
18993         instead of R2.
18995         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
18997 2007-02-27  Andreas Schwab  <schwab@suse.de>
18999         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
19001 2007-02-27  Jan Hubicka  <jh@suse.cz>
19003         * predict.c (last_basic_block_p): Remove.
19004         (tree_estimate_probability): Update return heuristic for commonized
19005         return blocks.
19007 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
19009         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
19011 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
19013         * doc/include/gcc-common.texi (versionsubtitle): New macro.
19014         * doc/cpp.texi: Standardize title page.
19015         * doc/cppinternals.texi: Likewise.
19016         * doc/gcc.texi: Standardize title page, remove version number
19017         from copyright page.
19018         * doc/gccint.texi: Likewise.
19019         * doc/install.texi: Standardize title page, add table of
19020         contents.
19022 2007-02-26  Jan Hubicka  <jh@suse.cz>
19024         * predict.def: Set outcomes according to more recent results.
19025         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
19026         Remove dead predictors.
19027         * predict.c (return_prediction): Fix pasto.
19029 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
19031         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
19032         change; avoid a memory leak when returning early.
19034 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
19036         * c-decl.c (static_ctors): Move to c-common.c.
19037         (static_dtors): Likewise.
19038         (finish_function): Use c_record_cdtor_fn.
19039         (build_cdtor): Move to c-common.c.
19040         (c_write_global_declarations): Use c_build_cdtor_fns.
19041         * c-common.h (static_ctors): Declare.
19042         (static_dtors): Likewise.
19043         (c_record_cdtor_fn): Likewise.
19044         (c_build_cdtor_fns): Likewise.
19045         * c-common.c (static_ctors): New variable.
19046         (static_dtors): Likewise.
19047         (c_record_cdtor_fn): New function.
19048         (build_cdtor): Move from c-decl.c
19049         (c_build_cdtor_fns): New function.
19051         * output.h (assemble_addr_to_section): Declare.
19052         (get_cdtor_priority_section): Likewise.
19053         * varasm.c (assemble_addr_to_section): New function.
19054         (get_cdtor_priority_section): Likewise.
19055         (default_named_section_asm_out_destructor): Use them.
19056         (destor_dtor_section_asm_out_destructor): Likewise.
19057         (default_named_section_asm_out_constructor): Likewise.
19058         (default_ctor_section_asm_out_constructor): Likewise.
19059         * config.gcc (*-*-vxworks*): Include vxworks.o.
19060         * config/t-vxworks (vxworks.o): New target.
19061         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
19062         (TARGET_ASM_CONSTRUCTOR): Define.
19063         (TARGET_ASM_DESTRUCTOR): Likewise.
19064         (vxworks_asm_out_constructor): Declare.
19065         (vxworks_asm_out_destructor): Likewise.
19067         * c-common.c (get_priority): Check that we have not just an
19068         INTEGER_CST, but an integer constant with integeral type.
19070 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
19072         PR tree-optimization/30938
19073         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
19074         use &dt[nargs-1] instead of &dt[nargs] in the call to
19075         vect_is_simple_use().
19077 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
19079         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
19080         from register elimination as PRE_MODIFY / POST_MODIFY increments.
19081         Do not attempt to handle MEM inside auto-inc expressions.
19082         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
19083         of a register modified by an auto-inc expression.  However, do handle
19084         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
19085         (elimination_effects): Prohibit elimination of a register modified
19086         by an auto-inc expression.  Disable register elimination rules whose
19087         target register is modified by an auto-inc expression with variable
19088         increment.
19090 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
19092         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
19093         off-by-one error.
19094         (array_at_struct_end_p): New function.
19095         (idx_infer_loop_bounds): Use it.
19096         (estimate_numbers_of_iterations_loop): Export.
19097         * predict.c (predict_loops): Use estimated_loop_iterations_int.
19098         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
19099         (tree_estimate_probability): Call record_loop_exits.
19100         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
19101         (estimated_loop_iterations, estimated_loop_iterations_int,
19102         estimated_loop_iterations_tree): New functions.
19103         (analyze_siv_subscript_cst_affine,
19104         compute_overlap_steps_for_affine_1_2,
19105         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
19106         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
19107         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
19108         (PRED_LOOP_ITERATIONS_GUESSED): New.
19109         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
19110         * cfgloop.h (estimate_numbers_of_iterations_loop,
19111         estimated_loop_iterations_int): Declare.
19113 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
19115         * doc/extend.texi: Document optional priority argument to
19116         constructors and destructors.
19117         * tree.c (init_priority_for_decl): Adjust GTY markers.
19118         (init_ttree): Use priority-info hash functions for
19119         init_priority_for_decl.
19120         (tree_map_eq): Rename to ...
19121         (tree_map_base_eq): ... this.
19122         (tree_map_marked_p): Rename to ...
19123         (tree_map_base_marked_p): ... this.
19124         (tree_map_base_hash): New function.
19125         (decl_init_priority_lookup): Rework.
19126         (decl_fini_priority_lookup): New function.
19127         (decl_priority_info): New function.
19128         (decl_init_priority_insert): Use it.
19129         (decl_fini_priority_insert): Likewise.
19130         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
19131         hierarchy.
19132         (decl_restrict_base_insert): Likewise.
19133         (decl_debug_expr_insert): Likewise.
19134         (decl_value_expr_lookup): Likewise.
19135         (decl_value_expr_insert): Likewise.
19136         * tree.h (priority_type): New type.
19137         (decl_init_priority_lookup): Use priority_type.
19138         (decl_fini_priority_lookup): New function.
19139         (decl_init_priority_insert): Use priority_type.
19140         (decl_fini_priority_insert): New function.
19141         (DECL_HAS_INIT_PRIORITY): Tweak comments.
19142         (DECL_INIT_PRIORITY): Likewise.
19143         (SET_DECL_INIT_PRIORITY): Add comment.
19144         (DECL_FINI_PRIORITY): New macro.
19145         (SET_DECL_FINI_PRIORITY): Likewise.
19146         (DEFAULT_INIT_PRIORITY): Document.
19147         (MAX_INIT_PRIORITY): Likewise.
19148         (MAX_RESERVED_INIT_PRIORITY): Likewise.
19149         (tree_map_base): New type.
19150         (tree_map_base_eq): New function.
19151         (tree_map_base_hash): Likewise.
19152         (tree_map_base_marked_p): Likewise.
19153         (tree_map): Inherit from tree_map_base.
19154         (tree_map_eq): Make it a macro.
19155         (tree_map_marked_p): Likewise.
19156         (tree_int_map): Inherit from tree_map_base.
19157         (tree_int_map_eq): Make it a macro.
19158         (tree_int_map_hash): Likewise.
19159         (tree_int_map_marked_p): Likewise.
19160         (tree_priority_map): New type.
19161         (tree_priority_map_eq): New macro.
19162         (tree_priority_map_hash): Likewise.
19163         (tree_priority_map_marked_p): Likewise.
19164         * varasm.c (emults_decl): Adjust for refactoring of tree_map
19165         hierarchy.
19166         (emutls_common_1): Likewise.
19167         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
19168         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
19169         of tree_map hierarchy.
19170         * tree-cfg.c (move_stmt_r): Likewise.
19171         (new_label_mapper): Likewise.
19172         * c-tree.h (c_expand_body): Move to ...
19173         * c-common.h (c_expand_body): ... here.
19174         * c-decl.c (c_expand_body): Move to ...
19175         * c-common.c (c_expand_body): ... here.
19176         (c_common_attribute_table): Allow 1 argument for the constructor
19177         and destructor attributes.
19178         (get_priority): New function.
19179         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
19180         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
19182 2007-02-24  Jan Hubicka  <jh@suse.cz>
19184         PR middle-end/30509
19185         * tree-inline.c (copy_bb): Produce exact copy of EH info when
19186         copying for inlining.
19188 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
19189             Jan Hubicka  <jh@suse.cz>
19191         PR target/30778
19192         * i386.c (counter_mode): New function.
19193         (expand_set_or_movmem_via_loop): Use it.
19194         (expand_movmem_epilogue): Likewise; fix pasto.
19195         (ix86_expand_movmem): Do emit guard even for constant counts.
19196         (ix86_expand_setmem): Likewise.
19198 2007-02-25  Nick Clifton  <nickc@redhat.com>
19200         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
19201         (JUMP_TABLES_IN_TEXT_SECTION): Define.
19203 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
19205         PR target/30770
19206         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
19207         count argument with 0x10, not with 0x16.
19208         (expand_setmem_epilogue): Ditto.
19210 2007-02-24  Mike Stump  <mrs@apple.com>
19212         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
19213         symbols.
19215 2007-02-24  Richard Guenther  <rguenther@suse.de>
19217         PR middle-end/30951
19218         * fold-const.c (fold_binary): Fold x +- CST op x for
19219         EQ_EXPR and NE_EXPR.
19221 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19223         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
19225 2007-02-24  Jan Hubicka  <jh@suse.cz>
19227         * cgraphunit.c (decide_is_function_needed): Honor
19228         -fkeep-inline-functions.
19230 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19232         * builtins.c (fold_builtin_modf): New.
19233         (fold_builtin_2): Use it.
19235 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
19237         * loop-iv.c (implies_p): Detect additional cases where A implies B.
19238         (determine_max_iter): Take additional LOOP arg; all callers changed.
19239         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
19240         one using simplifications.
19241         (simplify_using_initial_values): Return if the expression becomes
19242         invalid due to altered regs.
19244 2007-02-23  DJ Delorie  <dj@redhat.com>
19246         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
19248 2007-02-23  Mike Stump  <mrs@apple.com>
19250         * tlink.c (scan_linker_output): Parse linker messages from
19251         darwin9's linker better.
19253 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
19255         PR debug/29614
19256         * varpool.c (varpool_assemble_pending_decls):  Set
19257         varpool_last_needed_node to null.
19259 2007-02-23  DJ Delorie  <dj@redhat.com>
19261         * config/i386/i386.c (ix86_data_alignment): Don't specify an
19262         alignment bigger than the object file can handle.
19264 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
19266         PR target/30825
19267         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
19268         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
19269         (*movsf_1): Penalize MMX moves.
19271 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
19273         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
19274         2^32-1 or more times unless flag_unsafe_loop_optimizations.
19276         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
19278 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19280         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
19281         (fold_builtin_1): Use them.
19282         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
19283         BUILT_IN_SIGNIFICAND.
19285 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
19287         * config/i386/i386.c (bdesc_1arg): Initialize
19288         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
19289         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
19290         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
19291         and IX86_BUILTIN_MOVSLDUP.
19293 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
19295         PR rtl-optimization/30841
19296         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
19298 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19300         * builtins.c (fold_builtin_frexp): New.
19301         (fold_builtin_2): Use it.
19303 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
19305         * doc/invoke.texi (Spec Files): Document getenv spec function.
19307         * gcc.c (getenv_spec_function): New function.
19308         (static_spec_functions): Add it.
19309         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
19310         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
19311         header files.
19313 2007-02-22  Michael Matz  <matz@suse.de
19315         PR c++/29433
19316         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
19317         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
19319 2007-02-22  Ian Lance Taylor  <iant@google.com>
19321         PR debug/30898
19322         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
19323         (mem_loc_descriptor): Call it.
19325 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
19326             Ira Rosen  <irar@il.ibm.com>
19328         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
19330 2007-02-22  Ira Rosen  <irar@il.ibm.com>
19332         PR tree-optimization/30843
19333         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
19334         stores only after all the group is vectorized.
19336 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
19338         PR tree-optimization/30858
19339         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
19340         in the reduction cycle have a single use in the loop.
19341         * tree-vectorizer.h (relevant): Add documentation.
19343 2007-02-20  Mike Stump  <mrs@apple.com>
19345         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
19346         * configure: Regenerate.
19348 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
19350         Change the defaults of some parameters and options.
19351         * config/spu/spu-protos.h (spu_optimization_options): Declare.
19352         * config/spu/spu.c (spu_optimization_options): Add.
19353         (spu_override_options): Change params in spu_optimization_options.
19354         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
19356         Register 127 is only 16 byte aligned when used as a frame pointer.
19357         * config/spu/spu-protos.h (spu_init_expanders): Declare.
19358         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
19359         HARD_FRAME_POINTER_REGNUM.
19360         (spu_legitimate_address):  Use regno_aligned_for_reload.
19361         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
19362         aligned when frame_pointer_needed is true.
19363         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
19364         to 8 bits.
19365         * config/spu/spu.h (INIT_EXPANDERS): Define.
19367         Make sure shift and rotate instructions have valid immediate operands.
19368         * config/spu/predicates.md (spu_shift_operand): Remove.
19369         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
19370         * config/spu/constraints.md (W, O): Extend range.
19371         * config/spu/spu.md (umask, nmask): Define.
19372         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
19373         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
19374         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
19375         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
19376         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
19377         (lshr<mode>3_reg):  Fix rtl description.
19379         Make sure mulhisi immediate operands are valid.
19380         * config/spu/predicates.md (imm_K_operand): Add.
19381         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
19383         Generate constants using fsmbi and andi.
19384         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
19385         (print_operand, spu_split_immediate, classify_immediate,
19386         fsmbi_const_p): Handle IC_FSMBI2.
19388         Correctly handle a CONST_VECTOR containing symbols.
19389         * config/spu/spu.c (print_operand): Handle HIGH correctly.
19390         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
19391         (immediate_load_p): Allow symbols that use 2 instructions to create.
19392         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
19393         with symbols when flag_pic is set.
19394         (const_vector_immediate_p): New.
19395         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
19396         accept a CONST_VECTOR with symbols.
19397         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
19398         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
19399         correctly.
19400         * config/spu/spu.md (high, low): Delete.
19401         (low_<mode>): Define.
19403         Remove INTRmode and INTR_REGNUM, which didn't work.
19404         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
19405         of INTR_REGNUM.
19406         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
19407         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
19408         peephole2 pattern): Don't use INTR or 131.
19409         (movintrcc): Delete.
19410         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
19411         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
19412         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
19413         (UNSPEC_SET_INTR): Add.
19414         * config/spu/spu-modes.def (INTR): Remove.
19416         More accurate warnings about run-time relocations.
19417         * config/spu/spu.c (reloc_diagnostic): Test in_section.
19419         Correctly warn about immediate arguments to specific intrinsics.
19420         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
19421         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
19422         the instruction predicate.
19424         Fix tree check errors with latest update.
19425         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
19426         CALL_EXPR_ARG.
19427         (spu_expand_builtin): Use CALL_EXPR_FN.
19429         Add missing specific intrinsics.
19430         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
19431         si_bislede.
19432         * config/spu/spu_internals.h: Ditto.
19434         Fix incorrect operand modifiers.
19435         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
19436         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
19438         Optimize one case of zero_extend of a vec_select.
19439         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
19441         Accept any immediate for hbr.
19442         * config/spu/spu.md (hbr):  Change s constraints to i.
19444 2007-02-21  Paul Brook  <paul@codesourcery.com>
19446         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
19447         condexec_count when skipping USE and CLOBBER.
19449 2007-02-21  Nick Clifton  <nickc@redhat.com>
19451         * common.opt (Warray-bounds): Add Warning attribute.
19452         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
19453         Likewise.
19454         (fsized-zeroes): Add Optimization attribute.
19455         (fsplit-wide-types, ftree-scev-cprop): Likewise.
19456         * c.opt (Wc++0x-compat): Add Warning attribute.
19458 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
19460         PR middle-end/30761
19461         * reload1.c (eliminate_regs_in_insn): In the single_set special
19462         case, attempt to re-recognize the insn before falling back to
19463         having reload fix it up.
19465 2007-02-20  Eric Christopher  <echristo@gmail.com>
19467         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
19468         Rewrite accordingly.
19469         (frv_read_iacc_argument): Ditto.
19470         (frv_expand_set_builtin): Take a call instead of arglist, update for
19471         above changes.
19472         (frv_expand_unop_builtin): Ditto.
19473         (frv_expand_binop_builtin): Ditto.
19474         (frv_expand_cut_builtin): Ditto.
19475         (frv_expand_binopimm_builtin): Ditto.
19476         (frv_expand_voidbinop_builtin): Ditto.
19477         (frv_expand_int_void2arg): Ditto.
19478         (frv_expand_prefetches): Ditto.
19479         (frv_expand_voidtriop_builtin): Ditto.
19480         (frv_expand_voidaccop_builtin): Ditto.
19481         (frv_expand_load_builtin): Ditto.
19482         (frv_expand_store_builtin): Ditto.
19483         (frv_expand_mdpackh_builtin): Ditto.
19484         (frv_expand_mclracc_builtin): Ditto.
19485         (frv_expand_mrdacc_builtin): Ditto.
19486         (frv_expand_mwtacc_builtin): Ditto.
19487         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
19488         calls for above.
19490 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
19492         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
19493         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
19494         cmpb instruction.
19495         (HAVE_GAS_DFP): Check for assembler support of decimal floating
19496         point instructions.
19497         * configure: Regenerate.
19498         * config.in: Regenerate.
19499         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
19500         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
19501         masks to power6 and power6x and to POWERPC_MASKS.
19502         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
19503         _ARCH_PWR6.
19504         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
19505         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
19506         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
19507         Access PROTOTYPE as variable, not mask.
19509 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
19511         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
19512         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
19513         * combine.c (adjust_for_new_dest): Use it.
19514         * postreload.c (reload_combine): Likewise.
19516 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
19518         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
19519         notes on an insn with multiple sets, even if single_set returns
19520         non-NULL for that insn.
19522 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19524         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
19525         scalbn and scalbln.
19527 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
19529         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
19530         if user didn't pass it.
19531         * config/i386/darwin.h (CC1_SPEC): Likewise.
19532         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
19533         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
19534         -mmacosx-version-min.
19536 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19537             Uros Bizjak  <ubizjak@gmail.com>
19539         * optabs.h (enum optab_index): Add new OTI_scalb.
19540         (scalb_optab): Define corresponding macro.
19541         * optabs.c (init_optabs): Initialize scalb_optab.
19542         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
19543         patterns.
19544         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
19545         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
19546         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
19547         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
19548         flag_unsafe_math_optimizations is set.
19550         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
19551         to implement scalbf, scalb and scalbl built-ins as inline x87
19552         intrinsics.
19554 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19555             DJ Delorie <dj@redhat.com>
19557         PR other/30824
19558         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
19559         (diagnostic_report_diagnostic): ... here, and turn them into real
19560         errors. If warnings are inhibited, no need to do anything.
19562 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
19564         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
19565         better code generation.
19567 2007-02-20  Ben Elliston  <bje@au.ibm.com>
19569         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
19571 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
19573         * config/alpha/alpha.c, config/alpha/alpha.md,
19574         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
19575         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
19576         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
19577         config/arm/lib1funcs.asm: Follow spelling conventions.
19579         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
19580         config/fr30/fr30.md, config/i386/i386.h,
19581         config/iq2000/iq2000.h, config/iq2000/predicates.md,
19582         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
19583         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
19584         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
19585         config/rs6000/altivec.md, config/rs6000/rs6000.c,
19586         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
19587         config/sparc/sparc.c, config/sparc/sparc.h,
19588         config/sparc/sparc.md, config/spu/constraints.md,
19589         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
19590         conventions.
19592 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
19594         PR target/29943
19595         * varasm.c (use_blocks_for_decl_p): Return false for decls with
19596         alias attribute.
19598 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
19600         * doc/invoke.texi (-ftree-lrs): Remove.
19602 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
19604         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
19605         NULL.
19607 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
19609         * config/ia64/ia64.c (ia64_expand_builtin): Use the
19610         new CALL_EXPR_FN macro for retrieving the function
19611         declaration of the input expression.
19613 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19615         * c.opt (Waddress): New.
19616         * common.opt (Walways-true): Delete.
19617         (Wstring-literal-comparison): Delete.
19618         * doc/invoke.texi (Warning Options): Delete -Walways-true and
19619         -Wstring-literal-comparison. Add -Waddress.
19620         (Waddress): New.
19621         (Walways-true): Delete.
19622         (Wstring-literal-comparison): Delete.
19623         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
19624         consistently instead of -Walways-true in example.
19625         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
19626         * c-typeck.c (parser_build_binary_op): Replace
19627         -Wstring-literal-comparison and -Walways-true with -Waddress.
19628         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
19629         with -Waddress.
19631 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
19633         * tree-cfg.c (dump_function_to_file): Be prepared for functions
19634         without DECL_STRUCT_FUNCTION initialized.
19636 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
19638         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
19639         due to calls to functions taking pointers as parameters.
19641 2007-02-19  Richard Henderson  <rth@redhat.com>
19643         PR debug/29558
19644         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
19645         in memory.
19647 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
19649         * config/s390/s390.c (s390_call_saved_register_used,
19650         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
19651         accessed to the new scheme.
19653 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19655         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
19656         (cris_print_index, cris_print_operand, cris_print_operand_address)
19657         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
19658         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
19659         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
19660         GET_CODE () == xxx.
19661         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
19662         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
19663         GO_IF_LEGITIMATE_ADDRESS): Ditto.
19664         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
19665         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
19666         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
19667         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
19668         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
19669         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
19670         (uminsi3, call, call_value): Ditto.
19671         (define_split: indir_to_reg_split, unnamed): Ditto.
19673 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
19675         PR tree-optimization/30975
19676         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
19677         wrong assert.
19679 2007-02-18  Eric Christopher  <echristo@gmail.com>
19681         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
19682         Remove use of arglist.
19683         (mips_expand_builtin): Remove use of arglist, pass in expr.
19684         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
19685         (mips_expand_builtin_movtf): Ditto.
19686         (mips_expand_builtin_compare): Ditto.
19688 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
19690         * tree-sra.c (sra_build_assignment): Replace assertion
19691         checking with a comment explaining why it can't be done.
19693 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
19695         PR middle-end/30833
19696         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
19697         during CALL_EXPR representation conversion.
19698         * tree-ssa-propagate.c (set_rhs): Likewise.
19700 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
19702         * tree-sra.c (sra_build_assignment): Disable assertion checking
19703         for now.
19705 2007-02-18  Roger Sayle  <roger@eyesopen.com>
19707         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
19708         instead of calling build2 with a GIMPLE_MODIFY_STMT.
19709         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
19710         Likewise.
19711         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
19712         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
19713         gimplify_init_ctor_eval_range, gimple_push_cleanup,
19714         gimplify_omp_for, gimplify_omp_atomic_pipeline,
19715         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
19716         force_gimple_operand): Likewise.
19717         * ipa-cp.c (constant_val_insert): Likewise.
19718         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
19719         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
19720         perfect_nestify): Likewise.
19721         * langhooks.c (lhd_omp_assignment): Likewise.
19722         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
19723         lower_copyprivate_clauses, lower_send_clauses,
19724         lower_send_shared_vars, expand_parallel_call,
19725         expand_omp_for_generic, expand_omp_for_static_nochunk,
19726         expand_omp_for_static_chunk, expand_omp_sections,
19727         lower_omp_single_copy, lower_omp_for_lastprivate,
19728         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
19729         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
19730         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
19731         Likewise.
19733 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
19735         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
19736         config/sh/sh.md: Follow spelling conventions.
19738         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
19739         config/frv/predicates.md: Follow spelling conventions.
19741         * config/m68k/linux-unwind.h: Fix a comment typo.
19742         * target.h: Follow spelling conventions.
19744 2007-02-18  Roger Sayle  <roger@eyesopen.com>
19746         PR rtl-optimization/28173
19747         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
19748         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
19749         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
19750         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
19751         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
19753 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19755         * builtins.c (fold_builtin_load_exponent): New.
19756         (fold_builtin_2): Use it.
19758 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
19760         PR rtl-optimization/30773
19761         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
19762         if we fail to attach a REG_EQUIV note.
19764 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
19765             Roger Sayle  <roger@eyesopen.com>
19767         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
19769 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
19771         * calls.c (initialize_argument_information): Pass original EXP
19772         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
19773         code to split complex arguments here, as part of initializing the
19774         ARGS array.
19775         (expand_call): Remove code that builds a list of arguments and
19776         inserts implicit arguments into it.  Instead, just count how many
19777         implicit arguments there will be so we can determine the size of
19778         the ARGS array, and let initialize_argument_information do the work.
19779         (split_complex_values): Delete unused function.
19781 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
19783         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
19785 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
19787         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
19788         for arg pointer based indexed addressing.
19790 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
19792         * config/ia64/ia64.h, config/ia64/ia64.md,
19793         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
19794         spelling conventions.
19796 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19798         * config/m68k/m68k.c (split_di): New.
19799         * config/m68k/m68k-protos.h: Declare split_di.
19800         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
19801           Improve predicate handling and split constant shifts.
19803 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19805         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
19806         parameter for register bitfield operations, general predicates
19807         cleanup
19809 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19811         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
19812         * config/m68k/linux-unwind.h: New file.
19814 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
19816         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
19817         config/i386/athlon.md, config/ia64/ia64.md,
19818         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
19819         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
19820         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
19821         tree-ssa-loop-niter.c, tree-vect-analyze.c,
19822         tree-vect-transform.c: Fix comment typos.
19824 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
19826         * sched-deps.c (find_insn_list): Remove.
19827         * sched-int.h: Remove the prototype for find_insn_list.
19829 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
19831         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
19832         to linker.
19833         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
19834         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
19835         darwin_rs6000_override_options.
19836         (C_COMMON_OVERRIDE_OPTIONS): Expect
19837         darwin_macosx_version_min to be non-NULL always.
19838         (TARGET_C99_FUNCTIONS): Likewise.
19839         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
19840         (DARWIN_MINVERSION_SPEC): New.
19841         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
19842         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
19843         to cc1*.
19844         (DARWIN_MINVERSION_SPEC): New.
19845         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
19846         value.
19847         * config/darwin-c.c (darwin_cpp_builtins): Expect
19848         darwin_macosx_version_min to be non-NULL always.
19850         * config/rs6000/rs6000.c: Clean up trailing whitespace.
19852 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
19854         * config/i386/i386.h (x86_use_xchgb): New.
19855         (TARGET_USE_XCHGB): New macro.
19856         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
19857         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
19858         Split after reload into bswaphi for shifts of 8.
19859         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
19860         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
19861         or when optimizing for size.
19863 2007-02-16  Richard Guenther  <rguenther@suse.de>
19864             Christian Bruel  <christian.bruel@st.com>
19866         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
19867         DECLs but prefer SSA_NAMEs over DECLs.
19869 2007-02-16  Richard Guenther  <rguenther@suse.de>
19871         * tree-flow-inline.h (single_imm_use_p): Remove.
19872         (zero_imm_uses_p): Likewise.
19873         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
19874         instead of single_imm_use_p.
19875         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
19876         zero_imm_uses_p.
19878 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19880         PR other/27843
19881         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
19882         nested double- and backquotes.
19884 2007-02-15  Roger Sayle  <roger@eyesopen.com>
19886         PR middle-end/30391
19887         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
19888         should be unreachable.
19889         (build2_stat): Allow construction of MODIFY_EXPR at any time.
19890         For the time being redirect GIMPLE_MODIFY_STMT to the new
19891         (renamed) build_gimple_modify_stmt_stat.
19892         (build2_gimple_stat): Rename to...
19893         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
19894         Always build a GIMPLE_MODIFY_STMT node.
19895         * tree.h (build2_gimple, build2_gimple_stat): Delete.
19896         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
19897         declarations.
19899         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
19900         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
19901         * tree-complex.c (set_component_ssa_name, expand_complex_move,
19902         expand_complex_div_wide): Likewise.
19903         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
19904         * tree-ssa-loop-im.c (schedule_sm): Likewise.
19905         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
19906         * tree-ssa-loop-manip.c (create_iv): Likewise.
19907         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
19908         abs_replacement): Likewise.
19909         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
19910         realify_fake_stores): Likewise.
19912         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
19913         node rather than a GIMPLE_MODIFY_STMT node.
19914         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
19915         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
19916         Likewise.
19917         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
19918         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
19919         GIMPLE_MODIFY_STMT.
19921 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19923         PR middle-end/30433
19924         * fold-const.c (fold_comparison): Add back the
19925         folding of constant complex comparisions.
19927 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19929         PR middle-end/30729
19930         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
19931         effects unknown to this function, return early.
19933 2007-02-15  Ian Lance Taylor  <iant@google.com>
19935         * lower-subreg.c (move_eh_region_note): New static function.
19936         (resolve_simple_move): Call it.
19937         (decompose_multiword_subregs): Track blocks for which we resolve a
19938         simple move which is also a control flow insn.  Pass them to
19939         find_many_sub_basic_blocks.
19940         (pass_lower_subreg): Add TODO_verify_flow.
19941         (pass_lower_subreg2): Likewise.
19943 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19944             Brooks Moses  <brooks.moses@codesourcery.com>
19945             Lee Millward  <lee.millward@codesourcery.com>
19947         * tree.h (enum tree_code_class): Add tcc_vl_exp.
19948         (VL_EXP_CLASS_P): New.
19949         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
19950         TREE_CODE_LENGTH.
19951         (TREE_OPERAND_CHECK_CODE): Likewise.
19952         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
19953         (TREE_RTL_OPERAND_CHECK): Likewise.
19954         (tree_operand_check_failed): Make second parameter the whole tree
19955         instead of its code.  Fixed callers.
19956         (VL_EXP_CHECK): New.
19957         (TREE_OPERAND_LENGTH): New.
19958         (VL_EXP_OPERAND_LENGTH): New.
19959         (CALL_EXPR_FN): New.
19960         (CALL_EXPR_STATIC_CHAIN): New.
19961         (CALL_EXPR_ARGS): New.
19962         (CALL_EXPR_ARG): New.
19963         (call_expr_nargs): New.
19964         (CALL_EXPR_ARGP): New.
19965         (build_nt_call_list): Declare.
19966         (build_vl_exp_stat): Declare.
19967         (build_vl_exp): New.
19968         (build_call_list): Declare.
19969         (build_call_nary): Declare.
19970         (build_call_valist): Declare.
19971         (build_call_array): Declare.
19972         (call_expr_arg): Declare.
19973         (call_expr_argp): Declare.
19974         (call_expr_arglist): Declare.
19975         (fold_build_call_list): Declare.
19976         (fold_build_call_list_initializer): Declare.
19977         (fold_call_expr): Declare to replace fold_builtin.
19978         (fold_builtin_fputs): Update to agree with modified definition.
19979         (fold_builtin_strcpy): Likewise.
19980         (fold_builtin_strncpy): Likewise.
19981         (fold_builtin_memory_chk): Likewise.
19982         (fold_builtin_stxcpy_chk): Likewise.
19983         (fold_builtin_strncpy_chk): Likewise.
19984         (fold_builtin_next_arg): Likewise.
19985         (fold_build_call_expr): Declare.
19986         (fold_builtin_call_list): Declare.
19987         (fold_builtin_call_valist): Declare.
19988         (build_call_expr): Declare.
19989         (validate_arglist): Update to agree with modified definition.
19990         (tree_operand_length): New.
19991         (call_expr_arg_iterator): New.
19992         (init_call_expr_arg_iterator): New.
19993         (next_call_expr_arg): New.
19994         (first_call_expr_arg): New.
19995         (more_call_expr_args_p): New.
19996         (FOR_EACH_CALL_EXPR_ARG): New.
19998         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
19999         and tcc_gimple_stmt.
20000         (tree_code_size): Update documentation.  Use sizeof (tree) rather
20001         than sizeof (char *).
20002         (tree_size): Likewise.  Add case for tcc_vl_exp.
20003         (tree_node_structure): Add case for tcc_vl_exp.
20004         (contains_placeholder_p): Likewise.
20005         (substitute_in_expr): Likewise.
20006         (substitute_placeholder_in_expr): Likewise.
20007         (stabilize_reference_1): Likewise.
20008         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
20009         to diagnose breakage of this interface for constructing CALL_EXPRs.
20010         (build_nt): Add similar assertion here.
20011         (build_nt_call_list): New.
20012         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
20013         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
20014         TREE_CODE_LENGTH.
20015         (get_callee_fndecl): Use new CALL_EXPR accessors.
20016         (tree_operand_check_failed): Change parameters to pass entire node
20017         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
20018         (process_call_operands): New.
20019         (build_vl_exp_stat): New.
20020         (build_call_list): New.
20021         (build_call_nary): New.
20022         (build_call_valist): New.
20023         (build_call_array): New.
20024         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20025         (call_expr_arglist): New.
20027         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
20028         tcc_vl_exp instead of a fixed-size tcc_expression.
20030         * doc/c-tree.texi (CALL_EXPR): Document new representation and
20031         accessors for CALL_EXPRs.
20032         (AGGR_INIT_EXPR): Likewise.
20034 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20035             Brooks Moses  <brooks.moses@codesourcery.com>
20036             Lee Millward  <lee.millward@codesourcery.com>
20038         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
20039         (expand_builtin_nonlocal_goto): Change parameter to be entire
20040         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
20041         (expand_builtin_prefetch): Likewise.
20042         (expand_builtin_classify_type): Likewise.
20043         (mathfn_built_in): Return NULL_TREE instead of 0.
20044         (expand_errno_check): Use new CALL_EXPR accessors.
20045         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
20046         Return NULL_RTX instead of 0.
20047         (expand_builtin_mathfn_2): Likewise.
20048         (expand_builtin_mathfn_3): Likewise.
20049         (expand_builtin_interclass_mathfn): Likewise.
20050         (expand_builtin_sincos): Likewise.
20051         (expand_builtin_cexpi): Likewise.
20052         (expand_builtin_int_roundingfn): Likewise.
20053         (expand_builtin_int_roundingfn_2): Likewise.
20054         (expand_builtin_pow): Likewise.
20055         (expand_builtin_powi): Likewise.
20056         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
20057         of arglist, fixing callers appropriately.  Use new CALL_EXPR
20058         accessors and constructors.  Return NULL_RTX instead of 0.
20059         (expand_builtin_strstr): Likewise.
20060         (expand_builtin_strchr): Likewise.
20061         (expand_builtin_strrchr): Likewise.
20062         (expand_builtin_strpbrk): Likewise.
20063         (expand_builtin_memcpy): Likewise.
20064         (expand_builtin_mempcpy): Likewise.
20065         (expand_builtin_mempcpy_args): New.
20066         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
20067         (expand_builtin_memmove_args): New.
20068         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
20069         (expand_movstr): Likewise.
20070         (expand_builtin_strcpy): Likewise.
20071         (expand_builtin_strcpy_args): New.
20072         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
20073         (expand_builtin_strncpy): Likewise.
20074         (expand_builtin_memset): Likewise.
20075         (expand_builtin_memset_args): New.
20076         (expand_builtin_bzero): Similarly to expand_builtin_memset.
20077         (expand_builtin_memcmp): Likewise.
20078         (expand_builtin_strcmp): Likewise.
20079         (expand_builtin_strncmp): Likewise.
20080         (expand_builtin_strcat): Likewise.
20081         (expand_builtin_strncat): Likewise.
20082         (expand_builtin_strspn): Likewise.
20083         (expand_builtin_strcspn): Likewise.
20084         (expand_builtin_args_info): Likewise.
20085         (expand_builtin_va_start): Likewise.
20086         (gimplify_va_arg_expr): Likewise.
20087         (expand_builtin_va_end): Likewise.
20088         (expand_builtin_va_copy): Likewise.
20089         (expand_builtin_frame_address): Likewise.
20090         (expand_builtin_alloca): Likewise.
20091         (expand_builtin_bswap): Likewise.
20092         (expand_builtin_unop): Likewise.
20093         (expand_builtin_fputs): Likewise.
20094         (expand_builtin_expect): Likewise.
20095         (expand_builtin_fabs): Likewise.
20096         (expand_builtin_copysign): Likewise.
20097         (expand_builtin_printf): Likewise.
20098         (expand_builtin_fprintf): Likewise.
20099         (expand_builtin_sprintf): Likewise.
20100         (expand_builtin_init_trampoline): Likewise.
20101         (expand_builtin_signbit): Likewise.
20102         (expand_builtin_fork_or_exec): Likewise.
20103         (expand_builtin_sync_operation): Likewise.
20104         (expand_builtin_compare_and_swap): Likewise.
20105         (expand_builtin_lock_test_and_set): Likewise.
20106         (expand_builtin_lock_release): Likewise.
20107         (expand_builtin): Likewise.
20108         (builtin_mathfn_code): Likewise.
20110         (fold_builtin_constant_p): Pass call arguments individually instead
20111         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
20112         accessors and constructors.  Return NULL_TREE instead of 0.
20113         (fold_builtin_expect): Likewise.
20114         (fold_builtin_classify_type): Likewise.
20115         (fold_builtin_strlen): Likewise.
20116         (fold_builtin_nan): Likewise.
20117         (integer_valued_real_p): Likewise.
20118         (fold_trunc_transparent_mathfn): Likewise.
20119         (fold_fixed_mathfn): Likewise.
20120         (fold_builtin_cabs): Likewise.
20121         (fold_builtin_sqrt): Likewise.
20122         (fold_builtin_cbrt): Likewise.
20123         (fold_builtin_cos): Likewise.
20124         (fold_builtin_cosh): Likewise.
20125         (fold_builtin_tan): Likewise.
20126         (fold_builtin_sincos): Likewise.
20127         (fold_builtin_cexp): Likewise.
20128         (fold_builtin_trunc): Likewise.
20129         (fold_builtin_floor): Likewise.
20130         (fold_builtin_ceil): Likewise.
20131         (fold_builtin_round): Likewise.
20132         (fold_builtin_int_roundingfn): Likewise.
20133         (fold_builtin_bitop): Likewise.
20134         (fold_builtin_bswap): Likewise.
20135         (fold_builtin_logarithm): Likewise.
20136         (fold_builtin_hypot): Likewise.
20137         (fold_builtin_pow): Likewise.
20138         (fold_builtin_powi): Likewise.
20139         (fold_builtin_exponent): Likewise.
20140         (fold_builtin_memset): Likewise.
20141         (fold_builtin_bzero): Likewise.
20142         (fold_builtin_memory_op): Likewise.
20143         (fold_builtin_bcopy): Deleted; call site changed to invoke
20144         fold_builtin_memory_op directly.
20145         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
20146         (fold_builtin_strncpy): Likewise.
20147         (fold_builtin_memcmp): Likewise.
20148         (fold_builtin_strcmp): Likewise.
20149         (fold_builtin_strncmp): Likewise.
20150         (fold_builtin_signbit): Likewise.
20151         (fold_builtin_copysign): Likewise.
20152         (fold_builtin_isascii): Likewise.
20153         (fold_builtin_toascii): Likewise.
20154         (fold_builtin_isdigit): Likewise.
20155         (fold_builtin_fabs): Likewise.
20156         (fold_builtin_abs): Likewise.
20157         (fold_builtin_fmin_fmax): Likewise.
20158         (fold_builtin_carg): Likewise.
20159         (fold_builtin_classify): Likewise.
20160         (fold_builtin_unordered_cmp): Likewise.
20162         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
20163         New functions split out from fold_builtin_1.
20164         (fold_builtin_n): New.
20165         (fold_builtin_varargs): New.
20166         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
20167         instead.
20168         (fold_call_expr): New.
20169         (build_function_call_expr): Rewrite to use new helper function.
20170         (fold_builtin_call_list): New.
20171         (build_call_expr): New.
20172         (fold_builtin_call_valist): New.
20173         (rewrite_call_expr): New.
20174         (validate_arg): New.
20175         (validate_arglist): Change parameter to be entire CALL_EXPR instead
20176         of an arglist.  Change return type to bool.  Use new CALL_EXPR
20177         accessors.
20179         (fold_builtin_strstr):  Pass call arguments individually instead
20180         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
20181         accessors and constructors.  Return NULL_TREE instead of 0.
20182         (fold_builtin_strchr): Likewise.
20183         (fold_builtin_strrchr): Likewise.
20184         (fold_builtin_strpbrk): Likewise.
20185         (fold_builtin_strcat): Likewise.
20186         (fold_builtin_strncat): Likewise.
20187         (fold_builtin_strspn): Likewise.
20188         (fold_builtin_strcspn): Likewise.
20189         (fold_builtin_fputs): Likewise.
20190         (fold_builtin_next_arg): Likewise.
20191         (fold_builtin_sprintf): Likewise.
20193         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
20194         NULL_RTX instead of 0.
20195         (expand_builtin_memory_chk): Likewise.
20196         (maybe_emit_chk_warning): Likewise.
20197         (maybe_emit_sprintf_chk_warning): Likewise.
20199         (fold_builtin_object_size): Pass call arguments individually instead
20200         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
20201         accessors and constructors.  Return NULL_TREE instead of 0.
20202         (fold_builtin_memory_chk): Likewise.
20203         (fold_builtin_stxcpy_chk): Likewise.
20204         (fold_builtin_strncpy_chk): Likewise.
20205         (fold_builtin_strcat_chk): Likewise.
20206         (fold_builtin_strcat_chk): Likewise.
20207         (fold_builtin_strncat_chk): Likewise.
20208         (fold_builtin_sprintf_chk): Likewise.
20209         (fold_builtin_snprintf_chk): Likewise.
20210         (fold_builtin_printf): Likewise.
20211         (fold_builtin_vprintf): Likewise.
20213         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
20214         constructors.
20215         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
20216         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20217         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
20218         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
20219         (fold_unary): Likewise.
20220         (fold_binary): Likewise.
20221         (fold_ternary): Remove CALL_EXPR case, since they are no longer
20222         ternary expressions.
20223         (fold): Add logic for tcc_vl_exp.
20224         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
20225         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20226         (fold_build3_stat): Add assertion to flag broken interface for
20227         constructing CALL_EXPRs.
20228         (fold_build_call_list): New.
20229         (fold_build_call_list_initializer): New.
20230         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
20231         constructors.
20232         (fold_strip_sign_ops): Likewise.
20234 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20235             Brooks Moses  <brooks.moses@codesourcery.com>
20236             Lee Millward  <lee.millward@codesourcery.com>
20238         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
20239         accessors and dump arguments explicitly.
20241         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
20242         TREE_CODE_LENGTH.
20243         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
20244         explicitly.
20245         (print_call_name): Use new CALL_EXPR accessors.
20247         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
20248         CALL_EXPR arguments explicitly instead of as a list.  Use
20249         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20251         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
20252         (vrp_visit_stmt): Likewise.
20254         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
20255         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
20256         TREE_CODE_LENGTH.
20257         (force_move_till_expr): Likewise.
20259         * targhooks.c (default_external_stack_protect_fail): Use
20260         build_call_expr instead of build_function_call_expr.
20261         (default_hidden_stack_protect_fail): Likewise.
20263         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
20264         build the call.
20266         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
20267         and walk arguments explicitly.
20269         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
20270         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20271         (expand_simple_operations): Likewise.
20272         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
20274         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
20275         of TREE_CODE_LENGTH.
20276         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
20278         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
20279         instead of TREE_CODE_LENGTH.
20281         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
20282         (tree_ic_transform): Likewise.
20283         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
20284         parameter instead of arglist.  Fix callers.
20285         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
20286         (tree_stringops_transform): Likewise.
20287         (tree_indirect_call_to_profile): Likewise.
20288         (tree_stringops_values_to_profile): Likewise.
20290         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
20291         (eliminate_tail_call): Likewise.
20293         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
20295         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
20296         Use TREE_OPERAND_LENGTH and generalize to handle any number of
20297         operands.
20298         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
20300         * omp-low.c (build_omp_barrier): Use build_call_expr.
20301         (lower_rec_input_clauses): Likewise.
20302         (lower_reduction_clauses): Likewise.
20303         (expand_parallel_call): Likewise.
20304         (maybe_catch_exception): Likewise.
20305         (expand_omp_for_generic): Likewise.
20306         (expand_omp_for_static_nochunk): Likewise.
20307         (expand_omp_sections): Likewise.
20308         (lower_omp_single_simple): Likewise.
20309         (lower_omp_single_copy): Likewise.
20310         (lower_omp_master): Likewise.
20311         (lower_omp_ordered): Likewise.
20312         (lower_omp_critical): Likewise.
20314         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
20315         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
20317         * tree-gimple.c (is_gimple_call_addr): Fix doc.
20318         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
20319         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
20321         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
20322         and generalize to handle any number of operands.
20323         (chrec_contains_undetermined): Likewise.
20324         (tree_contains_chrecs): Likewise.
20325         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
20327         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
20329         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
20330         fold_call_expr instead of fold_builtin.
20331         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
20332         match declarations there.
20333         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
20334         updates.
20336         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
20337         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20339         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
20340         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
20342         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
20343         accessors.
20345         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
20346         (execute_cse_sincos): Use new CALL_EXPR accessors.
20348         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
20350         * gimple-low.c (lower_function_body): Use build_call_expr.
20351         (lower_builtin_setjmp): Likewise.
20353         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
20354         (set_storage_via_libcall): Likewise.
20355         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
20356         instead of TREE_CODE_LENGTH.
20357         (expand_expr_real_1): Use new CALL_EXPR accessors.
20359         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
20360         generalize to handle any number of operands.
20361         (TB_parent_eq): Likewise.
20363         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
20364         (strip_builtin_expect): Likewise.
20366         * function.c (gimplify_parameters): Use build_call_expr.
20368         * tree-vectorizer.c (vect_is_simple_reduction): Use
20369         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20371         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
20372         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
20374         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
20375         iterators.
20377         * gimplify.c (build_stack_save_restore): Use build_call_expr.
20378         (gimplify_decl_expr): Likewise.
20379         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
20380         Use new CALL_EXPR iterators.
20381         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
20382         (gimplify_modify_expr_to_memset): Likewise.
20383         (gimplify_variable_sized_compare): Likewise.
20384         (gimplify_omp_atomic_fetch_op): Likewise.
20385         (gimplify_omp_atomic_pipeline): Likewise.
20386         (gimplify_omp_atomic_mutex): Likewise.
20387         (gimplify_function_tree): Likewise.
20389         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
20390         (call_expr_flags): Likewise.
20391         (expand_call): Likewise.
20393         * except.c (expand_builtin_eh_return_data_regno): Pass entire
20394         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
20395         accessors.
20397         * coverage.c (create_coverage): Use build_call_expr.
20399         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
20400         (temp_call_expr_obstack): New.
20401         (pool_copy_list): Delete.
20402         (temp_copy_call_expr): New.
20403         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
20404         CALL_EXPR accessors.  Get rid of special goo for copying argument
20405         lists and use temp_copy_call_expr instead.
20406         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
20407         CALL_EXPR accessors.
20408         (create_expression_by_pieces): Likewise.  Use build_call_array
20409         to construct the result instead of fold_build3.
20410         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
20411         dealing with argument lists.
20412         (init_pre): Remove references to expression_node_pool and
20413         list_node_pool.  Init temp_call_expr_obstack instead.
20414         (fini_pre): Remove references to expression_node_pool and
20415         list_node_pool.
20417         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
20418         and walk arguments explicitly instead of as a list.
20420         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
20421         (mx_register_decls): Likewise.
20422         (mudflap_register_call): Likewise.
20423         (mudflap_finish_file): Likewise.
20425         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
20426         (ipa_callsite_compute_param): Likewise.
20428         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
20429         accessors and constructor.
20431         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
20432         accessors and constructor.
20433         (convert_tramp_reference): Likewise.
20434         (convert_call_expr): Likewise.
20435         (finalize_nesting_tree_1): Likewise.
20437         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
20438         accessors.
20440         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
20442         * tree-inline.c (initialize_inlined_parameters): Pass entire
20443         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
20444         accessors.
20445         (estimate_num_insns_1): Use new CALL_EXPR accessors.
20446         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
20448         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
20449         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20450         (vectorizable_reduction): Likewise.
20451         (vectorizable_call): Use new CALL_EXPR iterators.
20452         (vectorizable_conversion): Use build_call_expr.
20453         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
20454         (vect_gen_widened_results_half): Use build_call_expr.
20455         (vect_setup_realignment): Likewise.
20456         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
20458         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
20459         (pass_through_call): Likewise.
20460         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
20461         fold_builtin.
20463         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
20464         (tree_gen_pow2_profiler): Likewise.
20465         (tree_gen_one_value_profiler): Likewise.
20466         (tree_gen_ic_func_profiler): Likewise.
20467         (tree_gen_average_profiler): Likewise.
20468         (tree_gen_ior_profiler): Likewise.
20470         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
20471         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
20472         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20474         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
20475         of TREE_CODE_LENGTH.
20477         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
20478         of TREE_CODE_LENGTH.
20480         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
20481         constructor.
20482         (convert_to_integer): Likewise.
20484         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
20485         accessors.
20487 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20488             Brooks Moses  <brooks.moses@codesourcery.com>
20489             Lee Millward  <lee.millward@codesourcery.com>
20491         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
20492         accessors.
20493         * config/frv/frv.c (frv_expand_builtin): Likewise.
20494         * config/s390/s390.c (s390_expand_builtin): Likewise.
20496         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
20497         (sparc_expand_builtin): Use new CALL_EXPR accessors.
20499         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
20500         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
20501         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
20502         (ix86_expand_store_builtin): Likewise.
20503         (ix86_expand_unop_builtin): Likewise.
20504         (ix86_expand_unop1_builtin): Likewise.
20505         (ix86_expand_sse_compare): Likewise.
20506         (ix86_expand_sse_comi): Likewise.
20507         (ix86_expand_vec_init_builtin): Likewise.
20508         (ix86_expand_vec_ext_builtin): Likewise.
20509         (ix86_expand_vec_set_builtin): Likewise.
20510         (ix86_expand_builtin): Use new CALL_EXPR accessors.
20512         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
20513         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
20515         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
20516         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
20517         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
20519         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
20520         build_call_expr.
20521         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
20522         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
20523         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20524         (altivec_expand_abs_builtin): Likewise.
20525         (rs6000_expand_binop_builtin): Likewise.
20526         (altivec_expand_predicate_builtin): Likewise.
20527         (altivec_expand_lv_builtin): Likewise.
20528         (spe_expand_stv_builtin): Likewise.
20529         (altivec_expand_stv_builtin): Likewise.
20530         (rs6000_expand_ternop_builtin): Likewise.
20531         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
20532         (altivec_expand_st_builtin): Likewise.
20533         (altivec_expand_dst_builtin): Likewise.
20534         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
20535         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20536         (altivec_expand_vec_set_builtin): Likewise.
20537         (altivec_expand_vec_ext_builtin): Likewise.
20538         (altivec_expand_builtin): Use new CALL_EXPR accessors.
20539         (spe_expand_builtin): Likewise.
20540         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
20541         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20542         (spe_expand_evsel_builtin): Likewise.
20543         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
20544         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
20546         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
20547         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
20548         (arm_expand_unop_builtin): Likewise.
20549         (arm_expand_builtin): Use new CALL_EXPR accessors.
20551         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
20552         accessors.
20554         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
20555         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
20556         Fix callers.
20557         (bfin_expand_unop_builtin): Likewise.
20558         (bfin_expand_builtin): Use new CALL_EXPR accessors.
20560 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20561             Brooks Moses  <brooks.moses@codesourcery.com>
20562             Lee Millward  <lee.millward@codesourcery.com>
20564         * c-semantics.c (build_stmt): Add internal diagnostic check.
20566         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
20567         accessors.  Print arguments explicitly instead of as a list.
20569         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
20571         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
20572         (c_finish_omp_flish): Likewise.
20574         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
20575         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
20576         instead of TREE_CODE_LENGTH.
20577         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
20578         (c_warn_unused_result): Likewise.
20580 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20582         PR c/26494
20583         * doc/invoke.texi (Warning Options): Remove
20584         -Werror-implicit-function-declaration.
20585         (Wimplicit-function-declaration): Update description.
20586         * opts.c (common_handle_option): Move handling of -Werror=* to...
20587         (enable_warning_as_error): ...here.
20588         * opts.h (enable_warning_as_error): Declare.
20589         * c-decl.c (implicit_decl_warning): Unless
20590         -Wno-implicit-function-declaration is given, emit a pedwarn if
20591         -std=c99 or emit a warning if -Wimplicit-function-declaration.
20592         * c.opt (Wimplicit-function-declaration): Replace
20593         mesg_implicit_function_declaration with
20594         warn_implicit_function_declaration.
20595         * c-opts.c (c_common_handle_option):
20596         -Werror-implicit-function-declaration is exactly equal as
20597         -Werror=implicit-function-declaration.
20598         (set_Wimplicit): Replace mesg_implicit_function_declaration with
20599         warn_implicit_function_declaration.
20600         (c_common_post_options): -Wimplict-function-declaration is enabled
20601         by default by -std=c99, otherwise is disabled by default.
20602         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
20604 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
20606         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
20607         DECL on the rhs to a DECL on the lhs for debug info purposes if the
20608         former is ignored but not the latter.
20610 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
20612         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
20613         is made and the reference doesn't use the alias set of its type,
20614         do not create the temporary using that type.
20616 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
20618         * jump.c: Remove prototypes for delete_computation and
20619         delete_prior_computation.
20621 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
20623         * jump.c (get_label_after): Delete.
20624         (get_label_before, delete_computation, delete_jump,
20625         delete_prior_computation, follow_jumps): Move...
20626         * reorg.c (delete_computation, delete_prior_computation): ... here...
20627         (get_label_before, delete_jump): ... making these static ...
20628         (follow_jumps): ... and simplifying this since it only runs after
20629         reload.
20630         * rtl.h (get_label_after, get_label_before, delete_jump,
20631         follow_jumps): Delete prototypes.
20633 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
20635         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
20637 2007-02-15  Nick Clifton  <nickc@redhat.com>
20639         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
20640         order to prevent it from being munged by the target.
20642 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
20644         * config/i386/i386.md: Remove misleading comment.
20646 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20648         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
20649         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
20650         invalid patterns.
20652 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20654         * tree-sra.c (instantiate_missing_elements): Canonicalize
20655         bit-field types.
20656         (sra_build_assignment): New.
20657         (generate_copy_inout, generate_element_copy,
20658         generate_element_zero, generate_one_element_init): Use it.
20660 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20662         * tree-sra.c (instantiate_missing_elements): Canonicalize
20663         bit-field types.
20664         (sra_build_assignment): New.
20665         (generate_copy_inout, generate_element_copy,
20666         generate_element_zero, generate_one_element_init): Use it.
20668 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20670         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
20671         limbo die nodes.
20673 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
20675         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
20676         types as aggregates not scalars.
20677         * function.c (assign_stack_temp_for_type): Likewise.
20679 2007-02-14  Roger Sayle  <roger@eyesopen.com>
20680             Zdenek Dvorak  <dvorakz@suse.cz>
20682         * tree-dump.c (dump_switch_p_1): Require exact match of the option
20683         name.
20685 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
20687         * passes.c (next_pass_1): Clear the next field of the copied
20688         pass structure.
20690 2007-02-14  Richard Henderson  <rth@redhat.com>
20692         * tree-sra.c (early_sra): New.
20693         (decl_can_be_decomposed_p): Deny va_list if early_sra.
20694         (tree_sra_early, pass_sra_early): New.
20695         * tree-pass.h (pass_sra_early): Declare.
20696         * passes.c (init_optimization_passes): Use it.
20698 2007-02-14  Richard Guenther  <rguenther@suse.de>
20700         * flags.h (issue_strict_overflow_warning): Convert to a macro.
20702 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
20704          PR tree-optimization/30771
20705         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
20706         also phi nodes.
20707         (vect_analyze_operations): Induction phis can now be marked as
20708         used_in_loop.
20709         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
20710         Update documentation accordingly.
20712 2007-02-14  Nick Clifton  <nickc@redhat.com>
20714         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
20715         most 3 arguments are supported.
20716         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
20718 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
20720         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
20721         Ensure dst->current is valid.
20723 2007-02-13  Paul Brook  <paul@codesourcery.com>
20725         * config.gcc: Add arm*-*-uclinux-*eabi.
20726         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
20727         (SUBTARGET_EXTRA_LINK_SPEC): Define.
20728         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
20729         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
20730         (LINK_SPEC): Define.
20731         (LIB_SPEC): Define.
20732         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
20733         register.
20734         * config/arm/uclinux-eabi.h: New file.
20735         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
20736         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
20737         based targets.
20739 2007-02-13  Ian Lance Taylor  <iant@google.com>
20741         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
20742         * flags.h (warn_strict_overflow): Declare.
20743         (enum warn_strict_overflow_code): Define.
20744         (issue_strict_overflow_warning): New static inline function.
20745         * opts.c (warn_strict_overflow): New variable.
20746         (common_handle_option): Handle OPT_Wstrict_overflow and
20747         OPT_Wstrict_overflow_.
20748         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
20749         OPT_Wall.
20750         * fold-const.c: Include intl.h.
20751         (fold_deferring_overflow_warnings): New static variable.
20752         (fold_deferred_overflow_warning): New static variable.
20753         (fold_deferred_overflow_code): New static variable.
20754         (fold_defer_overflow_warnings): New function.
20755         (fold_undefer_overflow_warnings): New function.
20756         (fold_undefer_and_ignore_overflow_warnings): New function.
20757         (fold_deferring_overflow_warnings_p): New function.
20758         (fold_overflow_warning): New static function.
20759         (make_range): Add strict_overflow_p parameter.  Change all
20760         callers.
20761         (extract_muldiv, extract_muldiv_1): Likewise.
20762         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
20763         tree_expr_nonnegative_p.
20764         (fold_negate_expr): Call fold_overflow_warning.
20765         (fold_range_test): Likewise.
20766         (fold_comparison): Likewise.
20767         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
20768         instead of tree_expr_nonnegative_p.
20769         (tree_expr_nonnegative_warnv_p): Rename from
20770         tree_expr_nonnegative_p, add strict_overflow_p parameter.
20771         (tree_expr_nonnegative_p): New function.
20772         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
20773         strict_overflow_p parameter.
20774         (tree_expr_nonzero_p): New function.
20775         * passes.c (verify_interpass_invariants): New static function.
20776         (execute_one_pass): Call it.
20777         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
20778         warnings.
20779         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
20780         (estimate_numbers_of_iterations): Likewise.
20781         (scev_probably_wraps_p): Likewise.
20782         * tree-ssa-ccp.c: Include "toplev.h".
20783         (evaluate_stmt): Defer fold overflow warnings until we know we are
20784         going to optimize.
20785         (struct fold_stmt_r_data): Add stmt field.
20786         (fold_stmt_r): Defer fold overflow warnings until we know we
20787         optimized.
20788         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
20789         (fold_stmt_inplace): Likewise.
20790         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
20791         (cleanup_control_expr_graph): Defer fold overflow warnings until
20792         we know we are going to optimize.
20793         * tree-cfg.c (fold_cond_expr_cond): Likewise.
20794         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
20795         Likewise.
20796         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
20797         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
20798         * tree-ssa-loop-manip.c (create_iv): Likewise.
20799         * c-typeck.c (build_conditional_expr): Likewise.
20800         (build_binary_op): Likewise.
20801         * tree-vrp.c (vrp_expr_computes_nonzero): Call
20802         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
20803         (extract_range_from_unary_expr): Likewise.
20804         * simplify-rtx.c (simplify_const_relational_operation): Warn when
20805         assuming that signed overflow does not occur.
20806         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
20807         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
20808         (fold_defer_overflow_warnings): Declare.
20809         (fold_undefer_overflow_warnings): Declare.
20810         (fold_undefer_and_ignore_overflow_warnings): Declare.
20811         (fold_deferring_overflow_warnings_p): Declare.
20812         (tree_expr_nonzero_warnv_p): Declare.
20813         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
20814         of warning options.
20815         (Warning Options): Document -Wstrict-overflow.
20816         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
20817         (tree-ssa-ccp.o): Likewise.
20818         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
20819         (fold-const.o): Depend on intl.h.
20821 2007-02-13  Ian Lance Taylor  <iant@google.com>
20823         PR middle-end/30751
20824         * lower-subreg.c (resolve_simple_move): Decompose subregs in
20825         addresses.
20827 2007-02-13  Stuart Hastings  <stuart@apple.com>
20829         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
20831 2007-02-13  Richard Henderson  <rth@redhat.com>
20833         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
20834         handled_component_p before looking for the indirect_ref.
20836 2007-02-13  Richard Henderson  <rth@redhat.com>
20838         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
20839         remove flags clobber.
20840         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
20841         (bswaphi_lowpart): New.
20842         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
20843         remove TARGET_BSWAP test.  Delete expander of the same name.
20845         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
20846         (expand_unop): Use them.
20848 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
20850         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
20851         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
20852         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
20853         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
20854         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
20855         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
20856         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
20857         assembler dialect choice from asm templates.
20859 2007-02-12  Richard Henderson  <rth@redhat.com>
20861         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
20862         (fixuns_trunc<SSEMODEF>si2): Use it.
20863         * config/i386/sse.md (vec_setv4sf_0): Export.
20864         * config/i386/i386.c (ix86_build_const_vector): Export.
20865         (ix86_split_convert_uns_si_sse): Rename from
20866         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
20867         * config/i386/i386-protos.h: Update.
20869 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20871         PR c/29521
20872         * c-typeck.c (c_finish_return): Improve warning message.
20874 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20876         * alias.c (find_symbolic_term): Delete unused function.
20878 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
20880         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
20881         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
20882         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
20884 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20886         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
20887         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
20888         the function, temporarily point the debug interface to the null one.
20890 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20892         * dwarf2out.c (round_up_to_align): New static function.
20893         (field_byte_offset): Use it to round the offset.
20895 2007-02-12  Richard Henderson  <rth@redhat.com>
20897         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
20898         (inswl_const): Export.
20900 2007-02-12  Richard Henderson  <rth@redhat.com>
20902         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
20903         result mode of the libcall, convert back to outmode.
20905 2007-02-12  Roger Sayle  <roger@eyesopen.com>
20907         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
20908         (bswapdi2): New define_expand to implement 32-bit implementation.
20910 2007-02-12  Nick Clifton  <nickc@redhat.com>
20912         * doc/invoke.texi (Overall Options): Document --help=.
20913         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
20914         (cc1_options): Pass --help= on to cc1.
20915         (display_help): Add description of --help=.
20916         (process_command): Add code to handle --help=.  Allow translated
20917         --help and --target-help switches to be passed on to compiler
20918         sub-process.
20919         (main): Remove unused if statement.
20920         * opts.c (columns): Remove.
20921         (LEFT_COLUMN): Define.
20922         (wrap_help): Add columns argument.
20923         (print_filtered_help): Change parameters to be an include bitmask,
20924         an exclude bitmask, an any bitmask and the column width.  Move the
20925         code to display the params list here.  Add code to display the
20926         status of options rather than their descriptions if the quiet flag
20927         is not active.
20928         (print_specific_help): Change parameters to be an include bitmask,
20929         an exclude bitmask and an any bitmask.  Move code to look up the
20930         column width here.  Decide upon the title for an options listing.
20931         (common_handle_options): Add code to handle --help=.  Adapt code
20932         for --help and --target-help to use the revised form of the
20933         print_specific_help function.
20934         (print_help): Delete.
20935         (print_param_help): Delete.
20936         (print_switch): Delete.
20937         * opts.h (cl_lang_count): Add prototype.
20938         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
20939         CL_MAX_OPTION_CLASS): New defines.
20940         * optc-gen.awk: Add construction of cl_lang_count.
20941         * c.opt: Add Warning attribute to warning options and Optimization
20942         attribute to optimization options.
20943         * common.opt: Likewise.
20944         Add --help=.
20945         Add -fhelp and -ftarget-help as aliases for the transformed --help
20946         and --target-help options.
20947         * opt-functions.awk: Add code to handle Warning and Optimization
20948         attributes.
20950 2007-02-12  Richard Henderson  <rth@redhat.com>
20952         * config/alpha/constraints.md: New file.
20953         * config/alpha/alpha.c: Include tm-constrs.h.
20954         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
20955         alpha_extra_constraint): Remove.
20956         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
20957         * config/alpha/alpha-protos.h: Update.
20958         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
20959         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
20960         (EXTRA_CONSTRAINT): Remove.
20961         * config/alpha/alpha.md: Include constraints.md.
20962         (adddi splitter): Use satisfies_constraint_*.
20963         * config/alpha/predicates.md (add_operand): Likewise.
20964         (sext_add_operand, addition_operation): Likewise.
20966 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
20968         PR tree-optimization/29145
20969         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
20970         in our handling of restrict qualified pointers.
20972 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20974         PR middle-end/7651
20975         * doc/invoke.texi (Wunused-value): Update description.
20976         (Wextra): Delete item.
20977         * opts.c (set_Wextra): Don't use the value of Wextra to set the
20978         value of Wunused-value.
20979         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
20980         (c_finish_stmt_expr): Don't check extra_warnings.
20981         (emit_side_effect_warnings): The caller is responsible to check
20982         warn_unused_value.
20984 2007-02-11  Roger Sayle  <roger@eyesopen.com>
20985             Matt Thomas  <matt@3am-software.com>
20987         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
20989 2007-02-11  Roger Sayle  <roger@eyesopen.com>
20991         * simplify-rtx.c (simplify_relational_operation_1): Optimize
20992         comparisons of POPCOUNT against zero.
20993         (simplify_const_relational_operation): Likewise.
20995 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20997         * doc/invoke.texi (Wextra): Delete outdated paragraph.
20999 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21001         * dwarf2out.c (root_type): Delete unused function.
21003 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21005         * genattrtab.c (contained_in_p): Delete unused function.
21006         (write_expr_attr_cache): Likewise.
21008 2007-02-11  Jan Hubicka  <jh@suse.cz>
21010         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
21011         previous patch.
21013 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
21015         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
21016         to add the REG_EQ* note.
21017         * see.c (see_merge_one_use_extension): Likewise.
21018         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
21019         turn REG_EQUAL notes into REG_EQUIV notes if the target
21020         register may have more than one set.
21021         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
21022         * gcse.c (try_replace_reg): Likewise.
21023         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
21024         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
21025         more than one REG_EQUIV note.
21026         * reload1.c (gen_reload): Use set_unique_reg_note.
21028 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
21030         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
21031         (ix86_builtin_conversion): New function.
21033 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
21035         PR target/29487
21036         * tree.h (DECL_REPLACEABLE_P): New macro.
21037         * except.c (set_nothrow_function_flags): Likewise.
21039 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
21040             Ira Rosen  <irar@il.ibm.com>
21041             Dorit Nuzman  <dorit@il.ibm.com>
21043         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
21044         * targhooks.c (default_builtin_vectorized_conversion): New.
21045         * targhooks.h (default_builtin_vectorized_function): New declaration.
21046         * target.h (struct vectorize): Add builtin_conversion field.
21047         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
21048         stmt_vec_info_type value.
21049         (vectorizable_conversion): New declaration.
21050         * tree-vect-analyze.c (vect_analyze_operations): Add
21051         vectorizable_conversion call.
21052         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
21053         * tree-vect-transform.c (vectorizable_conversion): New function.
21054         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
21055         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
21056         mode.
21057         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
21058         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
21059         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
21060         or ALTIVEC_BUILTIN_VCFSX.
21062 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21064         PR target/30634
21065         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
21066         CONST_DOUBLE and operand 0 is a hard register.
21067         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
21068         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
21069         is a hard floating-point register.
21071 2007-02-10  Richard Henderson  <rth@redhat.com>
21072             Jakub Jelinek  <jakub@redhat.com>
21073             Alexandre Oliva  <aoliva@redhat.com>
21075         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
21076         * builtin-types.def (BT_WORD): Make unsigned.
21077         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
21078         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
21079         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
21080         * c-decl.c (grokdeclarator): Don't error if !have_tls.
21081         * c-parser.c (c_parser_omp_threadprivate): Likewise.
21082         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
21083         emulated tls.
21084         * expr.c (emutls_var_address): New.
21085         (expand_expr_real_1): Expand emulated tls.
21086         (expand_expr_addr_expr_1): Likewise.
21087         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
21088         * output.h (emutls_finish): Declare.
21089         * toplev.c (compile_file): Call it.
21090         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
21091         address before wrapping in CONST.
21092         * varasm.c (emutls_htab, emutls_object_type): New.
21093         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
21094         (get_emutls_object_name, get_emutls_object_type): New.
21095         (get_emutls_init_templ_addr, emutls_decl): New.
21096         (emutls_common_1, emutls_finish): New.
21097         (assemble_variable): When emulating tls, swap decls; generate
21098         constructor for the emutls objects.
21099         (do_assemble_alias): When emulating tls, swap decl and target name.
21100         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
21101         for emulated tls.
21102         * varpool.c (decide_is_variable_needed): Look at force_output.
21103         Recurse for emulated tls.
21104         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
21105         with decide_is_variable_needed.
21106         * emutls.c: New file.
21107         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
21108         tls_object for real tls.
21110 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
21112         PR rtl-optimization/29599
21113         * reload1.c (eliminate_regs_in_insn): Take the destination
21114         mode into account when computing the offset.
21116 2007-02-09  Stuart Hastings  <stuart@apple.com>
21117             Richard Henderson  <rth@redhat.com>
21119         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
21120         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
21121         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
21122         fixuns_truncdfhi2): New.
21123         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
21124         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
21125         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
21126         (floatunssidf2): Allow nonimmediate source.
21127         * config/i386/sse.md (movdi_to_sse): New.
21128         (vec_concatv2di): Drop '*'.
21129         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
21130         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
21131         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
21132         New.
21133         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
21134         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
21135         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
21136         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
21137         (ix86_build_signbit_mask): Fix decl of v, refactor to call
21138         ix86_build_const_vector.
21139         (x86_emit_floatuns): Rewrite.
21141 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21143         * genautomata.c (longest_path_length): Delete unused function.
21144         (struct state): Delete unused longest_path_length.
21145         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
21146         (get_free_state): Delete unused.
21148 2007-02-09  Jan Hubicka  <jh@suse.cz>
21150         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
21151         * doc/invoke.texi (inline-unit-growth): Update default value.
21153         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
21154         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
21155         (rebuild_cgraph_edges): Likewise.
21156         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
21157         (dump_cgraph_node): Dump frequencies.
21158         (cgraph_clone_edge): Add frequency scales.
21159         (cgraph_clone_node): Add freuqnecy.
21160         * cgraph.h (cgraph_edge): Add freuqnecy argument.
21161         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
21162         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
21163         * tree-pass.h (TODO_rebuild_frequencies): New constant.
21164         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
21165         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
21166         (save_inline_function_body): Likewise.
21167         * ipa-inline.c: inluce rtl.h
21168         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
21169         (cgraph_edge_badness): Use frequencies.
21170         (cgraph_decide_recursive_inlining): Update clonning.
21171         (cgraph_decide_inlining_of_small_function): Dump frequency.
21172         * predict.c (estimate_bb_frequencies): Export.
21173         * predict.h (estimate_bb_frequencies): Declare.
21174         * tree-inline.c (copy_bb): Watch overflows.
21175         (expand_call_inline): Update call of cgraph_create_edge.
21176         (optimize_inline_calls): Use TODO flags to update frequnecies.
21177         * passes.h: Include predict.h
21178         (init_optimization_passes): Move profile ahead.
21179         (execute_function_todo): Handle TODO_rebuild_frequencies.
21181 2007-02-09  Roger Sayle  <roger@eyesopen.com>
21183         * config/alpha/alpha.c (emit_insxl): Force the first operand of
21184         the insbl or inswl pattern into a register.
21186 2007-02-09  Roger Sayle  <roger@eyesopen.com>
21188         * config/ia64/ia64.md (bswapdi2): New define_insn.
21190 2007-02-09  Richard Henderson  <rth@redhat.com>
21192         * config/i386/constraints.md (Ym): New constraint.
21193         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
21194         (movdi_1_rex64): Split sse and xmm general register moves from
21195         memory move alternatives.  Use conditional register constraints.
21196         (movsf_1, movdf_integer): Likewise.
21197         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
21198         (movdf_integer_rex64): New.
21199         (pushsf_rex64): Fix output constraints.
21200         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
21201         (sse2_stored): Likewise.
21202         (sse2_storeq_rex64): New.
21203         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
21204         amd and not generic.
21205         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
21206         for optimize_size.  Remove SF/DFmode hack.
21208 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
21210         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
21211         (bit_SSE4a): New.
21213 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
21214             Richard Sandiford  <richard@codesourcery.com>
21216         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
21217         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
21218         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
21219         m68k/t-mlib to tmake_file.
21220         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
21221         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
21222         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
21223         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
21224         variable is not empty, add t-$m68k_arch_family to tmake_file.
21225         Add t-mlibs to tmake_file.
21226         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
21227         * config/m68k/t-cf: New file.
21228         * config/m68k/t-m68k: Likewise.
21229         * config/m68k/t-mlibs: Likewise.
21230         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
21231         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
21232         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
21233         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
21234         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
21235         Delete.
21236         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
21237         (INSTALL_LIBGCC): Delete.
21238         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
21239         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
21240         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
21241         (M68K_MLIB_CPU): Define.
21242         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
21243         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
21244         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
21246 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
21247             Richard Guenther  <rguenther@suse.de>
21249         PR middle-end/23361
21250         * fold-const.c (fold_comparison): Handle obfuscated comparisons
21251         against INT_MIN/INT_MAX.
21252         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
21253         file if a loop is removed.
21255 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
21257         * calls.c (store_one_arg): Pass correct alignment to
21258         emit_push_insn for non-BLKmode values.
21259         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
21260         unaligned stack slot via a suitably aligned slot.
21262 2007-02-08  DJ Delorie  <dj@redhat.com>
21264         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
21265         warnings.
21266         (legal_subregs): Use unsigned char, make const.
21267         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
21269 2007-02-08  Paul Brook  <paul@codesourcery.com>
21271         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
21272         special interworking needed.
21274 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
21276         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
21277         conditional to __SSE2__.
21278         (Entries below should have been added to first ChangeLog
21279         entry for amdfam10 dated 2007-02-05)
21280         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
21281         defined.
21282         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
21283         defined.
21284         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
21285         defined.
21287 2007-02-08  DJ Delorie  <dj@redhat.com>
21289         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
21290         * config/m32c/m32c.c (legal_subregs): New.
21291         (m32c_illegal_subreg_p): New.
21292         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
21293         unsupported subregs of hard regs.
21295 2007-02-08  Jan Hubicka  <jh@suse.cz>
21297         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
21298         the same one; always update histograms.
21300 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
21302         * passes.c (init_optimization_passes): Tidy comment.
21304 2007-02-08  Roger Sayle  <roger@eyesopen.com>
21306         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
21307         strip zero_extend, bswap and rotates from POCOUNT's argument.
21308         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
21309         zero_extend and rotates from PARITY's argument.
21310         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
21311         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
21312         of an integer constant at compile-time.
21314 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
21316         PR 30562
21317         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
21318         Update all users.
21319         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
21320         users.
21321         (init_alias_info):
21322         * tree-ssa-live.c (remove_unused_locals): Do not remove
21323         TREE_ADDRESSABLE variables.
21324         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
21325         * tree-ssa-operands.c (add_virtual_operand): Remove argument
21326         FOR_CLOBBER.  Update all users.
21327         If VAR has an associated alias set, add a virtual operand for
21328         it if no alias is found to conflict with the memory reference.
21330 2007-02-07  Jan Hubicka  <jh@suse.cz>
21331             Robert Kidd <rkidd@crhc.uiuc.edu>
21333         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
21335 2007-02-07  Ian Lance Taylor  <iant@google.com>
21337         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
21339 2007-02-07  Roger Sayle  <roger@eyesopen.com>
21341         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
21342         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
21343         tablejumpdi, movsi_to_cr_one): Remove constraints from
21344         define_expand's match_operands.
21346 2007-02-07  Roger Sayle  <roger@eyesopen.com>
21348         * global.c (compute_regsets): Move declatation of "i" inside of
21349         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
21351 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
21353         PR c++/30703
21354         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
21355         of INDIRECT_REF <RESULT_DECL>.
21357         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
21359 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
21360             Kaz Kojima  <kkojima@gcc.gnu.org>
21362         PR target/29746
21363         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
21364         properly.
21365         (sh_initialize_trampoline): Add parentheses to avoid a warning.
21367 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
21369         * doc/loop.texi: Document possibility not to perform disambiguation
21370         of loops with multiple latches.
21371         * cfgloopmanip.c (alp_enum_p): Removed.
21372         (add_loop): Handle subloops.  Use get_loop_body_with_size.
21373         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
21374         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
21375         the new forwarder block.
21376         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
21377         Handle the case latch is NULL.
21378         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
21379         modifications when marking loop exits.
21380         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
21381         be modified.
21382         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
21383         disambiguate_loops_with_multiple_latches.
21384         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
21385         before fix_loop_structure.
21386         * cfgloop.c: Include pointer-set.h and output.h.
21387         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
21388         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
21389         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
21390         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
21391         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
21392         disambiguate_multiple_latches, get_loop_body_with_size,
21393         disambiguate_loops_with_multiple_latches): New functions.
21394         (flow_loop_dump): Dump multiple latch edges.
21395         (flow_loop_nodes_find): Handle loops with multiple latches.
21396         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
21397         (glb_enum_p): Modified.
21398         (get_loop_body): Use get_loop_body_with_size.
21399         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
21400         (AVOID_CFG_MODIFICATIONS): New constant.
21401         (disambiguate_loops_with_multiple_latches, add_loop,
21402         get_loop_body_with_size): Declare.
21403         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
21405 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
21407         PR inline-asm/28686
21408         * global.c (compute_regsets): New function.
21409         (global_alloc): Refactored ELIMINABLE_REGSET
21410         and NO_GLOBAL_ALLOC_REGS computation out.
21411         (rest_of_handle_global_alloc): Call compute_regsets()
21412         for non-optimizing case.
21414 2007-02-06  Richard Henderson  <rth@redhat.com>
21416         * config/i386/constraints.md (Y2): Rename from Y.
21417         (Yi): New constraint.
21418         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
21419         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
21420         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
21421         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
21422         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
21423         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
21424         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
21425         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
21426         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
21427         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
21428         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
21429         vec_extractv2si_1): Change Y constraints to Y2.
21430         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
21431         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
21432         Change Y constraints to Y2.
21433         (sse2_loadld): Change Y constraints to x.
21435 2007-02-06  Roger Sayle  <roger@eyesopen.com>
21437         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
21438         (parity<mode>2): New define_expand using rs6000_emit_parity.
21439         * config/rs6000/rs6000.c (rs6000_emit_popcount,
21440         rs6000_emit_parity): New functions.
21441         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
21442         rs6000_emit_parity): Prototype here.
21444 2007-02-06  Ian Lance Taylor  <iant@google.com>
21446         * lower-subreg.c (simple_move_operand): Reject CONST.
21447         (resolve_clobber): Call validate_change rather than directly
21448         assigning to XEXP (pat, 0).
21450 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
21452         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
21453         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
21454         (tree-cfg.o): Remove hashtab.h dependency.
21456         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
21457         (struct ivopts_data): Change niters to pointer_map_t.
21458         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
21459         (niter_for_exit): Create pointer_map on demand.  Change for
21460         pointer_map API.
21461         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
21462         (free_loop_data): Destroy data->niters if created and reset field.
21463         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
21464         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
21466         * tree-ssa-reassoc.c: Include pointer-set.h.
21467         (bb_rank): Change to long *.
21468         (operand_rank): Change to pointer_map_t.
21469         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
21470         (insert_operand_rank): Accept long.
21471         (operand_entry_hash, operand_entry_eq): Remove.
21472         (get_rank): Return long.  Adjust for changes above.
21473         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
21474         and operand_rank.
21475         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
21477         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
21478         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
21479         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
21480         is not NULL.
21481         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
21482         directly since it cannot be NULL.
21483         (get_vi_for_tree): Rewrite for pointer_map API.
21484         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
21485         (init_alias_vars): Create vi_for_tree as pointer_map.
21486         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
21488         * tree-cfg.c: Don't include hashtab.h.
21489         (edge_to_cases): Declare as pointer_map.
21490         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
21491         Delete.
21492         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
21493         (start_recording_case_labels): Create edge_to_cases as pointer_map.
21494         (end_recoding_case_labels): Cleanup edge_to_cases manually before
21495         destroying it.
21496         (record_switch_edge): Delete.
21497         (get_cases_for_edge): Adjust for pointer_map API, inline
21498         record_switch_edge (rewritten for new API), remove goto.
21500 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
21502         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
21503         * tree-nested.c: Include pointer-set.h.
21504         (var_map_elt, var_map_eq, var_map_hash): Delete.
21505         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
21506         to pointer_map_t's.
21507         (nesting_info_bitmap_obstack): New.
21508         (lookup_field_for_decl): Adjust for pointer_map API.
21509         (lookup_tramp_for_decl): Adjust for pointer_map API.
21510         (get_nonlocal_debug_decl): Adjust for pointer_map API.
21511         (get_local_debug_decl): Adjust for pointer_map API.
21512         (convert_nl_goto_reference): Adjust for pointer_map API.
21513         (convert_nl_goto_receiver): Adjust for pointer_map API.
21514         (create_nesting_tree): Create outside GGC space.  Create bitmap on
21515         the new obstack.  Create field_map and var_map as pointer_maps.
21516         (free_nesting_tree): Adjust for changes to create_nesting_tree.
21517         (root): Delete.
21518         (lower_nested_functions): Move root here, no need to NULL it.
21519         Initialize and release the obstack.
21521 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
21523         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
21524         Remove prototypes and make them non-static.
21525         (struct tree_int_map): Remove.
21526         * tree.h (struct tree_int_map): Move here, turning TO into an
21527         unsigned int.
21528         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
21530         * tree.h (TREE_COMPLEXITY): Remove.
21531         (struct tree_exp): Remove complexity field.
21532         * tree.c (build1_stat): Don't set it.
21534 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
21535             Victor Kaplansky  <victork@il.ibm.com>
21537         * tree-vectorizer.c (vect_is_simple_use): Support induction.
21538         (vect_is_simple_reduction): Support reduction with induction as
21539         one of the operands.
21540         (vect_is_simple_iv_evolution): Fix formatting.
21541         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
21542         formatting.  Don't mark induction phis for vectorization.
21543         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
21544         * tree-vect-transform.c (get_initial_def_for_induction): New function.
21545         (vect_get_vec_def_for_operand): Support induction.
21546         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
21547         induction case.
21548         (vectorizable_reduction): Support reduction with induction as one of
21549         the operands.
21550         (vectorizable_type_demotion): Use def-type of stmt argument rather
21551         than dummy def-type.
21553         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
21554         flag_tree_scev_cprop.
21555         * common.opt (tree-scev-cprop): New flag.
21557         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
21558         call to vect_get_new_vect_var.
21560 2007-02-06  Ira Rosen  <irar@il.ibm.com>
21562         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
21563         vectype is not NULL.
21564         (vect_pattern_recog_1): Likewise.
21566 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21568         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
21569         (fold_negate_expr): Likewise.
21571 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
21573         PR debug/30189
21574         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
21575         even if cv-qualification is the same.
21577 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
21579         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
21580         __enable_execute_stack on completion.
21582 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21584         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
21585         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
21586         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
21587         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
21588         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
21589         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
21590         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
21591         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
21593 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21595         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
21596         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
21597         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
21598         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
21599         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
21600         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
21601         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
21602         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
21603         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
21604         umuldi3_highpart_rex64, umulsi3_highpart_insn,
21605         umulsi3_highpart_zext, smuldi3_highpart_rex64,
21606         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
21607         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
21608         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
21609         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
21610         sqrtextenddfxf2_i387): Added amdfam10_decode.
21612         * config/i386/athlon.md (athlon_idirect_amdfam10,
21613         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
21614         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
21615         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
21616         athlon_ivector_store_amdfam10): New define_insn_reservation.
21617         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
21618         amdfam10.
21620 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21622         * config/i386/athlon.md (athlon_call_amdfam10,
21623         athlon_pop_amdfam10, athlon_lea_amdfam10): New
21624         define_insn_reservation.
21625         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
21626         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
21627         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
21629 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21631         * config/i386/athlon.md (athlon_sseld_amdfam10,
21632         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
21633         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
21635 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21637         * config/i386/athlon.md (athlon_sseins_amdfam10): New
21638         define_insn_reservation.
21639         * config/i386/i386.md (sseins): Added sseins to define_attr type
21640         and define_attr unit.
21641         * config/i386/sse.md: Set type attribute to sseins for insertq
21642         and insertqi.
21644 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21646         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
21647         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
21648         ssecomi_load_amdfam10, ssecomi_amdfam10,
21649         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
21650         define_insn_reservation.
21651         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
21653 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21655         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
21656         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
21657         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
21658         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
21659         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
21660         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
21661         define_insn_reservation.
21663         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
21664         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
21665         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
21666         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
21667         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
21669 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21671         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
21672         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
21673         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
21674         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
21675         athlon_ssemul_load_k8): Added amdfam10.
21677 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21679         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
21680         (x86_sse_unaligned_move_optimal): New variable.
21682         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
21683         m_AMDFAM10.
21684         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
21685         for unaligned vector SSE double/single precision loads for AMDFAM10.
21687 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21689         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
21690         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
21691         Define TARGET_CPU_DEFAULT_amdfam10.
21692         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
21693         (processor_type): Add PROCESSOR_AMDFAM10.
21695         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
21696         processor_type in config/i386/i386.h.
21697         Enable imul peepholes for TARGET_AMDFAM10.
21699         * config.gcc: Add support for --with-cpu option for amdfam10.
21701         * config/i386/i386.c (amdfam10_cost): New variable.
21702         (m_AMDFAM10): New macro.
21703         (m_ATHLON_K8_AMDFAM10): New macro.
21704         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
21705         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
21706         x86_promote_QImode, x86_integer_DFmode_moves,
21707         x86_partial_reg_dependency, x86_memory_mismatch_stall,
21708         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
21709         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
21710         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
21711         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
21712         Enable/disable for amdfam10.
21713         (override_options): Add amdfam10_cost to processor_target_table.
21714         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
21715         processor_alias_table.
21716         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
21717         (ix86_adjust_cost): Add code for amdfam10.
21719 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21721         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
21722         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
21723         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
21724         * config/i386/i386.h: Add builtin definition for SSE4A.
21725         * config/i386/i386.md: Add support for ABM instructions
21726         (popcnt and lzcnt).
21727         * config/i386/sse.md: Add support for SSE4A instructions
21728         (movntss, movntsd, extrq, insertq).
21729         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
21730         Add -march=amdfam10 flag.
21731         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
21732         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
21733         and amdfam10.
21734         * doc/extend.texi: Add documentation for SSE4A builtins.
21736 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
21738         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
21740 2007-02-05  Richard Guenther  <rguenther@suse.de>
21742         * tree-vectorizer.h (vectorizable_function): Add argument type
21743         argument, change return type.
21744         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
21745         * tree-vect-transform.c (vectorizable_function): Handle extra
21746         argument, return vectorized function decl.
21747         (build_vectorized_function_call): Remove.
21748         (vectorizable_call): Handle calls with result and argument types
21749         differing.  Handle loop vectorization factor correctly.
21750         * targhooks.c (default_builtin_vectorized_function): Adjust for
21751         extra argument.
21752         * targhooks.h (default_builtin_vectorized_function): Likewise.
21753         * target.h (builtin_vectorized_function): Add argument type
21754         argument.
21755         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
21756         extra argument, allow vectorizing of lrintf.
21757         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
21758         documentation of target hook.
21760 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
21762         PR target/30665
21763         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
21764         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
21765         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
21767 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21769         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
21770         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
21771         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
21772         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
21773         before canonicalizing sincos to cexpi.
21774         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
21776 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21778         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
21779         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
21780         (alpha_init_builtins): Use alpha_add_builtins to process tables.
21782 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21784         * mips-tfile.c (initialize_init_file): Correct endianness test.
21786 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
21788         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
21789         the 'y' constraint.
21791 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
21793         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
21794         saves in a PARALLEL before the register assignments.
21796 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
21798         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
21799         DWARF_FRAME_RETURN_COLUMN to be a general register.
21800         * dwarf2out.c (init_return_column_size): New function, split from...
21801         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
21802         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
21803         to be nongeneral registers.
21804         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
21805         integer registers.
21806         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
21807         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
21809 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
21811         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
21813 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
21815         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
21816         (remove_path): Use can_remove_branch_p and remove_branch instead
21817         of loop_delete_branch_edge.
21818         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
21819         (tree_transform_and_unroll_loop): Remove dead branches immediately.
21820         Update profile using scale_dominated_blocks_in_loop.
21821         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
21822         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
21823         (can_remove_branch_p, remove_branch): Declare.
21824         * tree-cfg.c (tree_can_remove_branch_p): New function.
21825         (tree_cfg_hooks): Add tree_can_remove_branch_p.
21826         * cfgrtl.c (rtl_can_remove_branch_p): New function.
21827         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
21829 2007-02-05  Jan Hubicka  <jh@suse.cz>
21831         PR middle-end/30696
21832         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
21833         nodes in cgraph, don't remove offline copy of the function.
21835 2007-02-04  Jan Hubicka  <jh@suse.cz>
21837         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
21838         vectors might cause maybe_lookup_element_for_expr to be called
21839         on non-sra-candidate.
21841 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21843         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
21844         config/bfin/bfin.md, config/bfin/predicates.md: Follow
21845         spelling conventions.
21847 2007-02-04  Richard Guenther  <rguenther@suse.de>
21849         PR middle-end/30636
21850         * fold-const.c (try_move_mult_to_index): Make sure to not
21851         overflow one dimension of a multi-dimensional array access.
21853 2007-02-04  Jan Hubicka  <jh@suse.cz>
21855         * passes.c (init_optimization_passes): Reindent.
21857 2007-02-04  Jan Hubicka  <jh@suse.cz>
21858             Eric Botcazou  <ebotcazou@adacore.com>
21860         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
21861         (execute_fixup_cfg): Break out the abnormal goto code.
21862         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
21863         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
21864         (optimize_inline_calls): Call make_nonlocal_label_edges.
21866 2007-02-04  Jan Hubicka  <jh@suse.cz>
21868         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
21869         true when something was changed.
21870         (rename_ssa_copies): When something was changed, do
21871         TODO_remove_unused_locals.
21872         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
21873         add TODO_remove_unused_locals when instruction was removed.
21875 2007-02-04  Jan Hubicka  <jh@suse.cz>
21877         * ipa-inline.c (try_inline): Improve debug output; work on already
21878         inline edges too.
21879         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
21880         call try_inline for already inlined edges too when flattening;
21881         inline also functions that make callee growth but overall unit size
21882         reduce.
21884 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21886         * config/m32c/bitops.md, config/m32c/jump.md,
21887         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
21888         config/m32r/m32r.h, config/m32r/m32r.md,
21889         config/m32r/predicates.md, config/m68hc11/larith.asm,
21890         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
21891         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
21892         config/mips/mips-protos.h, config/mips/mips.c,
21893         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
21894         config/mn10300/mn10300.h, config/mn10300/predicates.md,
21895         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
21896         spelling conventions.
21898         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
21899         Follow spelling conventions.
21901 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
21903         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
21904         warn about C++0x compatibility.
21906 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21908         * config/h8300/h8300.c, config/h8300/h8300.h,
21909         config/h8300/h8300.md: Follow spelling conventions.
21911 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
21913         PR middle-end/30667
21914         * combine.c (try_combine): Do not substitute source operand
21915         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
21917 2007-02-03  Jan Hubicka  <jh@suse.cz>
21919         PR gcov-profile/30650
21920         * value-prof.c (stringop_block_profile): Fix handling of size counter;
21921         do not divide by zero for never executed counters.
21922         (tree_find_values_to_profile): Fix counters.
21923         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
21925 2007-02-03  Ian Lance Taylor  <iant@google.com>
21927         * lower-subreg.c (simple_move_operand): New static function,
21928         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
21929         operands.
21930         (simple_move): Call simple_move_operand.
21931         (find_decomposable_subregs): Add special handling of MEMs.
21932         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
21933         meaning of return value.  If we see a hard register, test whether
21934         it can store a word_mode value.  Change all callers.
21936 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21938         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
21939         ftrapv insns and expanders.
21940         (subdi3): Change define_expand operand 1 to arith11_operand, and
21941         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
21942         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
21943         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
21944         respectively.
21946         PR middle-end/30174
21947         * varasm.c (notice_global_symbol): Treat global objects as weak when
21948         flag_shlib is true.
21950 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21952         * emit-rtl.c (dconstpi): Delete.
21953         (dconstsqrt2): New.
21954         (init_emit_once): Delete dconstpi and init dconstsqrt2.
21955         * real.h (dconstpi): Delete.
21956         (dconstsqrt2): New.
21957         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
21958         (fold_builtin_hypot): Likewise.
21960 2007-02-03  Tom Tromey  <tromey@redhat.com>
21962         PR driver/30246
21963         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
21964         -gcoff3, -gxcoff3, -gvms3 implies -dD.
21966 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
21968         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
21969         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
21970         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
21971         config/rs6000/cell.md, config/rs6000/darwin.h,
21972         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
21973         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
21974         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
21975         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
21976         typos.  Follow spelling conventions.
21977         * doc/invoke.texi: Follow spelling conventions.
21979 2007-02-03  Roger Sayle  <roger@eyesopen.com>
21981         * simplify-rtx.c (simplify_relational_operation_1): Implement some
21982         canonicalization transformations that attempt to simplify integer
21983         constant comparisons to become comparisons against zero.
21985 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21987         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
21988         fabs(x)*sqrt(2).
21989         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
21990         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
21992 2007-02-02  Mike Stump  <mrs@apple.com>
21994         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
21995         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
21996         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
21997         generate a branch island.
21999 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
22001         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
22002         (xtensa_legitimate_address_p): New.
22003         (xtensa_legitimize_address): New.
22004         (xtensa_output_addr_const_extra): New.
22005         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
22006         (BASE_REG_P): New.
22007         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
22008         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
22009         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
22010         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
22011         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
22012         (xtensa_legitimize_address): New.
22013         (xtensa_output_addr_const_extra): New.
22015 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
22017         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
22019 2007-02-02  Ian Lance Taylor  <iant@google.com>
22021         * expmed.c (expand_divmod): Add comment.
22023 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
22025         * emit-rtl.c (renumber_insns): Remove.
22026         * flags.h: Remove the extern for flag_renumber_insns.
22027         * rtl.h: Remove the prototype for renumber_insns.
22028         * toplev.c (flag_renumber_insns): Remove.
22030 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
22032         Revert for x86 darwin:
22033         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
22035         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
22036         code before the following patch under TARGET_MACHO.
22037         (ix86_function_value_regno_p): Likewise.
22039 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22041         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
22042         COMPLEX_EXPR.
22044 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
22046         PR target/29682
22047         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
22048         loads to general or fp registers.  Add comments.
22049         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
22051 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
22053         * pointer-set.c (insert_aux): Only return insertion slot.
22054         (pointer_set_insert): Adjust.
22055         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
22056         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
22057         pointer_map_traverse): New.
22058         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
22059         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
22060         pointer_map_contains, pointer_map_traverse): Declare.
22062 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
22064         PR middle-end/30473
22065         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
22066         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
22068 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
22070         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
22072         (struct _dep): New type.
22073         (dep_t): New typedef.
22074         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
22075         (DEP_STATUS): New access macro.  The macro with the same name was
22076         renamed to DEP_LINK_STATUS.
22077         (dep_init): Declare function
22079         (struct _dep_link): New type.
22080         (dep_link_t): New typedef.
22081         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
22082         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
22083         (DEP_LINK_STATUS): New macro.
22084         (debug_dep_links): New debug function.
22086         (struct _deps_list): New type.
22087         (deps_list_t): New typedef.
22088         (DEPS_LIST_FIRST): New access macro.
22089         (FOR_EACH_DEP_LINK): New cycle macro.
22090         (create_deps_list, free_deps_list, delete_deps_list): Declare
22091         functions.
22092         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
22093         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
22094         (copy_deps_list_change_con): Ditto.
22096         (move_dep_link): Declare function.
22098         (struct _dep_node): New type.
22099         (dep_node_t): New typedef.
22100         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
22102         (struct haifa_insn_data.back_deps): New field to hold backward
22103         dependencies of the insn.
22104         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
22105         to deps_list_t.
22106         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
22107         Change its type to deps_list_t.
22108         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
22109         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
22110         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
22112         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
22114         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
22116         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
22117         and all callers.
22118         (dep_cost): Declare.
22120         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
22121         (ds_to_dk, dk_to_ds): New functions.
22123         (init_dep_1): New static function.
22124         (init_dep): New function.
22125         (copy_dep): New static function.
22127         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
22128         functions.
22129         (detach_dep_link): New static function.
22130         (move_dep_link): New function.
22132         (dep_links_consistent_p, dump_dep_links): New static functions.
22133         (debug_dep_links): New debugging function.
22135         (deps_obstack, dl_obstack, dn_obstack): New static variables.
22137         (alloc_deps_list, init_deps_list): New static functions.
22138         (create_deps_list): New function.
22139         (clear_deps_list): New static function.
22140         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
22141         (deps_list_consistent_p, dump_deps_list): New static functions.
22142         (debug_deps_list): New function.
22143         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
22144         functions.
22145         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
22147         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
22148         use new scheduler dependencies lists.
22149         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
22150         (sched_analyze): Ditto.  Initialize dependencies lists.
22151         (add_forw_dep, compute_forward_dependences): Update to use new
22152         scheduler dependencies lists.
22154         (init_dependency_caches): Init deps_obstack.
22155         (free_dependency_caches): Free deps_obstack.
22157         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
22158         new scheduler dependencies lists.
22159         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
22160         (add_back_forw_dep, delete_back_forw_dep): Ditto.
22162         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
22163         Update to use new scheduler dependencies lists.
22164         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
22165         (debug_dependencies): Ditto.
22166         (schedule_region): Update comments.
22168         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
22169         scheduler dependencies lists.
22170         (schedule_ebb): Update comments.
22172         * rtl.def (DEPS_LIST): Remove.
22174         * lists.c (unused_deps_list): Remove.
22175         (free_list): Update assertions.
22177         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
22178         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
22180         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
22181         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
22183         * haifa-sched.c (comments): Update.
22184         (insn_cost1): Remove.  Inline the code into insn_cost ().
22185         (insn_cost): Update to use new scheduler dependencies lists.  Move
22186         processing of the dependency cost to dep_cost ().
22187         (dep_cost): New function.  Use it instead of insn_cost () when
22188         evaluating cost of the dependency.  Use compatible interface to
22189         interact with the target.
22190         (priority): Update to use new scheduler dependencies lists.
22191         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
22192         with greater number of insns that depend on the insn.
22193         (schedule_insn): Update to use new scheduler dependencies lists.  Add
22194         code to free backward dependencies lists.  Inline and optimize code
22195         from resolve_dep () - see PR28071.
22196         (ok_for_early_queue_removal): Update to use new scheduler dependencies
22197         lists.  Update call to targetm.sched.is_costly_dependence hook.
22199         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
22200         scheduler dependencies lists.
22202         (resolve_dep): Remove.  Move the logic to schedule_insn ().
22203         (init_h_i_d): Initialize dependencies lists.
22205         (process_insn_depend_be_in_spec): Rename to
22206         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
22207         dependencies lists.
22208         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
22209         Update to use new scheduler dependencies lists.
22210         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
22212         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
22213         new scheduler dependencies lists.
22214         (build_intra_loop_deps): Ditto.
22216         * target.h (struct _dep): Declare to use in
22217         gcc_target.sched.is_costly_dependence.
22218         (struct gcc_target.sched.adjust_cost): Fix typo.
22219         (struct gcc_target.sched.is_costly_dependence): Change signature to
22220         use single dep_t parameter instead of an equivalent triad.
22221         (struct gcc_target.sched.adjust_cost_2): Remove.
22223         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
22225         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
22227         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
22228         documentation.
22229         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
22231         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
22232         (REG_DEP_TRUE): Document.
22234         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
22235         Change signature to correspond to the targetm.sched.adjust_cost hook.
22236         Update use in TARGET_SCHED_ADJUST_COST_2.
22237         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
22238         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
22239         new scheduler dependencies lists.
22240         (ia64_gen_check): Ditto.
22242         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
22243         scheduler dependencies lists.
22245         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
22246         signature to correspond to the targetm.sched.is_costly_dependence hook.
22247         (is_costly_group): Update to use new scheduler dependencies lists.
22249         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
22250         instead of INSN_COST () macro.
22252 2007-02-01  Ian Lance Taylor  <iant@google.com>
22254         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
22256 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
22258         * pa.md (tp_load): Correct mfctl instruction syntax.
22260 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
22262         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
22263         altivec_padding_size calculation on AIX.  Improve comment, add
22264         assert to verify that it's right.
22266         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
22267         64-bit.
22269 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
22271         PR inline-asm/28686
22272         * global.c (global_alloc): Add mising initialization of
22273         ELIMINABLE_REGSET.
22275 2007-02-01  Roger Sayle  <roger@eyesopen.com>
22277         * alias.c (init_alias_analysis): Correct whitespace.
22278         * bb-reorder.c (fix_edges_for_rarely_executed_code,
22279         partition_hot_cold_basic_blocks): Likewise.
22280         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
22281         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
22282         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
22283         fold_builtin_snprintf_chk, fold_builtin_printf,
22284         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
22285         do_mpfr_arg3, do_mpfr_sincos): Likewise.
22286         * cfgcleanup.c (cleanup_cfg): Likewise.
22287         * cfgexpand.c (tree_expand_cfg): Likewise.
22288         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
22289         * function.c (get_next_funcdef_no): Likewise.
22290         * gengtype.c (main): Likewise.
22291         * genmodes.c (main): Likewise.
22292         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
22293         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
22294         * ifcvt.c (noce_emit_move_insn): Likewise.
22295         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
22296         Likewise.
22297         * stor-layout.c (get_best_mode): Likewise.
22298         * tree-ssa-loop-niter.c (get_val_for): Likewise.
22299         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
22300         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
22301         perform_var_substitution, solve_graph): Likewise.
22302         * tree-vrp.c (vrp_finalize): Likewise.
22304 2007-02-01  Ian Lance Taylor  <iant@google.com>
22306         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
22307         high part of a paradoxical subreg, return a constant zero.
22309 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
22311         * toplev.c (lang_dependent_init): Call init_set_costs.
22312         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
22314 2007-02-01  Richard Guenther  <rguenther@suse.de>
22316         PR middle-end/30656
22317         * fold-const.c (fold_negate_expr): Allow negating a
22318         constant if overflow does not change.
22320 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22322         * doc/c-tree.texi (Expression trees): Improve markup.
22323         * doc/tm.texi (Register Classes, Addressing Modes)
22324         (Floating Point): Fix spacing after abbreviations.  Fix some
22325         typos.
22327 2007-02-01  Ben Elliston  <bje@au.ibm.com>
22329         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
22330         * doc/contrib.texi: Likewise.
22331         * doc/install.texi: Likewise.
22333 2007-01-31  Richard Henderson  <rth@redhat.com>
22334             Ian Lance Taylor  <iant@google.com>
22336         * lower-subreg.c: New file.
22337         * rtl.def (CONCATN): Define.
22338         * passes.c (init_optimization_passes): Add pass_lower_subreg and
22339         pass_lower_subreg2.
22340         * emit-rtl.c (update_reg_offset): New static function, broken out
22341         of gen_rtx_REG_offset.
22342         (gen_rtx_REG_offset): Call update_reg_offset.
22343         (gen_reg_rtx_offset): New function.
22344         * regclass.c: Revert patch of 2006-03-05, restoring
22345         reg_scan_update.
22346         (clear_reg_info_regno): New function.
22347         * dwarf2out.c (concatn_loc_descriptor): New static function.
22348         (loc_descriptor): Handle CONCATN.
22349         * common.opt (fsplit_wide_types): New option.
22350         * opts.c (decode_options): Set flag_split_wide_types when
22351         optimizing.
22352         * timevar.def (TV_LOWER_SUBREG): Define.
22353         * rtl.h (gen_reg_rtx_offset): Declare.
22354         (reg_scan_update): Declare.
22355         * regs.h (clear_reg_info_regno): Declare.
22356         * tree-pass.h (pass_lower_subreg): Declare.
22357         (pass_lower_subreg2): Declare.
22358         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
22359         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
22360         -fsplit-wide-types.
22361         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
22362         * Makefile.in (OBJS-common): Add lower-subreg.o.
22363         (lower-subreg.o): New target.
22365 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22367         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
22369 2007-01-31  Anatoly Sokolov <aesok@post.ru>
22371         PR target/19087
22372         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
22374 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22376         PR middle-end/29335
22377         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
22379 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
22381         * cfgloop.h: Include vec-prim.h.
22382         (enum li_flags): Remove LI_ONLY_OLD.
22383         (loop_iterator): Changed.
22384         (fel_next, fel_init): Iterate over loop tree.
22385         (FOR_EACH_LOOP_BREAK): New macro.
22386         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
22387         FOR_EACH_LOOP.
22388         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
22389         * modulo-sched.c (sms_schedule): Ditto.
22390         * tree-vectorizer.c (vectorize_loops): Ditto.
22391         * doc/loop.texi: Update information on loop numbering and behavior of
22392         FOR_EACH_LOOP wrto new loops.
22393         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
22394         add_to_evolution_1): Test nestedness of loops instead of comparing
22395         their numbers.
22396         * tree-chrec.c (chrec_fold_plus_poly_poly,
22397         chrec_fold_multiply_poly_poly, chrec_evaluate,
22398         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
22399         reset_evolution_in_loop): Ditto.
22400         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
22402 2007-01-31  Dirk Mueller  <dmueller@suse.de>
22404         * c-common.c (warn_about_parentheses): Separate warning about
22405         un-parenthized sequence of comparison operators from the one
22406         which is supposed to warn about x <= y <= z.
22408 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
22410         * optabs.h (enum optab_index): Add new OTI_isinf.
22411         (isinf_optab): Define corresponding macro.
22412         * optabs.c (init_optabs): Initialize isinf_optab.
22413         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
22414         patterns.
22415         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
22416         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
22417         using isinf_optab.
22418         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
22419         expand_builtin_interclass_mathfn.
22420         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
22421         * config/i386/i386.md (UNSPEC_FXAM): New constant.
22422         (fxam<mode>2_i387): New insn pattern.
22423         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
22424         built-in functions as x87 inline asm.
22426 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22428         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
22430 2007-01-30  Eric Christopher  <echristo@apple.com>
22432         * config.gcc: Add geode.
22434 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22436         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
22437         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
22438         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
22439         value-prof.c: Fix comment typos.
22441 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22443         PR c++/24745
22444         * doc/invoke.texi (Wpointer-arith): Document warning.
22446 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
22448         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
22449         the list of discrepancies from the draft TR.
22451 2007-01-30  Dirk Mueller  <dmueller@suse.de>
22453         PR c++/30601
22454         * doc/invoke.texi (-Wreturn-type): Update description to
22455         match new behavior.
22457 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
22459         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
22461 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
22463         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
22464         to handle optabs that operate on floating point input argument and
22465         output to integer output.
22466         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
22467         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
22468         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
22469         expand_builtin_interclass_mathfn ().
22470         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
22471         (ilogbsi2): Remove.
22472         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
22473         ilogbl built-in functions as x87 intrinsics.
22475 2007-01-30  Richard Guenther  <rguenther@suse.de>
22477         PR middle-end/27657
22478         * dwarf2out.c (reference_to_unused): Query varpool if the
22479         variable was output.
22481 2007-01-30  Richard Guenther  <rguenther@suse.de>
22483         PR middle-end/30313
22484         * passes.c (execute_one_pass): Reset in_gimple_form to not
22485         confuse non-unit-at-a-time mode.
22487 2007-01-29  Roger Sayle  <roger@eyesopen.com>
22488             Richard Guenther  <rguenther@suse.de>
22490         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
22491         avoid undefined behaviour on overflow.  Use force_fit_type_double
22492         to construct the constant with the specified TREE_OVERFLOW.
22494 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
22496         * config/dfp-bit.c: Add parameterized support for fp exceptions.
22497         * config/dfp-bit.h: Ditto.
22499 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22501         * c-decl.c (pop_scope): Replace warnings with call to
22502         warn_for_unused_label.
22503         * c-common.h (warn_for_unused_label): Declare.
22504         * c-common.c (warn_for_unused_label): Define.
22506 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22508         * tree-optimize.c (update_inlined_to_pointers): Delete unused
22509         function.
22511 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
22513         * Makefile.in (USER_H): Remove decfloat.h.
22514         * ginclude/decfloat.h: Delete, moving contents to ...
22515         * ginclude/float.h: Add support for decimal floating point,
22516         guarded by __STDC_WANT_DEC_FP__.
22518 2007-01-29  Mike Stump  <mrs@apple.com>
22520         * doc/gccint.texi (Top): Rename Loop Representation to Loop
22521         Analysis and Representation to resolve case insensitive conflict.
22522         * doc/loop.texi (Loop Analysis and Representation): Likewise.
22524 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
22526         * tree.h (struct tree_memory_tag): Add aliases member.
22527         (MTAG_ALIASES): New macro.
22528         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
22529         (add_may_alias): Remove pointer-set. Update for may_aliases being
22530         a bitmap.
22531         (mark_aliases_call_clobbered): Update for may_aliases being a
22532         bitmap.
22533         (compute_tag_properties): Ditto.
22534         (create_partition_for): Ditto.
22535         (compute_memory_partitions): Ditto.
22536         (dump_may_aliases_for): Ditto.
22537         (is_aliased_with): Ditto.
22538         (add_may_alias_for_new_tag): Ditto.
22539         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
22540         (compute_is_aliased): New function.
22541         (compute_may_aliases): Call compute_is_aliased).
22542         (init_alias_info): Initialize alias_bitmap_obstack.
22543         (union_alias_set_into): New function.
22544         (compute_flow_sensitive_aliasing): Use union_aliases_into.
22545         (have_common_aliases_p): Rewrite to take two bitmaps and use
22546         intersection.
22547         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
22548         Update for bitmaps.
22549         (finalize_ref_all_pointers): Update for add_may_alias changes.
22550         (new_type_alias): Ditto.
22551         * tree-flow-inline.h (may_aliases): Return a bitmap.
22552         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
22553         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
22554         may_aliases being a bitmap.
22555         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
22556         may_aliases now returns a bitmap.
22557         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
22558         being a bitmap.
22559         * tree-ssa-operands.c (add_virtual_operand): Update for
22560         may_aliases being a bitmap.
22562 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
22564         PR tree-optimization/30630
22565         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
22566         variable as changed.
22568 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
22570         PR c++/28266
22571         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
22572         expanded only once even if an error occurs.
22574 2007-01-29  Ben Elliston  <bje@au.ibm.com>
22576         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
22577         (__gcov_average_profiler): Likewise.
22578         (__gcov_ior_profiler): Likewise.
22579         (__gcov_merge_ior): Likewise.
22581 2007-01-28  Jan Hubicka  <jh@suse.cz>
22583         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
22584         * value-prof.c (stringop_block_profile): Likewise.
22586 2007-01-28  Jan Hubicka  <jh@suse.cz>
22588         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
22589         Add variant handling histograms; add wrapper.
22590         (clear_storage_via_libcall): Export.
22591         (emit_block_move_hints): Break out from ...; add histograms.
22592         (emit_block_move): ... this one.
22593         (clear_storage_hints): Break out from ...; add histograms.
22594         (clear_storage): ... this one.
22595         (set_storage_via_memset): Handle histogram.
22596         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
22597         (clear_storage_hints, clear_storage_via_libcall): Declare.
22598         (set_storage_via_setmem): Update prototype.
22599         * doc/md.texi (movmem, setmem): Document new arguments.
22601         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
22602         Add new histograms.
22603         (stringop_block_profile): New global function.
22604         (tree_stringops_values_to_profile): Profile block size and alignment.
22605         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
22606         HIST_TYPE_IOR.
22607         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
22608         (stringop_block_profile): Declare.
22609         * builtins.c: Include value-prof.h.
22610         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
22611         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
22612         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
22613         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
22614         * profile.c (instrument_values): Add new counters.
22615         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
22616         calls.
22617         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
22618         (tree_init_edge_profiler): Build new profilers.
22619         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
22620         (pass_tree_profile): Add dump.
22621         (tree_profile_hooks): Update.
22622         * Makefile.in (LIBGCOV): Add new constants.
22623         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
22624         __gcov_ior_profiler): New.
22625         * i386.md (movmem/setmem expanders): Add new optional arguments.
22627 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
22629         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
22631 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
22633         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
22634         (tree_unswitch_single_loop): Pass eni_size_weights to
22635         tree_num_loop_insns.
22636         * tree-ssa-loop-manip.c: Include tree-inline.h.
22637         (can_unroll_loop_p): Pass eni_size_weights to
22638         tree_num_loop_insns.
22639         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
22640         Pass eni_size_weights to estimate_num_insns.
22641         * tree.h (init_inline_once): Export.
22642         * toplev.c (backend_init): Call init_inline_once.
22643         * cgraphunit.c (cgraph_process_new_functions,
22644         cgraph_analyze_function): Pass eni_inlining_weights to
22645         estimate_num_insns.
22646         * ipa-inline.c (compute_inline_parameters): Ditto.
22647         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
22648         to estimate_num_insns.
22649         (try_unroll_loop_completely): Pass eni_size_weights to
22650         tree_num_loop_insns.
22651         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
22652         ot estimate_num_insns.
22653         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
22654         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
22655         * tree-inline.c (eni_inlining_weights, eni_size_weights,
22656         eni_time_weights): New variables.
22657         (init_inline_once): Initialize them.
22658         (struct eni_data): Mew.
22659         (estimate_num_insns_1, estimate_num_insns): Use weights.
22660         * tree-inline.h (struct eni_weights_d): New.
22661         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
22662         (estimate_num_insns): Declaration changed.
22663         * cfgloop.h (tree_num_loop_insns): Declaration changed.
22664         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
22665         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
22667 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
22669         * tree-data-ref.c (conflict_fn): Assert that the number of affine
22670         relations in the conflict function is valid.
22672 2007-01-27  Ian Lance Taylor  <iant@google.com>
22674         * common.opt: Add fstrict-overflow.
22675         * opts.c (decode_options): Set flag_strict_overflow if -O2.
22676         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
22677         (TYPE_OVERFLOW_UNDEFINED): Define.
22678         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
22679         Replace all uses.
22680         * tree.h (TYPE_TRAP_SIGNED): Don't define.
22681         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
22682         (fold_negate_expr): Likewise.
22683         (make_range): Likewise.
22684         (extract_muldiv_1): Likewise.
22685         (maybe_canonicalize_comparison): Likewise.
22686         (fold_comparison): Likewise.
22687         (fold_binary): Likewise.
22688         (tree_expr_nonnegative_p): Likewise.
22689         (tree_expr_nonzero_p): Likewise.
22690         * tree-vrp.c (compare_values): Likewise.
22691         (extract_range_from_binary_expr): Likewise.
22692         (extract_range_from_unary_expr): Likewise.
22693         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
22694         Likewise.
22695         (nowrap_type_p): Likewise.
22696         * tree-scalar-evolution.c (simple_iv): Likewise.
22697         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
22698         (build_range_check): Likewise.
22699         (extract_muldiv_1): Likewise.
22700         (fold_comparison): Likewise.
22701         * tree-vrp.c (vrp_int_const_binop): Likewise.
22702         (extract_range_from_unary_expr): Likewise.
22703         * convert.c (convert_to_integer): Likewise.
22704         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
22705         (fold_comparison): Likewise.
22706         (fold_binary): Likewise.
22707         * optabs.c (optab_for_tree_code): Likewise.
22708         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
22709         * simplify-rtx.c (simplify_const_relational_operation): Check
22710         flag_strict_overflow and flag_trapv.
22711         (simplify_const_relational_operation): Likewise.
22712         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
22713         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
22714         -fstrict-overflow.
22716 2007-01-27  Roger Sayle  <roger@eyesopen.com>
22718         * tree.c (tree_fold_gcd): Delete.
22719         * tree.h (tree_fold_gcd): Remove prototype.
22720         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
22721         test whether one constant integer is a multiple of another.  Instead
22722         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
22723         * fold-const.c (multiple_of_p):  We've determined both TOP and
22724         BOTTOM are integer constants so we can call int_const_binop directly
22725         instead of the more generic const_binop.
22727 2007-01-27  Roger Sayle  <roger@eyesopen.com>
22729         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
22730         1*X check that the constant hasn't overflowed, to preserve the
22731         TREE_OVERFLOW bit.
22732         (round_up): Provide an efficient implementation when rouding-up an
22733         INTEGER_CST to a power-of-two.
22735 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22737         * doc/sourcebuild.texi: Add comma for clarity.
22738         * doc/extend.texi: Fix some typos.
22739         * doc/passes.texi: Likewise.
22740         * doc/cppinternals.texi: Likewise.
22741         * doc/c-tree.texi: Likewise.
22742         * doc/tree-ssa.texi: Likewise.
22743         * doc/install.texi: Likewise.
22745 2007-01-27  Jan Hubicka  <jh@suse.cz>
22747         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
22748         (pass_sra): Do not require alias information.
22749         * passes.c (init_optimization_passes): Add SRA
22751 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
22753         * tracer.c (rest_of_handle_tracer): We already cleaned
22754         up the CFG in tracer() so don't do it here again.
22755         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
22756         cleanup_cfg here, either.  And don't call renumber_insns.
22758         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
22759         and BB_HEAD are in the insn stream here.  Instead make sure
22760         that BB_INSN is valid on all insns.  Also, do check here that
22761         there are no pending branch predictions...
22762         (rtl_verify_flow_info): ...instead of doing it here.  Checks
22763         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
22764         here.
22766 2007-01-26  Roger Sayle  <roger@eyesopen.com>
22768         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
22769         function to simplify/factorize operand order canonicalization.
22770         (ix86_fixup_binary_operands): Reorganize using the above function.
22771         (ix86_binary_operator_ok): Likewise.
22773 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
22775         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
22776         file scope from optimize_attrs.
22777         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
22778         up search.
22779         (optimize_attrs): Clear insn_code_values after freeing it.
22781 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
22783         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
22784         a parts.base assignment.
22786 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
22788         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
22789         (compute_subscript_distance, initialize_data_dependence_relation,
22790         finalize_ddr_dependent, analyze_ziv_subscript,
22791         analyze_siv_subscript_cst_affine,
22792         compute_overlap_steps_for_affine_univar,
22793         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
22794         analyze_siv_subscript, analyze_miv_subscript,
22795         analyze_overlapping_iterations, subscript_dependence_tester_1,
22796         compute_self_dependence, free_dependence_relation): Work
22797         with affine_fn instead of chrecs.
22798         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
22799         common_affine_function, affine_function_base,
22800         affine_function_constant_p, affine_fn_op, affine_fn_plus,
22801         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
22802         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
22803         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
22804         (all_chrecs_equal_p): Removed.
22805         * tree-data-ref.h (affine_fn, conflict_function): New types.
22806         (struct subscript): Change type of conflicting_iterations_in_a
22807         and conflicting_iterations_in_b.
22809 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
22811         PR other/30182
22812         * config/pa/pa.h (TARGET_HPUX_11): New.
22813         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
22814         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
22816 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
22817         Richard Guenther  <rguenther@suse.de>
22819         * tree-ssa-structalias.c (solve_graph): Handle case
22820         we merged the variable to another.
22822 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22824         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
22825         functions.
22827         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
22828         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
22830 2007-01-25  DJ Delorie  <dj@redhat.com>
22832         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
22833         allow changes to modes which don't fit in those registers.
22835         * reload1.c (choose_reload_regs): Check for invalid subregs before
22836         computing their locations, not after.
22838 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
22840         PR 25127
22841         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
22842         save Altivec registers in an eh_return function.
22843         (compute_vrsave_mask): Likewise.
22844         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
22845         for saving Altivec registers.
22846         (rs6000_emit_prologue): Don't allocate stack twice in
22847         eh_return function.  Correct expected value of altivec_save_offset
22848         when using save_world.  Describe save of R0 to stack when using
22849         save_world.  Describe stack pointer adjustment when using
22850         save_world.  Remove duplicated eh_return parameter register saving.
22851         Update sp_offset variable after save_world.
22852         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
22853         darwin-world.asm.
22854         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
22855         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
22856         implies Altivec.
22858 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
22860         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
22862 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
22864         PR other/30182
22865         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
22866         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
22868 2007-01-25  Richard Guenther  <rguenther@suse.de>
22870         * doc/invoke.texi (-Wcoverage-mismatch): Document.
22871         * common.opt (-Wcoverage-mismatch): New warning option.
22872         * coverage.c (get_coverage_counts): Ignore coverage mismatch
22873         if -Wcoverage-mismatch is given.
22875 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
22877         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
22878         (ipcp_driver): Change to static definition.
22879         Add dumping of the ifunctions.
22880         (constant_val_insert): Remove unused parameter. Support for SSA.
22881         (ipcp_propagate_const): Support for SSA.
22882         (ipcp_profile_bb_print): Print only analyzed nodes.
22883         (ipcp_replace_map_create): Remove support for Fortran constant
22884         for now.
22885         * ipa-prop.c (ipa_method_modify_stmt,
22886         ipa_callsite_compute_param): Support for SSA.
22887         * ipa-prop.h (ipcp_driver): Remove declaration.
22888         (IS_VALID_TREE_MAP_INDEX): Add define.
22890 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
22892         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
22894 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22896         PR middle-end/30447
22897         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
22898         constant argument to cabs and do it without checking for
22899         -funsafe-math-optimizations.
22901 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
22903         * c-common.h (RID_FIRST_CXX0X): New.
22904         (RID_LAST_CXX0X): New.
22905         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
22906         by -Wall.
22907         * c.opt (Wc++0x-compat): New.
22908         * doc/invoke.texi (-Wc++0x-compat): Document.
22910 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22912         * builtins.c (fold_builtin_carg): New.
22913         (fold_builtin_1): Use it.
22915 2007-01-24  Jan Hubicka  <jh@suse.cz>
22917         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
22919         * ipa-inline.c (initial_insns, max_insns): Delete.
22920         (compute_max_insns): New function.
22921         (cgraph_decide_inlining_of_small_function): Use it; take minimal
22922         amount of insns as base for code growth.
22923         (cgraph_decide_inlining): Make initial_insns local; do not compute
22924         max_insns.
22925         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
22926         * doc/invoke.texi (inline-unit-growth): Update docs.
22928 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
22930         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
22931         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
22932         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
22933         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
22934         for CPUs that have PTA_CX16 set.
22936         PR middle-end/27416
22937         * gimplify.c (omp_check_private): New function.
22938         (gimplify_scan_omp_clauses): Use it for
22939         firstprivate/lastprivate/reduction.
22941         PR middle-end/30494
22942         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
22943         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
22945         PR middle-end/30421
22946         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
22947         If lower_lastprivate_clauses emits some statements, append them
22948         to dlist rather than body_p and to body_p append an initializer.
22949         (lower_omp_for): Adjust caller.
22951 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
22953         * target.h (globalize_decl_name): New.
22954         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
22955         * output.h (default_globalize_decl_name): New.
22956         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
22957         globalize_label.
22958         (globalize_decl): Ditto.
22959         (default_globalize_decl_name): New.
22960         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
22961         (ia64_handle_version_id_attribute): New.
22962         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
22963         (ia64_asm_output_external): Use globalize_decl_name instead
22964         of globalize_label.
22965         * doc/extend.texi (version_id): New pragma.
22966         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
22968 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
22970         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
22971         _uleb128_t and _Unwind_SWord with _sleb128_t.
22972         * unwind-dw2.c (extract_cie_info, execute_stack_op,
22973         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
22974         Likewise.
22975         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
22976         * unwind-pe.h (read_uleb128, read_sleb128,
22977         read_encoded_value_with_base): Likewise.
22978         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
22980 2007-01-24  Richard Guenther  <rguenther@suse.de>
22982         * builtins.c (expand_builtin_cexpi): Get the fndecl
22983         for cexp in the correct way.
22985 2007-01-24  Jan Hubicka  <jh@suse.cz>
22987         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
22988         of calls.
22990 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
22992         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
22993         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
22994         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
22995         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
22996         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
22997         __SIZEOF_PTRDIFF_T__.
22998         * doc/cpp.texi: Documentation for the new builtin macros added.
23000 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
23002         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
23003         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
23004         instead of operands[2] to avoid access past the end of array.
23006 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
23008         * reload1.c (emit_reload_insns): Pass the reload register
23009         for a non-spill output reload through forget_old_reloads_1.
23011 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
23013         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
23014         _SOFT_DOUBLE if doubles use software floating-point.
23015         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
23016         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
23017         * config/rs6000/darwin-ldouble.c: Also compile functions for
23018         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
23019         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
23020         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
23021         commented-out long double override.
23022         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
23023         * config/rs6000/eabispe.h: Likewise.
23024         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
23025         long double for non-SPE.
23026         (rs6000_handle_option): Likewise.
23027         (invalid_e500_subreg): Disallow more subregs involding DImode,
23028         DFmode, TImode or TFmode.
23029         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
23030         E500 double.
23031         (legitimate_lo_sum_address_p): Also check for TFmode for E500
23032         double.
23033         (rs6000_legitimize_address): Also handle TFmode for E500 double.
23034         (rs6000_legitimize_reload_address): Also handle TFmode for E500
23035         double.
23036         (rs6000_legitimate_address): Also check for TFmode for E500
23037         double.
23038         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
23039         (spe_build_register_parallel): Handle TFmode and TCmode.
23040         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
23041         double.
23042         (function_arg): Handle TFmode and TCmode for E500 double.
23043         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
23044         in general.
23045         (print_operand): Handle TFmode and TImode for %y.
23046         (rs6000_generate_compare): Handle TFmode comparisons for E500
23047         double.
23048         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
23049         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
23050         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
23051         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
23052         TFmode for E500 double.
23053         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
23054         (floatsidf2): Enable for E500 double.
23055         (movtf_softfloat): Use rs6000_nonimmediate_operand.
23056         (extenddftf2): Change to extenddftf2_fprs.
23057         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
23058         depending on TARGET_E500_DOUBLE.
23059         (extendsftf2): Enable for E500 double.
23060         (trunctfdf2): Enable for E500 double.
23061         (trunctfsf2): Change to trunctfsf2_fprs.
23062         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
23063         depending on TARGET_E500_DOUBLE.
23064         (floatsitf2): Enable for E500 double.
23065         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
23066         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
23067         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
23068         (negtf2): Change to negtf2_internal.
23069         (negtf2): New expander.
23070         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
23071         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
23072         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
23073         (movdi_internal32): Use rs6000_nonimmediate_operand.
23074         (unnamed splitter): Likewise.
23075         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
23076         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
23077         (SPE64TF, DITI): New mode macros.
23078         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
23079         modes.
23080         (frob_tf_ti): New.
23081         (frob_<mode>_di_2): New.
23082         (frob_tf_di_8_2): New.
23083         (frob_di_df): Change to frob_di_<mode>; allow more modes.
23084         (frob_ti_tf): New.
23085         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
23086         more modes.
23087         (frob_ti_<mode>_8_2): New.
23088         (frob_ti_tf_2): New.
23089         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
23090         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
23091         TFmode.
23092         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
23093         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
23094         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
23095         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
23096         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
23097         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
23098         tsttflt_gp): New.
23100 2007-01-23  Ian Lance Taylor  <iant@google.com>
23102         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
23103         insn-*.o first.
23104         (OBJS-archive): Reformat, alphabetize.
23105         (OBJS): Change out_object_file to OBJS-md.
23107 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
23109         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
23110         JUMP_P and CALL_P predicates where applicable.
23111         * config/i386/i386.c: Ditto.
23112         * config/i386/i386.md: Ditto.
23113         * config/i386/mmx.md: Ditto.
23114         * config/i386/predicates.md: Ditto.
23116 2007-01-22  Andreas Schwab  <schwab@suse.de>
23118         * config/m68k/m68k.h: Fix comment.
23120 2007-01-22  Jan Hubicka  <jh@suse.cz>
23122         * passes.c (init_optimization_passes): Do not rerun
23123         pass_early_warn_uninitialized.
23125 2007-01-22  Richard Guenther  <rguenther@suse.de>
23127         PR tree-optimization/30038
23128         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
23129         function.
23130         (execute_cse_sincos_1): Likewise.
23131         (execute_cse_sincos): Likewise.
23132         (gate_cse_sincos): Likewise.
23133         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
23134         the cexpi() canonicalization of sincos().
23135         * tree-pass.h (pass_cse_sincos): Declare.
23136         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
23138 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
23140         PR rtl-optimization/29329
23141         * combine.c (replaced_rhs_insn): Rename to i2mod.
23142         (replaced_rhs_value): Rename to i2mod_new_rhs.
23143         (i2mod_old_rhs): New global variable.
23144         (combine_instructions): Adjust for above change.  Save a copy of
23145         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
23146         note are substituted in the second instruction.
23147         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
23148         ditch the note if it pertains to the second eliminated register
23149         and this register is mentioned in i2mod_old_rhs.
23151         Revert:
23152         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
23154         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
23155         the insn to which the note was originally attached.
23157 2007-01-21  Jan Hubicka  <jh@suse.cz>
23159         * ipa-inline.c (inlining_mode): Comment, move up.
23160         (cgraph_decide_inlining_incrementally): Do not perform inlining
23161         itself; fix handling of flattening of self recursive functions.
23162         (cgraph_find_cycles): Remove.
23163         (cgraph_flatten_node): Remove.
23164         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
23165         (try_inline): New function.
23166         (cgraph_early_inlining): Update call of
23167         cgraph_decide_inlining_incrementally.  Apply inlining here.
23168         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
23170 2007-01-21  Dirk Mueller  <dmueller@suse.de>
23172         PR bootstrap/30511
23173         * tree-vrp.c (check_array_bounds): do not warn
23174         about ADDR_EXPR's of ARRAY_REF's which are immediately
23175         used in binary expressions.
23177 2007-01-21  Ira Rosen  <irar@il.ibm.com>
23179         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
23180         read_write_dep and macros for its access.
23181         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
23182         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
23183         argument, call vect_check_interleaving for every independent pair of
23184         data-refs. Mark loads that access the same memory location as a store
23185         in the loop.
23186         (vect_check_dependences): Remove.
23187         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
23188         call, fix the call to vect_analyze_data_ref_dependence.
23189         (vect_analyze_data_ref_access): For statements that access the same
23190         data-ref, check that they are not stores; for loads, check that there
23191         is no store that access the same location.
23193 2007-01-20  Roger Sayle  <roger@eyesopen.com>
23194             Joseph Myers  <joseph@codesourcery.com>
23196         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
23197         (-fdump-rtl-stack): Likewise.
23198         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
23199         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
23200         (-mpt-fixed): Use @minus{} for minus sign.
23201         (Using Precompiled Headers): Fix under/overfull hbox.
23203 2007-01-20  Jan Hubicka  <jh@suse.cz>
23205         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
23206         place within annotation.
23208 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23210         * pa.c (output_move_double): Change array size of xoperands to 4.
23212 2007-01-20  Jan Hubicka  <jh@suse.cz>
23214         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
23215         as temporary.
23217 2007-01-19  Ian Lance Taylor  <iant@google.com>
23219         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
23220         constant to unsigned HOST_WIDE_INT before negating.
23222 2007-01-19  Ian Lance Taylor  <iant@google.com>
23224         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
23225         to unsigned.
23226         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
23227         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
23228         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
23229         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
23230         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
23231         (realloc_vdef, realloc_vuse): Change second parameter to
23232         unsigned.
23233         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
23234         fields to unsigned.
23235         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
23236         unsigned. Change x and lim locals to unsigned.
23237         (realloc_vdef, realloc_vuse): Change num_elem parameter to
23238         unsigned.
23239         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
23240         (copy_virtual_operands): Change i and n locals to unsigned.
23242 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23244         PR middle-end/29335
23245         * builtins.c (fold_builtin_1): Handle builtin fdim.
23247 2007-01-20  Jan Hubicka  <jh@suse.cz>
23249         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
23250         * tree-ssa-structalias.c (compute_points_to_sets): Do call
23251         init_alias_heapvars.
23252         (init_alias_heapvars): Initialize only when not already initialized.
23253         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
23255 2007-01-19  Roger Sayle  <roger@eyesopen.com>
23257         * common.opt (fsigned-zeros): New command line option.
23258         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
23259         of flag_unsafe_math_optimizations.
23260         * opts.c (set_fast_math_flags): The -ffast-math command line option
23261         implies -fno-signed-zeros.
23262         (fast_math_flags_set_p): Likewise.
23264         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
23265         the documentation of -ffast-math appropriately.  Wrap long lines.
23267 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
23269         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
23270         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
23272 2007-01-19  Tomas Bily  <tbily@suse.cz>
23274         * cgraphunit.c (cgraph_finalize_function): Updating of pid
23275         * tree-profile.c:
23276         (tree_init_ic_make_global_vars): New function
23277         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
23278         (tree_gen_ic_profiler): New function
23279         (tree_gen_ic_func_profiler): New function
23280         (tree_profiling): Added calling of tree_gen_ic_func_profiler
23281         (tree_profile_hooks): Added hook for indirec/virtual calls
23282         * value-prof.c (tree_find_values_to_profile): New case for
23283         indirect calls
23284         (tree_values_to_profile): Call for determining indirect/virtual
23285         counters
23286         (tree_indirect_call_to_profile): New function
23287         (tree_ic_transform): New function
23288         (tree_ic): New function
23289         (find_func_by_pid): New function
23290         (init_pid_map): New function
23291         (tree_value_profile_transformations): Added check for
23292         indirect/virtual call transformation
23293         * value-prof.h (enum hist_type): New counter type for
23294         indirect/virtual calls
23295         (profile_hooks): Added new hook for profiling indirect/virtual
23296         calls
23297         * profile.c (instrument_values): New case for indirect/virtual
23298         call added
23299         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
23300         (GCOV_COUNTER_V_INDIR): New counter type
23301         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
23302         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
23303         call added
23304         * cgraph.c: Definition of cgraph_max_pid
23305         (cgraph_create_node): Default init of pid attribute
23306         * cgraph.h: Declaration of cgraph_max_pid
23307         (struct cgraph_node): Added pid attribute
23308         * libgcov.c (__gcov_indirect_call_profiler): New function
23309         (__gcov_one_value_profiler_body): New function
23310         (__gcov_one_value_profiler): Body was moved to
23311         __gcov_one_value_profiler_body and calls it
23313 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
23315         * doc/gty.texi (Options): Document the mark_hook option to GTY.
23316         * gengtype.c (write_types_data, write_func_for_structure,
23317         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
23318         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
23319         (walk_type, write_func_for_structure): Generate the mark_hook if
23320         needed.
23322 2007-01-19  Jan Hubicka  <jh@suse.cz>
23324         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
23325         'early' argument take inlining mode argument specifying whether to
23326         inline for size/speeed or all functions; add support for flattening;
23327         improve dumpting.
23328         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
23330 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23332         PR c++/17947
23333         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
23334         the name of the declared identifier.
23336 2007-01-19  Dirk Mueller  <dmueller@suse.de>
23338         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
23339         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
23340         duplicate evaluation.
23342 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
23344         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
23345         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
23346         to XFMode, use acosxf2 and truncate result to requested mode.
23347         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
23348         (asin<mode>2): Similarly, with asin expanders.
23349         (*fscalexf4_i387): Rename from *fscalexf4.
23350         (expNcorexf3): New expander.
23351         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
23352         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
23353         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
23354         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
23355         patterns for SSE math.
23356         (exp10<mode>2): Similarly, with exp10 expanders.
23357         (exp2<mode>2): Similarly, with exp2 expanders.
23358         (expm1<mode>2): Similarly, with expm1 expanders.
23359         (ldexp<mode>3): Similarly, with ldexp expanders.
23360         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
23361         Use gen_truncxf<mode>2_i387_noop to truncate result.
23363 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23365         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
23366         for ColdFire targets.
23368 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
23369             Richard Sandiford  <richard@codesourcery.com>
23371         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
23372         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
23373         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
23374         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
23375         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
23376         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
23378 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23380         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
23381         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
23382         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
23383         (*adddi_dilshr32_cf): New pattern.
23384         (adddi3, subdi3): Remove first alternatives.
23386 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23388         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
23389         implemented using move.l, do not use its cc result for floating-point
23390         comparisons.
23392 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23394         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
23395         from accepting 's' constraints if flag_pic.
23397 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23399         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
23400         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
23401         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
23402         condition from TARGET_68881 to TARGET_HARD_FLOAT.
23404 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
23406         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
23407         ColdFire alternatives.
23408         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
23409         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
23410         architectures that support ff1 instruction.
23412 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23413             Julian Brown  <julian@codesourcery.com>
23415         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
23416         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
23417         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
23418         Add commentary.
23420 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23422         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
23423         and return a bool.
23424         (output_move_const_into_data_reg, output_move_simode_const): Delete.
23425         * config/m68k/m68k.c (const_method, const_int_cost): Take a
23426         HOST_WIDE_INT instead of an rtx.
23427         (m68k_rtx_costs): Update call accordingly.
23428         (output_move_const_into_data_reg): Likewise.  Fix formatting.
23429         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
23430         Return a bool.
23431         (output_move_simode_const): Update calls after above changes.
23432         Rework to use automatic variables and predicates like MEM_P.
23433         * config/m68k/m68k.md (pushexthisi_const): Update call to
23434         valid_mov3q_const.
23436 2007-01-19  Dirk Mueller  <dmueller@suse.de>
23438         * tree-ssa-alias.c (perform_var_substitution): Fix typo
23439         in dump_flags test.
23441 2007-01-19  Richard Guenther  <rguenther@suse.de>
23443         * builtins.c (expand_builtin_cexpi): Fall back to expanding
23444         via cexp in case sincos is not available.
23446 2007-01-19  Richard Guenther  <rguenther@suse.de>
23448         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
23449         * defaults.h (TARGET_HAS_SINCOS): Default to off.
23450         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
23451         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
23452         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
23453         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
23454         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
23455         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
23457 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
23459         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
23460         New insn patterns.
23461         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
23462         (atan2xf3): Directly generate RTL pattern.
23463         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
23464         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
23465         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23466         disable patterns for SSE math.
23467         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
23468         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
23469         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23470         disable patterns for SSE math.
23472 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
23474         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
23476 2007-01-18  Roger Sayle  <roger@eyesopen.com>
23478         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
23479         VIEW_CONVERT_EXPR to the same type as it's operand.
23481 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
23483         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
23484         configured for long double 128.
23486 2007-01-18  Mike Stump  <mrs@apple.com>
23488         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
23489         error.
23491 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
23493         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
23494         type correct.
23496 2007-01-18  Jan Hubicka  <jh@suse.cz>
23498         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
23499         greater than NUM_VOP_FREE_BUCKETS.
23501 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
23503         * tree-ssa-structalias.c: Update comments.
23504         (ptabitmap_obstack): Removed.
23505         (pta_obstack): New.
23506         (oldpta_obstack): Ditto.
23507         (stats): Add a few members.
23508         (struct variable_info): Remove node, complex, address_taken, and
23509         indirect_target members. Add oldsolution member.
23510         (new_var_info): Do not initialize removed members.
23511         (constraint_expr_type): Remove INCLUDES.
23512         (constraint_graph): Add size, implicit_preds, rep,
23513         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
23514         (FIRST_REF_NODE): New macro.
23515         (LAST_REF_NODE): Ditto.
23516         (FIRST_ADDR_NODE): Ditto.
23517         (find): New function.
23518         (unite): Ditto.
23519         (dump_constraint): Do not handle INCLUDES.
23520         (insert_into_complex): Do not insert duplicate constraints.
23521         (condense_varmap_nodes): Renamed and rewritten into ...
23522         (merge_node_constraints): This. Also fix bug in handling of
23523         offseted copy constraints.
23524         (clear_edges_for_node): No longer need to deal with preds at all,
23525         or removing associated preds/succs.
23526         (merge_graph_nodes): Deal with indirect_cycles.
23527         Don't deal with predecessors.
23528         (add_implicit_graph_edge): New function.
23529         (add_pred_graph_edge): Ditto.
23530         (add_graph_edge): Don't deal with predecessors.
23531         (build_constraint_graph): Removed.
23532         (build_pred_graph): New function.
23533         (build_succ_graph): Ditto.
23534         (struct scc_info): Removed in_component. Added roots, dfs, and
23535         node_mapping. Remove visited_index, unification_queue.
23536         (scc_visit): Deal with union-find we do now.
23537         Deal with cycles with REF nodes.
23538         (collapse_nodes): Renamed and rewritten to ...
23539         (unify_nodes): This.
23540         (process_unification_queue): Removed.
23541         (topo_visit): Cleanup
23542         (do_da_constraint): Use find.
23543         (do_sd_constraint): Ditto.
23544         (do_ds_constraint): Ditto.
23545         (do_complex_constraint): Ditto.
23546         (init_scc_info): Update for removed and added members.
23547         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
23548         (find_indirect_cycles): This.
23549         (equivalence_class): New variable.
23550         (label_visit): New function.
23551         (perform_variable_substitution): Rewritten.
23552         (free_var_substitution_info): New function.
23553         (find_equivalent_node): Ditto.
23554         (move_complex_constraints): Ditto.
23555         (eliminate_indirect_cycles): Ditto.
23556         (solve_graph): Only propagate changed bits.
23557         Use indirect cycle elimination.
23558         Use find.
23559         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
23560         (tree_id_eq): Renamed to ...
23561         (tree_vi_eq): This. Update for member change
23562         (insert_id_for_tree): Renamed and rewritten to ...
23563         (insert_vi_for_tree): This.
23564         (lookup_id_for_tree): Renamed and rewritten to ...
23565         (lookup_vi_for_tree): This.
23566         (get_id_for_tree): Renamed and rewritten to ...
23567         (get_vi_for_tree): Ditto.
23568         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
23569         (process_constraint): Don't handle INCLUDES.
23570         Remove special ADDRESSOF case.
23571         (find_func_aliases): Rewrite to use vi functions instead of id
23572         ones.
23573         (create_function_info_for): Ditto.
23574         (create_variable_info_for): Ditto.
23575         (intra_create_variable_infos): Ditto.
23576         (merge_smts_into): Ditto.
23577         (find_what_p_points_to): Ditto.
23578         (init_base_vars): Ditto.
23579         (init_alias_vars): Ditto.
23580         (remove_preds_and_fake_succs): New function.
23581         (dump_sa_points_to_info): Dump new stats.
23582         (dump_solution_for_var): Use find.
23583         (set_used_smts): Fix formatting.
23584         (compute_points_to_sets): Updated for new functions.
23585         (ipa_pta_execute): Ditto.
23587 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23588             Richard Sandiford  <richard@codesourcery.com>
23590         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
23591         parallels.
23592         * calls.c (expand_call): If the return value is a PARALLEL,
23593         extract its first member.
23594         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
23595         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
23596         use FUNCTION_EXTRA_EPILOGUE.
23597         (m68k_function_value): Return a PARALLEL if the return value
23598         is of a pointer type.
23599         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
23600         (FUNCTION_EXTRA_EPILOGUE): Remove.
23601         * config/m68k/m68k.md (D0_REG): New constant.
23603 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23605         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
23606         output a NOP for empty epilogues.
23608 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23610         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
23611         before function.  Extend register save check to include all
23612         registers, not just integer ones.
23614 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23616         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
23617         (m68k_use_return_insn): ...this.
23618         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
23619         * config/m68k/m68k.c (use_return_insn): Rename to...
23620         (m68k_use_return_insn): ...this.
23621         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
23622         of USE_RETURN_INSN.
23624 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23626         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
23627         nearest even, fix denormal rounding overflow.
23629 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23631         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
23632         f%$smove and f%$move.
23633         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
23634         (extendsfdf2_cf): Use fdmove instead of f%&move.
23635         (truncdfsf2_cf): Use fsmove instead of f%$smove.
23636         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
23638 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23640         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
23641         GPR<-GPR moves.
23643 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23645         * real.h (real_format): Add a canonical_nan_lsbs_set field.
23646         (coldfire_single_format): Declare.
23647         (coldfire_double_format): Likewise.
23648         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
23649         of qnan_msb_set to determine the lower bits of a canonical
23650         NaN significand.
23651         (encode_ieee_double): Likewise.
23652         (encode_ieee_quad): Likewise.
23653         (ieee_single_format): Initialize canonical_nan_lsbs_set.
23654         (mips_single_format): Likewise.
23655         (ieee_double_format): Likewise.
23656         (mips_double_format): Likewise.
23657         (ieee_extended_motorola_format): Likewise.
23658         (ieee_extended_intel_96_format): Likewise.
23659         (ieee_extended_intel_128_format): Likewise.
23660         (ieee_extended_intel_96_round_53_format): Likewise.
23661         (ibm_extended_format): Likewise.
23662         (mips_extended_format): Likewise.
23663         (ieee_quad_format): Likewise.
23664         (mips_quad_format): Likewise.
23665         (vax_f_format): Likewise.
23666         (vax_d_format): Likewise.
23667         (vax_g_format): Likewise.
23668         (i370_single_format): Likewise.
23669         (i370_double_format): Likewise.
23670         (decimal_single_format): Likewise.
23671         (decimal_double_format): Likewise.
23672         (decimal_quad_format): Likewise.
23673         (c4x_single_format): Likewise.
23674         (c4x_extended_format): Likewise.
23675         (real_internal_format): Likewise.
23676         (coldfire_single_format): New real_format.
23677         (coldfire_double_format): Likewise.
23678         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
23679         canonical_nan_lsbs_set.
23680         (pdp11_d_format): Likewise.
23681         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
23682         if TARGET_COLDFIRE_CPU.
23684 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23686         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
23687         (output_call, m68k_legitimize_call_address): Declare.
23688         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
23689         parenthesees.  Add support for a 'W' constraint.
23690         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
23691         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
23692         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
23693         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
23694         variables.
23695         (override_options): Initialize them.  Do not set flag_no_function_cse
23696         for TARGET_ID_SHARED_LIBRARY.
23697         (m68k_output_pic_call): Delete.
23698         (m68k_legitimize_call_address): New function.
23699         (print_operand): Remove the %o prefix.  Handle the %p prefix.
23700         (output_call): New function.
23701         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
23702         target address from the GOT if symbolic jumps are not allowed.
23703         * config/m68k/m68k.md (call, general_operand): Do not set
23704         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
23705         Merge separate flag_pic and !flag_pic define_insns into...
23706         (*call, *call_value): ...these new patterns.  Match the address
23707         rather than the containing MEM and require it to be a call_operand.
23708         Use output_call to generate the asm template.
23709         * config/m68k/predicates.md (const_call_operand): New predicate.
23710         (call_operand): Likewise.
23712 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23714         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
23715         (STACK_GROWS_DOWNWARD): Define to 1.
23716         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
23717         comments, emphasizing that these values are only defaults.
23718         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
23719         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
23721 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23723         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
23725 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23726             Richard Sandiford  <richard@codesourcery.com>
23728         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
23729         (FP_REGNO_P): New macros.
23730         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
23731         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
23732         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
23733         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
23735 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23737         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23738         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
23739         to $tmake_file.
23740         * config/m68k/t-floatlib: New file, extracting common code from...
23741         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
23742         * config/m68k/t-uclinux: Here.
23743         * config/m68k/fpgnulib.c: Do not compile extendeed precision
23744         routines on ColdFire targets.
23746 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23748         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23749         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
23750         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
23751         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
23752         explicitly set MOTOROLA to 1.
23753         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
23755 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23756             Nathan Sidwell  <nathan@codesourcery.com>
23758         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
23759         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
23760         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
23761         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
23762         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
23763         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
23764         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
23765         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
23766         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
23767         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
23768         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
23769         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
23770         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
23771         (DBX_REGISTER_NUMBER): Delete.
23772         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
23773         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
23774         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
23776 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23778         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
23779         * config/flat.h: New file.
23780         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
23781         OBJECT_FORMAT_FLAT.
23782         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
23783         indirect references for -msep-data or -mid-shared-library.
23784         Do not use PC-relative code addresses either.
23785         * config/m68k/m68k.c (override_options): Restrict -fPIC error
23786         to -mpcrel.
23787         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
23788         for shared libraries and crt1.o for executables.  Use crti.o and
23789         crtbegin.o.
23790         (ENDFILE_SPEC): Use crtend.o and crtn.o.
23791         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
23792         Do not add -elf2flt or -shared-lib-id options here.
23793         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
23794         Pass -shared-lib-id if -mid-shared-library, taking the library
23795         identifier from -mshared-library-id if given, otherwise
23796         defaulting to 0.
23797         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
23798         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
23799         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
23800         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
23801         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
23802         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
23803         and crtend.o.
23804         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
23805         jump sequence for ISA A and ISA A+.
23806         (PICJUMP): Likewise.
23808 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23810         * config.gcc (m68k-*-uclinux*): Base the port on the common
23811         and m68k GNU/Linux files rather than on the generic ELF ones.
23812         * config/m68k/uclinux.h (TARGET_VERSION): Override.
23813         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
23815 2007-01-18  Julian Brown  <julian@codesourcery.com>
23816             Richard Sandiford  <richard@codesourcery.com>
23818         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
23819         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
23820         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
23821         before redefining.
23822         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
23823         80 unconditionally.
23824         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
23826 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23828         * doc/install.texi: Document m68k-uclinuxoldabi.
23829         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
23830         * config/m68k/uclinux-oldabi.h: New file, copied from
23831         config/m68k/uclinux.h.
23833 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
23835         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
23836         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
23837         (m32r_compute_frame_size): Use unsigned for regno.
23838         (m32r_reload_lr): Use gen_frame_mem.
23839         (pop): New.
23840         (m32r_output_function_epilogue): Don't output the function epilogue
23841         textually here.
23842         (m32r_expand_epilogue): New.
23843         (direct_return): Return false if the function has the interrupt
23844         attribute.
23845         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
23846         * config/m32r/m32r.md (epilogue): New expander.
23847         (return_lr, return_rte): New insns.
23848         (return): Make it expander.
23849         (return_normal): New expander.
23851 2007-01-18  Josh Conner  <jconner@apple.com>
23853         PR target/30485
23854         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
23855         support for UNLE, UNLT, UNGE, and UNGT.
23857 2007-01-18  Jan Hubicka  <jh@suse.cz>
23859         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
23860         * tree-tailcall (add_virtual_phis): Likewise.
23861         (optimize_tail_call): Return TODOs.
23862         (execute_tail_calls): Return TODOs.
23863         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
23864         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
23865         changed.
23866         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
23867         Cleanup cfg using TODO.
23868         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
23869         * passes.c (execute_function_todo): When cleanup did something, remove
23870         unused locals.
23871         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
23872         (make_edges): Don't cleanup_cfg.
23874 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
23876         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
23877         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
23878         operate on the top of stack.
23879         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
23880         register handling of instructions that output to the second
23881         stack slot.
23882         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
23883         (move_for_stack_reg): Special-case check for dead destination
23884         stack slot for constant load of 1.0 inside UNSPEC_TAN.
23886         * config/i386/i386.md (UNSPEC_TAN): New constant.
23887         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
23888         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
23889         to correctly model move of constant 1.0 to top stack slot.
23890         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
23891         (unnamed peephole2 pattern): Remove corresponding peephole2
23892         pattern that optimizes tan insn and loading of constant 1.0.
23893         (tanxf2): Use fptanxf4_i387.
23894         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
23895         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
23896         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23897         disable patterns for SSE math.
23898         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
23899         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
23901 2007-01-18  Dirk Mueller  <dmueller@suse.de>
23902             Richard Guenther <rguenther@suse.de>
23904         PR diagnostic/8268
23905         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
23906         * common.opt (Warray-bounds): Add new warning option.
23907         * c-opts.c (c_common_handle_option): Define -Warray-bounds
23908         if -Wall is given.
23909         * Makefile.in: make tree-vrp.o depend on toplev.h
23910         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
23911         is enabled.
23912         (check_array_refs, check_array_bounds, check_array_ref): New.
23914 2007-01-18  Jan Hubicka  <jh@suse.cz>
23916         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
23917         (execute_ssa_ccp): Return flags conditionally.
23918         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
23919         changed.
23920         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
23922 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
23924         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
23925         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
23927         * Makefile.c (GTFILES): Add cfglayout.h.
23928         * gengtype.c (open_base_files): Likewise.
23929         * cfglayout.c (cfg_layout_function_footer,
23930         cfg_layout_function_header) Reindent to make gengtype happy.
23931         * cfglayout.h (cfg_layout_function_footer,
23932         cfg_layout_function_header): Add GTY(()) marker.
23934         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
23936 2007-01-18  Ben Elliston  <bje@au.ibm.com>
23938         * genautomata.c (write_automata): Include xstrerror output in the
23939         error message if writing the DFA description file fails.
23941 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
23943         * config/mips/mips-protos.h (mips_output_external): Make it
23944         return void.
23945         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
23946         * config/mips/mips.c (irix_output_external_libcall): Likewise.
23947         (extern_list): Likewise.
23948         (extern_head): Likewise.
23949         (TARGET_ASM_FILE_END): Likewise.
23950         (mips_file_end): Likewise.
23951         (mips_output_external): Rewritten.
23953 2007-01-18  Ben Elliston  <bje@au.ibm.com>
23955         * genpreds.c (write_insn_preds_c): Only write out the function
23956         body for regclass_for_constraint if we have register constraints.
23958 2007-01-17  Tom Tromey  <tromey@redhat.com>
23960         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
23961         * doc/install.texi (Testing): Use sourceware.org.
23962         (Binaries): Likewise.
23963         (Specific): Likewise.
23964         * doc/contrib.texi (Contributors): Use sourceware.org.
23966 2007-01-17  Anatoly Sokolov <aesok@post.ru>
23968         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
23969         (AVR_ENHANCED): Rename to ...
23970         (AVR_HAVE_MUL): ... new.
23971         (avr_enhanced_p): Rename to ...
23972         (avr_have_mul_p): ... new.
23973         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
23974         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
23975         * config/avr/avr.c (avr_enhanced_p): Rename to ...
23976         (avr_have_mul_p): ... new.
23977         (base_arch_s): Rename 'enhanced' to 'have_mul'.
23978         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
23979         'avr_enhanced_p' and 'enhanced'.
23980         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
23981         AVR_HAVE_MUL instead of AVR_ENHANCED.
23982         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
23983         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
23984         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
23985         instead of AVR_ENHANCED.
23986         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
23987         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
23988         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
23990 2007-01-17  Ian Lance Taylor  <iant@google.com>
23992         * vec.h (VEC_reserve_exact): Define.
23993         (vec_gc_p_reserve_exact): Declare.
23994         (vec_gc_o_reserve_exact): Declare.
23995         (vec_heap_p_reserve_exact): Declare.
23996         (vec_heap_o_reserve_exact): Declare.
23997         (VEC_OP (T,A,reserve_exact)): New static inline function, three
23998         versions.
23999         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
24000         negative parameter.
24001         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
24002         (VEC_OP (T,A,copy)) [all versions]: Likewise.
24003         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
24004         * vec.c (calculate_allocation): Add exact parameter.  Change all
24005         callers.
24006         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
24007         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
24008         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
24009         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
24010         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
24011         (vec_heap_p_reserve_exact): New function.
24012         (vec_heap_o_reserve_exact): New function.
24014 2007-01-17  Jan Hubicka  <jh@suse.cz>
24016         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
24018 2007-01-17  Eric Christopher  <echristo@apple.com>
24020         * config.gcc: Support core2 processor.
24022 2007-01-16  Jan Hubicka  <jh@suse.cz>
24024         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
24025         the names, just unlink the chain so we don't crash on dangling
24026         pointers
24027         to dead SSA names.
24029 2007-01-16  Jan Hubicka  <jh@suse.cz>
24031         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
24032         * tree-pass.h: Reorder to make IPA passes appear toegher.
24033         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
24034         Declare.
24035         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
24036         parameters, do not call early inliner.
24037         * ipa-inline.c: Update comments.  Include tree-flow.h
24038         (cgraph_decide_inlining): Do not compute inlining parameters.
24039         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
24040         be called with function context set up.
24041         (pass_ipa_inline): Remove unreachable functions before pass.
24042         (cgraph_early_inlining): Simplify assuming to be called from the
24043         PM as local pass.
24044         (pass_early_inline): New pass.
24045         (cgraph_gate_ipa_early_inlining): New gate.
24046         (pass_ipa_early_inline): Turn into simple wrapper.
24047         (compute_inline_parameters): New function.
24048         (gate_inline_passes): New gate.
24049         (pass_inline_parameters): New pass.
24050         (apply_inline): Move here from tree-optimize.c
24051         (pass_apply_inline): New pass.
24052         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
24053         transforming.
24054         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
24055         doing them by hand.
24056         (tree_function_versioning): Do not allocate dummy struct function.
24057         * tree-inline.h (optimize_inline_calls): Update prototype.
24058         * tree-optimize.c (execute_fixup_cfg): Export.
24059         (pass_fixup_cfg): Remove
24060         (tree_rest_of_compilation): Do not apply inlines.
24061         * tree-flow.h (execute_fixup_cfg): Declare.
24062         * Makefile.in (gt-passes.c): New.
24063         * passes.c: Include gt-passes.h
24064         (init_optimization_passes): New passes.
24065         (nnodes, order): New static vars.
24066         (do_per_function_toporder): New function.
24067         (execute_one_pass): Dump current pass here.
24068         (execute_ipa_pass_list): Don't dump current pass here.
24070 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
24072         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
24073         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
24075 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
24077         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
24078         (strong_alias): Define.
24079         (__gcc_qmul): Provide non-FMA for soft-float.
24080         (__gcc_qdiv): Same.
24081         (__gcc_qneg): New.
24082         (__gcc_qeq): New.
24083         (__gcc_qle): New.
24084         (__gcc_qge): New.
24085         (__gcc_qunord): New.
24086         (__gcc_stoq): New.
24087         (__gcc_dtoq): New.
24088         (__gcc_qtos): New.
24089         (__gcc_qtod): New.
24090         (__gcc_qtoi): New.
24091         (__gcc_qtou): New.
24092         (__gcc_itoq): New.
24093         (__gcc_utoq): New.
24094         (fmsub): New.
24095         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
24096         soft-float functions.
24097         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
24098         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
24099         about long double soft float.
24101 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
24102             Tehila Meyzels  <tehila@il.ibm.com>
24104         * tree-vectorizer.h (is_pattern_stmt_p): New.
24105         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
24106         formatting (tabs instead of spaces). Cleanup and clarify setting
24107         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
24108         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
24109         (vectorizable_type_demotion): Check that types are integral.
24110         (vectorizable_type_promotion): Likewise.
24111         (vectorizable_store): Fix typo.  Eliminate new-line at end of
24112         comments.
24114 2007-01-16  Jan Hubicka  <jh@suse.cz>
24116         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
24117         cgraph edges too.
24119 2007-01-15  Eric Christopher  <echristo@apple.com>
24121         * ifcvt.c: Include vec.h, vecprim.h.
24122         (check_cond_move_block): New argument regs.
24123         Reorganize. Add registers used to regs.
24124         (cond_move_process_if_block): Use regs set above as
24125         loop bounds.
24127 2007-01-15  Eric Christopher  <echristo@apple.com>
24129         * config/darwin.h: Update copyright.
24130         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
24131         (LINK_COMMAND_SPEC): Add -u.
24132         (LINK_SPEC): Fix umbrella for above.
24134 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
24136         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
24137         glibc CVS.
24139 2007-01-15  Tom Tromey  <tromey@redhat.com>
24141         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
24142         * doc/install.texi (Testing): Don't mention jacks.
24143         (Configuration): Document --enable-java-maintainer-mode.  Move
24144         --with-java-home to libgcj-specific section.  Document
24145         --with-ecj-jar.
24146         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
24148 2007-01-15  Jan Hubicka  <jh@suse.cz>
24150         * tree-ssa-dce.c (DCE_TODOs): New.
24151         (propagate_necessity): Return if something changed.
24152         (eliminate_unnecessary_stmts): Likewise.
24153         (perform_tree_ssa_dce): Return TODO flags when needed.
24154         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
24156 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
24158         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
24159         (fyl2x_extend<mode>xf3_i387): New insn pattern.
24160         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
24161         patterns using X87MODEF12 mode macro.  Extend operand 1
24162         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
24163         (log10<mode>2): Ditto.
24164         (log2<mode>2): Ditto.
24165         (log1p<mode>2): Ditto.
24166         (logb<mode>2): Ditto.
24167         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
24168         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
24169         (*fxtractxf3_i387): Rename from *fxtractxf3.
24170         (fxtract_extend<mode>xf3_i387): New insn pattern.
24171         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
24172         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
24173         and gen_fyl2xxf3_i387().
24175 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
24177         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
24178         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
24179         get_loop_exit_edges.  Changed return type to bool.
24180         * cfgloop.h (fix_loop_placement): Declaration removed.
24182 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
24184         * param.h (MIN_VECT_LOOP_BOUND): New.
24185         * params.def (MIN_VECT_LOOP_BOUND): New.
24186         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
24187         argument - minimum threshold for number of iterations.
24188         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
24189         argument to declaration.
24190         * tree-vect-analyze.c (vect_analyze_operations): Check value of
24191         MIN_VECT_LOOP_BOUND.
24192         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
24193         slpeel_tree_peel_loop_to_edge with additional argument.
24194         (vect_do_peeling_for_alignment): Likewise.
24195         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
24197 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
24199         PR target/30413
24200         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
24201         operands of size 1.
24203 2007-01-14  Jan Hubicka  <jh@suse.cz>
24205         * tree-dfa.c (remove_referenced_var): New function.
24206         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
24207         prune referenced vars list too.
24208         * tree-flow.h (remove_referenced_var): Declare.
24210 2007-01-14  Jan Hubicka  <jh@suse.cz>
24212         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
24213         separately.
24214         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
24215         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
24216         * except.h (verify_eh_throw_table_statements): Kill prototype.
24217         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
24218         into call exrepssions.
24219         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
24220         eh trhow verifier.
24221         * tree-cfg.c: Include pointer-set.h.
24222         (verify_node_sharing): Work on pointer set.
24223         (verify_eh_throw_stmt_node): New.
24224         (verify_stmts): Use pointers sets, verify throw_stmt.
24226 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
24228         * ipa-reference.c (analyze_function): Consider also addresses taken
24229         in phi nodes.
24231 2007-01-12  Roger Sayle  <roger@eyesopen.com>
24233         * c-typeck.c (null_pointer_constant_p): Replace use of
24234         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
24235         (build_c_cast): Likewise.
24237 2007-01-12  Roger Sayle  <roger@eyesopen.com>
24239         * tree.h (force_fit_type_double): Remove unused final argument.
24240         * c-common.c (constant_expression_warning): Replace use of
24241         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
24242         (convert_and_check): Likewise.
24243         (shorten_compare): Update call to force_fit_type_double.
24244         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
24245         * convert.c (convert_to_pointer): Update call to
24246         force_fit_type_double.
24247         * fold-const.c (force_fit_type_double): Remove overflowed_const
24248         argument.
24249         (int_const_binop, fold_convert_const_int_from_int,
24250         fold_convert_const_int_from_real, fold_div_compare,
24251         fold_sign_changed_comparison, fold_unary, fold_negate_const,
24252         fold_abs_const, fold_not_const): Remove the final argument from
24253         calls to force_fit_type_double.
24255 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24257         * configure.ac: Set insn to "nop" for spu-*-* also.
24258         * configure: Regenerate.
24260 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
24262         * builtins.def : Add BUILT_IN_FREE.
24264 2007-01-12  Jan Hubicka  <jh@suse.cz>
24266         PR tree-optimization/30443
24267         * tree-inline.c (tree_function_versioning): Do not optimize when
24268         cloning for inlining.
24270 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
24272         * doc/loop.texi: Document recording of loop exits.
24273         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
24274         (update_single_exits_after_duplication,
24275         update_single_exit_for_duplicated_loop,
24276         update_single_exit_for_duplicated_loops): Removed.
24277         (duplicate_loop_to_header_edge): Do not call
24278         update_single_exits_after_duplication and
24279         update_single_exit_for_duplicated_loops.
24280         (loop_version): Do not update single_exit information.
24281         (fix_loop_structure): Use record_loop_exits instead of
24282         mark_single_exit_loops.
24283         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
24284         the lists of loop exits.
24285         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
24286         split_edge, merge_blocks): Update the lists of loop exits.
24287         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
24288         loop_optimizer_init.
24289         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
24290         of mark_single_exit_loops.
24291         (loop_optimizer_finalize): Call release_recorded_exits.
24292         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
24293         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
24294         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
24295         update single exit information.
24296         * lambda-code.c (perfect_nestify): Ditto.
24297         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
24298         (mark_single_exit_loops): Removed.
24299         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
24300         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
24301         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
24302         functions.
24303         (get_loop_exit_edges, single_exit): Use recorded exit lists.
24304         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
24305         (verify_loop_structure): Verify consistency of the exit lists.
24306         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
24307         (set_single_exit): Removed.
24308         * cfgloop.h (struct loop_exit): New function.
24309         (struct loop): single_exit_ field replaced by exits field.
24310         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
24311         LOOPS_HAVE_RECORDED_EXITS.
24312         (struct loops): Added exits hash.
24313         (mark_single_exit_loops, set_single_exit): Declaration removed.
24314         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
24316 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24318         * doc/invoke.texi: Avoid use of @headitem.
24320 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24322         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
24324 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24326         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
24327         list of targets.
24329 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
24330             Richard Sandiford  <richard@codesourcery.com>
24332         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
24333         * config/m68k/m68k.opt: Resort options.
24334         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
24336 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
24337             Richard Sandiford  <richard@codesourcery.com>
24339         * doc/invoke.texi: Document the macros that are defined by
24340         m68k's -mtune and -mhard-float options.
24341         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
24342         (m68k_cpp_cpu_family): Likewise.
24343         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
24344         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
24345         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
24346         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
24347         (m68k_cpp_cpu_family): Likewise.
24349 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24351         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
24352         macros besides mc68000 as tuning macros.  Use a switch statement
24353         to set them and mcpu32.
24355 2007-01-12  Julian Brown  <julian@codesourcery.com>
24357         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
24358         (TARGET_68040_ONLY): Rename to...
24359         (TARGET_68040): ...this.
24360         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
24361         * config/m68k/m68k.md: Likewise.
24363 2007-01-12  Julian Brown  <julian@codesourcery.com>
24364             Nathan Sidwell  <nathan@codesourcery.com>
24365             Richard Sandiford  <richard@codesourcery.com>
24367         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
24368         the -mcpu= argument associated with the --with-cpu setting.
24369         Define M68K_DEFAULT_TUNE to the default -mtune= option,
24370         if different from the one implied by the -mcpu setting.
24371         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
24372         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
24373         * doc/invoke.texi: Mention ColdFire in the introduction to the
24374         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
24375         -mno-div and -mhard-float options.  Make -m68881 a synonym for
24376         -mhard-float.  Document the previously-undocumented -m5206e,
24377         -m528x, -m5307 and -m5407 options.  Tweak the existing option
24378         documentation for consistency.
24379         * doc/install.texi: Mention new --with-cpu arguments.
24380         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
24381         default CPU if neither -mcpu nor -march are specified.
24382         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
24383         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
24384         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
24385         using m68k_tune to decide between families that implement the
24386         same ISA.  Use m68k_tune to set __mcfv4e__.
24387         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
24388         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
24389         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
24390         (FL_ISA_C, FL_ISA_MMU): New macros.
24391         (MASK_COLDFIRE): Delete.
24392         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
24393         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
24394         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
24395         (TARGET_HARD_FLOAT): Do not define here.
24396         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
24397         (TUNE_68000): New macro.
24398         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
24399         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
24400         (TUNE_CFV2): Redefine in terms of m68k_tune.
24401         (uarch_type, target_device, fpu_type): New enums.
24402         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
24403         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
24404         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
24405         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
24406         (FL_FOR_isa_c): New macros.
24407         (m68k_isa): New enum.
24408         (m68k_target_selection): New structure.
24409         (all_devices, all_isas, all_microarchs): New tables.
24410         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
24411         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
24412         (MASK_ALL_CPU_BITS): Delete.
24413         (m68k_find_selection): New function.
24414         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
24415         Map the legacy target options to a combination of the new ones.
24416         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
24417         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
24418         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
24419         settings.
24420         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
24421         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
24422         properties.
24423         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
24424         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
24425         * config/m68k/m68k-devices.def: New file.
24427 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24428             Nathan Sidwell  <nathan@codesourcery.com>
24430         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
24431         (SUBTARGET_EXTRA_SPECS): New macros.
24432         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
24433         use %(asm_cpu_spec) instead.
24434         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
24435         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
24436         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
24437         (EXTRA_SPECS): Rename to...
24438         (SUBTARGET_EXTRA_SPECS): ...this.
24440 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
24441             Richard Sandiford  <richard@codesourcery.com>
24442             Julian Brown  <julian@codesourcery.com>
24444         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
24445         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
24446         to the configuration's default CPU.
24447         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
24448         Remove default masks.
24449         (m680[012]0-*-*): Set the default with_cpu to the first part of
24450         the target name.
24451         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
24452         (m68k*-*-linux): Extend the --with-cpu handling to...
24453         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
24454         and m68010.  Don't set target_cpu_default2.
24455         * doc/install.texi: Document --with-cpu for m68k.
24456         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
24457         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
24458         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
24459         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
24460         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
24461         (ASM_SPEC): Remove use of %(asm_cpu_default).
24462         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
24463         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
24464         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
24465         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
24466         __HAVE_FPU__ if TARGET_HARD_FLOAT.
24467         (TARGET_DEFAULT): Delete.
24468         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
24469         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
24470         (CPP_CPU_SPEC): Delete.
24471         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
24472         the appropriate string.
24473         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
24474         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
24475         (ASM_SPEC): Don't use %(asm_default_spec).
24476         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
24477         TARGET_DEFAULT and add MASK_68881.
24478         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
24480 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24482         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
24483         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
24484         MASK_68010 alongside MASK_68020.
24485         * doc/invoke.texi: Document -m68010.
24486         * config/m68k/m68k.opt (m68010): New.
24487         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
24488         if TUNE_68010.
24489         (TUNE_68010): New macro.
24490         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
24491         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
24492         (M68K_CPU_m68332): Add MASK_68010.
24493         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
24494         fallback definition.
24495         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
24496         defines.
24497         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
24498         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
24499         to all entries that use MASK_68020.
24500         (output_move_simode_const, output_move_himode, output_move_qimode)
24501         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
24502         instead of TARGET_68020 to select clr behavior.  Remove comment
24503         about there being no TARGET_68010.
24504         * config/m68k/m68k.md: Likewise throughout.
24506 2007-01-12  Julian Brown  <julian@codesourcery.com>
24508         * config/m68k/m68k.h (TARGET_ISAB): New macro.
24509         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
24510         * config/m68k/m68k.md: Likewise.
24512 2007-01-12  Julian Brown  <julian@codesourcery.com>
24514         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
24515         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
24517 2007-01-12  Julian Brown  <julian@codesourcery.com>
24519         * config/m68k/m68k.h (TUNE_68040_60): New macro.
24520         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
24521         * config/m68k/m68k.md: Likewise.
24523 2007-01-12  Julian Brown  <julian@codesourcery.com>
24524             Richard Sandiford  <richard@codesourcery.com>
24526         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
24527         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
24528         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
24529         TARGET_CPU32.
24530         (TARGET_CPU32): Rename to...
24531         (TUNE_CPU32): ...this.
24532         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
24533         (TUNE_CFV2): New macros.
24534         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
24535         remove conditions that are implied by TARGET_68020.
24536         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
24537         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
24538         (m68k_output_function_epilogue): Likewise.
24539         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
24540         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
24541         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
24542         non-68000 timings.  Refactor multiplication and division costs.
24543         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
24544         TUNE_CPU32 instead of TARGET_CPU32.
24545         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
24546         and TUNE_68060 instead of TARGET_68060.
24547         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
24548         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
24549         TARGET_CPU32.
24550         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
24551         && !TARGET_COLDFIRE" to choose between moveq and clr.
24552         Likewise in the unnamed movsf pattern.
24553         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
24554         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
24555         ashiftrt pattern.
24557 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24559         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
24560         of tabbing before backslashes.
24562 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24564         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
24565         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
24566         (ASM_OUTPUT_INTERNAL_LABEL): Define.
24568 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
24570         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
24571         find_interesting_uses_cond.
24572         (find_interesting_uses_cond): Use extract_cond_operands.
24573         (rewrite_use_compare): Use extract_cond_operands and
24574         force_gimple_operand_bsi.  Do not call update_stmt.
24575         (determine_use_iv_cost_condition): Use extract_cond_operands.
24576         Return cheaper of using original bound and changing the exit bound.
24578 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
24580         PR tree-optimization/29516
24581         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
24582         most_expensive_mult_to_index, addr_to_parts,
24583         create_mem_ref, maybe_fold_tmr): Make the type of
24584         fields of TARGET_MEM_REF sizetype.
24585         (move_fixed_address_to_symbol, move_pointer_to_base):
24586         New functions.
24587         * tree.def (TARGET_MEM_REF): Add comment on types of
24588         the operands.
24590 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
24592         * c-common.c (vector_types_convertible_p): Treat opaque types as
24593         always convertible if they have the same size, but not otherwise.
24595 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
24597         * ifcvt.c (struct noce_if_info): Add comments to the fields.
24598         Remove the b_unconditional field.
24599         (noce_try_sign_mask): Do not look at b_unconditional.
24600         (noce_process_if_block): Do not use merge_if_blocks.  Update
24601         the CFG here.  Do not set b_unconditional.
24602         (cond_move_process_if_block): Likewise.
24603         (find_cond_trap): Likewise.
24604         (check_cond_move_block): Require simple jump insns at the end
24605         of the basic block.
24607 2007-01-11  Jan Hubicka  <jh@suse.cz>
24609         PR tree-optimization/1046
24610         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
24611         when alias info is not ready.
24612         (pass_tail_recursion): Do not require aliasing.
24613         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
24614         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
24615         * tree-ssa-copy.c (pass_copy_prop): Likewise.
24616         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
24617         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
24618         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
24619         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
24620         before inlining.
24621         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
24622         When aliasing is not build, mark statement as volatile.
24624 2007-01-11  Tom Tromey  <tromey@redhat.com>
24626         PR preprocessor/15185, PR preprocessor/20989:
24627         * doc/cppopts.texi <-MT>: Update description of algorithm for
24628         computing default target.
24629         <-M, -MD>: Reword "basename" text.
24631 2007-01-11  Roger Sayle  <roger@eyesopen.com>
24633         * builtins.c (expand_builtin_pow, expand_builtin_powi,
24634         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
24635         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
24636         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
24637         fold_builtin_bswap, real_constp, fold_builtin_pow,
24638         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
24639         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
24640         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
24641         * convert.c (convert_to_pointer): Likewise.
24642         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
24643         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
24644         const_binop, fold_convert_const_int_from_int,
24645         fold_convert_const_int_from_real,
24646         fold_convert_const_real_from_real, sign_bit_p,
24647         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
24648         fold_sign_changed_comparison, fold_unary, fold_comparison,
24649         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
24650         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
24651         * print-tree.c (print_node_brief, print_node): Likewise.
24652         * stor-layout.c (place_field, layout_type): Likewise.
24653         * tree-chrec.c (keep_cast): Likewise.
24654         * tree.c (build_vector, build_real, build_real_from_int_cst,
24655         build_complex): Likewise.
24657 2007-01-11  Roger Sayle  <roger@eyesopen.com>
24659         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
24660         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
24662 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
24664         * configure.ac (strict1_warn): Rename to strict_warn.
24665         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
24666         cc_set_by_configure, quoted_cc_set_by_configure,
24667         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
24668         all_boot_languages, all_stagestuff): Remove.
24669         (target_list): Remove bootstrap targets.
24670         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
24671         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
24672         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
24673         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
24674         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
24675         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
24676         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
24677         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
24678         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
24679         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
24680         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
24681         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
24682         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
24683         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
24684         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
24685         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
24686         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
24687         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
24688         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
24689         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
24690         (mostlyclean): Adjust.
24691         (clean, distclean): Don't mention bootstrap stuff.
24692         * configure: Regenerate.
24693         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
24694         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
24695         treelang/config-lang.in (stagestuff): Remove.
24696         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
24697         stageprofile, stagefeedback, stagestuff): Remove mention.
24699 2007-01-11  Nick Clifton  <nickc@redhat.com>
24701         * config/mcore/predicates.md (mcore_general_movesrc_operand):
24702         Accept CONSTs.
24703         (mcore_general_movdst_operand): Do not accept CONST_INTs.
24704         (mcore_arith_K_S_operand): Run the test for the S constraint not
24705         the test for the M constraint.
24706         (mcore_addsub_operand): Do not accept integer values that are
24707         larger than 32 bits.
24708         * config/mcore/mcore.md: Remove unused constraints from split.
24709         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
24710         (addsi3): Likewise.
24711         (allocate_stack): Likewise.
24712         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
24713         operands to 32 bits.
24714         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
24715         INTVAL.
24716         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
24717         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
24718         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
24719         mcore_output_bclri, mcore_output_andn, output_inline_const,
24720         mcore_output_move, mcore_output_movedouble): Likewise.
24721         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
24722         (output_inline_const): Likewise.
24723         (output_inline_const): Fix format strings used in sprintf
24724         statements.
24725         * config/mcore/mcore-protos.h: Update prototypes for changed
24726         functions in mcore.c.
24727         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
24728         HOST_WIDE_INT and not int.
24729         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
24730         CONST_OK_FOR_N): Likewise.
24731         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
24732         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
24733         an INTVAL.
24735 2007-01-10  Jan Hubicka  <jh@suse.cz>
24737         * tree-vrp.c (remove_range_assertions): Release defs.
24738         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
24739         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
24741 2007-01-10  Paul Brook  <paul@codesourcery.com>
24743         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
24744         * config/arm/arm.md (mulsi3subsi): New insn.
24746 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
24748         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
24749         (tree_transform_and_unroll_loop): New.
24750         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
24751         Declare.
24753 2007-01-10  Robert Kennedy <jimbob@google.com>
24755         * fold-const.c (fold_comparison): Fold comparisons like (x *
24756         1000 < 0) to (x < 0).
24758 2007-01-10  Ian Lance Taylor  <iant@google.com>
24760         * tree-pretty-print.c (dump_generic_node): Print parentheses when
24761         operands have the same priority.
24763 2007-01-10  Tom Tromey  <tromey@redhat.com>
24765         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
24766         (fold_binary): Likewise.
24767         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
24768         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
24769         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
24770         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
24771         * langhooks.h (struct lang_hooks): Removed field
24772         'can_use_bit_fields_p'.
24774 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
24776         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
24778 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
24780         * function.c (get_last_funcdef_no): New function.
24781         * function.h (get_last_funcdef_no): Declare.
24782         * tree-inline.c (initialize_cfun): Add initialization.
24783         (tree_function_versioning): Cleanup.
24785 2007-01-10  Jan Hubicka  <jh@suse.cz>
24787         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
24788         PHIs.
24790 2007-01-10  Sa Liu  <saliu@de.ibm.com>
24791             Ben Elliston  <bje@au.ibm.com>
24793         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
24794         for SAVE_NONLOCAL and Pmode for any other save level.
24795         * spu-protos.h (spu_restore_stack_block): Declare.
24796         * spu.md (save_stack_block): Remove.
24797         (restore_stack_block): Call spu_restore_stack_block.
24798         * spu.c (spu_restore_stack_block): New function.
24799         (spu_expand_epilogue): Remove old comment.
24801 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
24803         PR tree-optimization/30322
24804         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
24805         (cand_value_at): Return the value as aff_tree.
24806         (may_eliminate_iv): Convert the bound from aff_tree to tree.
24807         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
24808         aff_combination_mult): New functions.
24809         (aff_combination_add): Use aff_combination_add_cst.
24810         (aff_combination_convert): Allow conversions to a wider type.
24811         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
24812         * tree-affine.h (aff_combination_mult): Declare.
24814 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
24816         * doc/tm.texi: Update documentation to reflect reality of exec
24817         and start file search behaviours. Update copyright year.
24818         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
24819         header file directories.
24821 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
24823         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
24824         (*cosxf2): Rename to cosxf2_i387.
24825         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
24826         using X87MODEF12 mode macro. Rename patterns to
24827         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
24828         for SSE math.
24829         (*cosdf2, *cossf2): Ditto.
24830         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
24831         to match extended input operands.
24832         (sincos<mode>3): New expander.
24833         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
24834         insn patterns and corresponding splitters.
24836 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
24838         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
24839         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
24841 2007-01-09  Nicolas Pitre  <nico@cam.org>
24843         PR target/30173
24844         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
24846 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
24848         * target.h (struct gcc_target): New field library_rtti_comdat.
24849         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
24850         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
24851         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
24852         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
24854 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
24856         * doc/invoke.texi (Optimize Options): Correct description of -O0.
24858 2007-01-08  Richard Guenther  <rguenther@suse.de>
24860         * tree.h (force_fit_type_double): Export.
24861         (force_fit_type): Remove.
24862         * fold-const.c (force_fit_type_double): New function.
24863         (force_fit_type): Remove.
24864         (int_const_binop): Use it.
24865         (fold_convert_const_int_from_int): Likewise.
24866         (fold_convert_const_int_from_real): Likewise.
24867         (fold_div_compare): Likewise.
24868         (fold_sign_changed_comparison): Likewise.
24869         (fold_unary): Likewise.
24870         (fold_negate_const): Likewise.
24871         (fold_abs_const): Likewise.
24872         (fold_not_const): Likewise.
24873         * c-common.c (shorten_compare): Use force_fit_type_double.
24874         * convert.c (convert_to_pointer): Likewise.
24876 2007-01-08  Richard Guenther  <rguenther@suse.de>
24878         * tree.h (build_int_cst_wide_type): Export.
24879         * tree.c (build_int_cst_wide_type): New function.
24880         (build_int_cst_wide): Fix comment.
24881         * builtins.c (fold_builtin_object_size): Use build_int_cst
24882         to build -1 or 0 of the correct type.  Use fit_double_type
24883         to check for overflow.
24884         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
24885         to build the mask.
24886         (decode_field_reference): Likewise.
24887         (all_ones_mask_p): Likewise.
24888         (native_interpret_int): Use build_int_cst_wide_type.
24889         (fold_binary): Use build_int_cst_type to build an all-ones
24890         value.
24891         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
24893 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
24895         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
24897 2007-01-09  Ben Elliston  <bje@au.ibm.com>
24899         * genautomata.c (STATS_OPTION): New option.
24900         (stats_flag): New flag.
24901         (gen_automata_option): Handle it.
24902         (initiate_automaton_gen): Ditto.
24903         (write_automata): Output statistics only if stats_flag is
24904         set. Likewise, output time statistics only if time_flag is set.
24905         * doc/md.texi (Processor pipeline description): Document new flag.
24907 2007-01-08  Richard Guenther  <rguenther@suse.de>
24909         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
24910         * tree.c (build_int_cst_type): Likewise.
24911         (size_in_bytes): Don't call force_fit_type on the result.
24912         (int_fits_type_p): Use fit_double_type.
24913         * fold-const.c (fit_double_type): New function.
24914         (force_fit_type): Use it.
24915         * tree.h (fit_double_type): Export.
24917 2007-01-08  Jan Hubicka  <jh@suse.cz>
24919         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
24920         * ipa.c (function_and_variable_visibility): Fix return type.
24922 2007-01-08  Richard Guenther  <rguenther@suse.de>
24924         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
24925         of offset to build the index.
24926         * tree-pretty-print.c (dump_generic_node): Don't build negated
24927         const just for printing.
24928         * c-pretty-print.c (pp_c_integer_constant): Likewise.
24929         * builtins.c (fold_builtin_int_roundingfn): Check if result
24930         fits the type by using force_fit_type and comparing the result.
24931         * predict.c (predict_loops): Use compare_tree_int for comparison.
24932         * tree.c (build_int_cst): Fall back to integer_type_node for
24933         NULL_TREE type.
24934         (build_int_cst_wide): Assert type is non-null.
24936 2007-01-08  Roberto Costa  <roberto.costa@st.com>
24938         * tree-vrp.c (extract_range_from_cond_expr): New.
24939         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
24940         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
24941         as expressions.
24942         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
24943         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
24944         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
24945         used as expressions.
24946         * tree-object-size.c (cond_expr_object_size): New.
24947         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
24949 2007-01-08  Jan Hubicka  <jh@suse.cz>
24951         * tree-ssa-forwprop.c (forward_propagate_into_cond,
24952         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
24953         statement.
24955 2007-01-08  Richard Guenther  <rguenther@suse.de>
24957         PR tree-optimization/23603
24958         * tree-vrp.c (set_value_range_to_truthvalue): New function.
24959         (extract_range_from_binary): Fall back to truthvalue instead of
24960         varying for TRUTH_*_EXPR.
24961         (extract_range_from_comparison): Fall back to truthvalue instead of
24962         varying.
24963         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
24964         if all visited PHI values were constant.
24966 2007-01-08  Jan Hubicka  <jh@suse.cz>
24968         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
24969         (cgraph_analyze_function): break out from ...
24970         (cgraph_finalize_compilation_unit): ... here.
24971         (cgraph_expand_function): Remove forgoten commented out line.
24972         (cgraph_optimize): Analyze functions.
24974 2007-01-08  Jan Hubicka  <jh@suse.cz>
24976         * tree-pas.h (TODO_remove_function): New flag.
24977         (TODO_update*): Renumber.
24978         (pass_ipa_increase_alignment,
24979         pass_ipa_function_and_variable_visibility): New passes.
24980         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
24981         (cgraph_function_and_variable_visibility): Move to ipa.c
24982         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
24983         cgraph_increase_alignment.
24984         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
24985         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
24986         calling tree-inline.
24987         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
24988         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
24989         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
24990         (gate_increase_alignment): New function.
24991         (pass_ipa_increase_alignment): New pass.
24992         * ipa.c: Inline tree-pass.h and timevar.h
24993         (function_and_variable_visibility): Move here from cgraphunit.c
24994         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
24995         * passes.c (init_optimization_passes): Add the two new passes.
24996         (execute_todo): Handle cgraph_remove_functions.
24998 2007-01-08  Nick Clifton  <nickc@redhat.com>
25000         * config/frv/predicates.md (reg_or_0_operand): Accept
25001         CONST_DOUBLEs.
25003 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
25005         * config/bfin/rtems.h, config/bfin/t-rtems: New.
25006         * config.gcc: Add bfin*-rtems*.
25008 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
25010         * c.opt: Add -flax-vector-conversions.
25011         * c-typeck.c (convert_for_assignment): Pass flag to
25012         vector_types_convertible_p to allow emission of note.
25013         (digest_init): Likewise.
25014         * c-opts.c: Handle -flax-vector-conversions.
25015         * c-common.c (flag_lax_vector_conversions): New.
25016         (vector_types_convertible_p): Unless -flax-vector conversions
25017         has been passed, disallow conversions between vectors with
25018         differing numbers of subparts and/or element types.  If such
25019         a conversion is disallowed, possibly emit a note on the first
25020         occasion only to inform the user of -flax-vector-conversions.
25021         The new last argument specifies this.
25022         * c-common.h (flag_lax_vector_conversions): New.
25023         (vector_types_convertible_p): Add extra argument.
25024         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
25025         char_type_node for V*QI type vectors.
25026         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
25027         Update to satisfy new typechecking rules.
25028         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
25029         C and C++ variants.
25030         * doc/invoke.texi (C Dialect Options): Document
25031         -flax-vector-conversions.
25033 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
25035         PR tree-optimization/29877
25036         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
25037         a register variable on the RHS to not be replaceable.
25039 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
25040         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
25041         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
25042         const_simm15, const_pow2, const_npow2): Added.
25043         * config/score/misc.md (insv, extv, extzv, movmemsi,
25044         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
25045         * config/score/score.c (score_address_cost, score_select_cc_mode):
25046         Added.
25047         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
25048         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
25049         Update score_print_operand.
25050         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
25051         Adjust register allocate order and update some macro define.
25052         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
25053         mdx_block_move_straight, mdx_block_move_loop_head,
25054         mdx_block_move_loop_body, mdx_block_move_loop_foot,
25055         mdx_block_move_loop, mdx_block_move): Added.
25056         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
25057         mdp_limm): Updated and fix some bug and typo.
25058         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
25059         (movsf, movdf, doloop_end): Added.
25061 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
25063         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
25064         config/arm/thumb2.md: Fix comment typos.
25065         * doc/extend.texi: Fix a typo.
25067 2007-01-07  Eric Christopher  <echristo@apple.com>
25069         * configure.ac: Check for __stack_chk_fail for darwin.
25070         * configure: Regenerate.
25072 2007-01-07  Richard Guenther  <rguenther@suse.de>
25074         * tree-vrp.c (extract_range_from_assert): CSE calls to
25075         compare_values where possible.
25076         (extract_range_from_unary_expr): Likewise.
25078 2007-01-07  Anatoly Sokolov <aesok@post.ru>
25080         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
25081         * config/avr/avr.c (call_insn_operand): Delete function.
25082         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
25083         instead of register number. Use predicates.
25084         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
25085         call_insn_operand): Add.
25087 2007-01-06  Jan Hubicka  <jh@suse.cz>
25089         * tree-pass.h (pass_build_cgraph_edges): Declare.
25090         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
25091         (visited_nodes): Remove.
25092         (cgraph_create_edges): Move to cgraphbuild.c; rename to
25093         build_cgrpah_edges; make visited_nodes local.
25094         (cgraph_process_new_functions): DO not call initialize_inline_failed.
25095         (record_references_in_initializer): Move to cgraphbuild.c
25096         (initialize_inline_failed, rebuild_cgraph_edges,
25097         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
25098         (verify_cgraph_node): Make visited_nodes local.
25099         (cgraph_analyze_function): Do not call cgraph_create_edges and
25100         initialize_inline_failed.
25101         (cgraph_expand_function): Do not call cgraph_lower_function;
25102         assert that function is already lowered.
25103         * Makefile.in (cgraphbuild.o): New.
25104         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
25105         at the end of lowering passes.
25107 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
25109         * ifcvt.c (cond_move_convert_if_block): New function, code
25110         factored out from...
25111         (cond_move_process_if_block): ...here.  Call the new function
25112         on the THEN and ELSE blocks.
25113         (merge_if_block): Do not copy global_live_at_end, merge_blocks
25114         already takes care of this.
25116 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25118         PR c/19978
25119         * tree.h (TREE_OVERFLOW_P): New.
25120         * c-typeck.c (parser_build_unary_op): Warn only if result
25121         overflowed and operands did not.
25122         (parser_build_binary_op): Likewise.
25123         (convert_for_assignment): Remove redundant overflow_warning.
25124         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
25126 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25128         * c-typeck.c (store_init_value): Split over two lines to follow
25129         the GNU coding style.
25131 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
25133         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
25134         __GXX_EXPERIMENTAL_CXX0X__.
25135         * doc/cpp.texi: Same.
25137 2007-01-05  Richard Guenther  <rguenther@suse.de>
25139         PR middle-end/27826
25140         * tree.c (get_narrower): Do not construct COMPONENT_REFs
25141         with mismatched types.  Instead explicitly build a
25142         conversion NOP_EXPR.
25144 2007-01-05  Ian Lance Taylor  <iant@google.com>
25146         * c-common.c (decl_with_nonnull_addr_p): New function.
25147         (c_common_truthvalue_conversion): Call it.
25148         * c-typeck.c (build_binary_op): Likewise.
25149         * c-common.h (decl_with_nonnull_addr_p): Declare.
25151 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
25153         PR c/30360
25154         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
25155         denom against 0.0.
25157 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
25159         * doc/install.texi (Final install): Document the fact that
25160         the GNAT runtime should not be stripped.
25162 2007-01-04  Jan Hubicka  <jh@suse.cz>
25164         * tree-inline.c (fold_marked_statements): Update operand caches
25165         and EH after folding
25167 2007-01-04  Ian Lance Taylor  <iant@google.com>
25169         * c-common.c (check_function_nonnull): Whitespace fix.
25171 2007-01-04  Jan Hubicka  <jh@suse.cz>
25173         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
25174         comitted older version of patch.
25175         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
25176         function, celanup cfg and collect garbage.
25178 2007-01-04  Mike Stump  <mrs@apple.com>
25180         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
25181         (clean): Likewise.
25183 2007-01-04  Eric Christopher  <echristo@apple.com>
25185         * libgcc2.c (__bswapsi2): Use SItype.
25186         (__bswapdi2): Use DItype.
25187         * libgcc2.h: Update for above.
25189 2007-01-04  Paul Brook  <paul@codesourcery.com>
25191         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
25192         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
25193         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
25194         umulsidi3, umulsidi3adddi, smulsi3_highpart,
25195         umulsi3_highpart): Make conditional on !arm_arch6.
25196         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
25197         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
25198         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
25199         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
25200         umulsi3_highpart_v6): New insns.
25202 2007-01-04  Roger Sayle  <roger@eyesopen.com>
25204         * fold-const.c (fold_convert): When casting an expression to void,
25205         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
25206         have a type.  Instead of attempting to build a NOP_EXPR, return
25207         these "special" trees directly.
25209 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
25211         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
25212         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
25213         rs6000_cost->fp not 0 as adjustment for outer NEG.
25215 2007-01-04  Jan Hubicka  <jh@suse.cz>
25217         * cgraph.c (cgraph_release_function_body): New function.
25218         (cgraph_remove_node): Use it.
25219         * cgraph.h (cgraph_release_function_body): Declare.
25220         * cgraphunit.c (cgraph_expand_function): Use it.
25221         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
25222         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
25223         is initialized and while compilation of other function is running.
25224         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
25225         statement CFG annotations from here to ...
25226         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
25228 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
25230         * cfgloop.h (enum li_flags): Make the constants powers of two.
25232 2007-01-04  Jan Hubicka  <jh@suse.cz>
25234         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
25235         set.
25236         (fold_marked_statements): New function.
25237         (optimize_inline_calls, tree_function_versioning): Fold new statements.
25238         * tree-inline.h (copy_body_data): Add statements_to_fold.
25240 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
25242         * config.gcc: Mention libgcc/config.host.
25243         * Makefile.in: Update comments mentioning libgcc.
25244         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
25245         (all.cross, start.encap, rest.encap, rest.cross): Update
25246         dependencies for libgcc move.
25247         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
25248         (clean-target, clean-target-libgcc): Delete.
25249         (srcdirify, GCC_EXTRA_PARTS): New macros.
25250         (libgcc-support, libgcc.mvars): New rules.
25251         (distclean): Remove mention of mklibgcc.
25252         (install): Don't reference INSTALL_LIBGCC.
25253         (install-common): Don't reference EXTRA_PARTS.
25254         (install-libgcc, install-multilib): Delete rules.
25255         * mklibgcc.in: Delete file.
25256         * doc/configfiles.texi: Don't mention mklibgcc.
25258         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
25259         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
25260         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
25261         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
25262         (mklibgcc, ldblspecs): Likewise.
25264         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
25265         (posixpre.def): Use $(T).
25266         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
25267         (SHLIB_SRC, SHLIB_INSTALL): Delete.
25268         (SHLIB_LINK): Make dummy.
25269         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
25271         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
25273         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
25274         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
25275         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
25276         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
25278         * configure.ac (all_outputs): Remove mklibgcc.
25279         * configure: Regenerated.
25281 2007-01-03  Josh Conner  <jconner@apple.com>
25283         PR middle-end/29683
25284         * calls.c (compute_argument_addresses): Set stack and stack_slot
25285         for partial args, too.
25286         (store_one_arg): Use locate.size.constant for the size when
25287         generating a save_area.
25289 2007-01-03  Robert Kennedy <jimbob@google.com>
25291         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
25292         whose definitions are deleted due to basic block merging.
25294 2007-01-03  Paul Brook  <paul@codesourcery.com>
25296         PR target/16634
25297         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
25298         functions.
25299         (use_return_insn): Return 0 for Thumb interrupt functions.
25300         (print_multi_reg): Add rfe argument for IRQ returns.
25301         (arm_output_epilogue): Pop interrupt return address directly into PC.
25302         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
25304 2007-01-03  Paul Brook  <paul@codesourcery.com>
25306         Merge from sourcerygxx-4_1.
25307         * config/arm/thumb2.md: New file.
25308         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
25309         Thumb-2.
25310         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
25311         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
25312         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
25313         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
25314         tables.
25315         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
25316         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
25317         comptibility.
25318         * config/arm/ieee754-sf.S: Ditto.
25319         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
25320         (thumb1_base_register_rtx_p): ... to this.
25321         (thumb_index_register_rtx_p): Rename...
25322         (thumb1_index_register_rtx_p): ... to this.
25323         (thumb_output_function_prologue): Rename...
25324         (thumb1_output_function_prologue): ... to this.
25325         (thumb_legitimate_address_p): Rename...
25326         (thumb1_legitimate_address_p): ... to this.
25327         (thumb_rtx_costs): Rename...
25328         (thumb1_rtx_costs): ... to this.
25329         (thumb_compute_save_reg_mask): Rename...
25330         (thumb1_compute_save_reg_mask): ... to this.
25331         (thumb_final_prescan_insn): Rename...
25332         (thumb1_final_prescan_insn): ... to this.
25333         (thumb_expand_epilogue): Rename...
25334         (thumb1_expand_epilogue): ... to this.
25335         (arm_unwind_emit_stm): Rename...
25336         (arm_unwind_emit_sequence): ... to this.
25337         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
25338         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
25339         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
25340         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
25341         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
25342         thumb2_output_casesi): New functions.
25343         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
25344         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
25345         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
25346         THUMB2_WORK_REGS): Define.
25347         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
25348         arm_condexec_mask, arm_condexec_masklen)): New variables.
25349         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
25350         (arm_override_options): Check new CPU capabilities.
25351         Set new architecture flag variables.
25352         (arm_isr_value): Handle v7m interrupt functions.
25353         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
25354         Thumb-2.
25355         (const_ok_for_arm): Handle Thumb-2 constants.
25356         (arm_gen_constant): Ditto.  Use movw when available.
25357         (arm_function_ok_for_sibcall): Return false for v7m interrupt
25358         functions.
25359         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
25360         (thumb_find_work_register, arm_load_pic_register,
25361         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
25362         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
25363         print_multi_reg, output_mov_long_double_fpa_from_arm,
25364         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
25365         output_mov_double_fpa_from_arm, output_move_double,
25366         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
25367         output_return_instruction, arm_output_function_prologue,
25368         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
25369         arm_output_mi_thunk, thumb_set_return_address): Ditto.
25370         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
25371         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
25372         (arithmetic_instr, shift_op): Use arm_shift_nmem.
25373         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
25374         '!' and 'L'.
25375         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
25376         (thumb_expand_prologue): Use thumb_set_frame_pointer.
25377         (arm_file_start): Output directive for unified syntax.
25378         (arm_unwind_emit_set): Handle stack alignment instruction.
25379         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
25380         Add v6t2, v7, v7a, v7r and v7m.
25381         (RETLDM): Add Thumb-2 code.
25382         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
25383         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
25384         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
25385         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
25386         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
25387         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
25388         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
25389         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
25390         ADJUST_INSN_LENGTH): Define.
25391         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
25392         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
25393         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
25394         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
25395         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
25396         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
25397         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
25398         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
25399         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
25400         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
25401         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
25402         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
25403         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
25404         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
25405         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
25406         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
25407         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
25408         cortex-m3.
25409         * config/arm/arm-tune.md: Regenerate.
25410         * config/arm/arm-protos.h: Update prototypes.
25411         * config/arm/vfp.md: Enable patterns for Thumb-2.
25412         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
25413         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
25414         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
25415         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
25416         * config/arm/libunwind.S: Add Thumb-2 code.
25417         * config/arm/constraints.md: Update include Thumb-2.
25418         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
25419         * config/arm/ieee754-df.S: Ditto.
25420         * config/arm/bpabi.S: Ditto.
25421         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
25422         * config/arm/predicates.md (low_register_operand,
25423         low_reg_or_int_operand, thumb_16bit_operator): New.
25424         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
25425         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
25426         * config/arm/t-arm-elf: Add armv7 multilib.
25427         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
25428         Include thumb2.md.
25429         (UNSPEC_STACK_ALIGN, ce_count): New.
25430         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
25431         arm_zero_extendsidi2, arm_zero_extendqidi2): New
25432         insns/expanders.
25433         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
25434         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
25435         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
25436         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
25437         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
25438         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
25439         insns.
25440         * doc/extend.texi: Document ARMv7-M interrupt functions.
25441         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
25443 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
25445         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
25446         (struct _Unwind_Context): Rename args_size to flags, remove
25447         signal_frame field, add a new args_size field and version field.
25448         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
25449         _Unwind_IsExtendedContext): New inline functions.
25450         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
25451         Assume by_value array is only present if _Unwind_IsExtendedContext.
25452         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
25453         _Unwind_IsSignalFrame.
25454         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
25455         (uw_update_context_1): Use _Unwind_SetSignalFrame.
25456         (uw_init_context_1): Initialize context->flags to
25457         EXTENDED_CONTEXT_BIT.
25458         * config/rs6000/linux-unwind.h (frob_update_context): Use
25459         _Unwind_SetSignalFrame.
25461 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25463         PR middle-end/30353
25464         * gimplify.c (gimplify_modify_expr_complex_part): Move below
25465         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
25466         the value.
25468 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
25470         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
25471         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
25472         RET, AT_SP): Remove.
25473         * config/i386/i386.md (*sse_prologue_save_insn): Use return
25474         instead of RET.
25476         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25477         * cfgbuild.c (find_basic_blocks): Likewise.
25478         * cfgrtl.c (rtl_create_basic_block): Likewise.
25479         * function.c (temp_slots_at_level): Likewise.
25480         * reg-stack.c (stack_regs_mentioned): Likewise.
25481         * regclass.c (allocate_reg_info): Likewise.
25482         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25483         set_bb_for_stmt, move_block_to_fn): Likewise.
25484         * tree-complex.c (tree_lower_complex): Likewise.
25485         * vec.h (VEC_safe_grow_cleared): New.
25487         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
25489 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
25491         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
25492         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
25493         to loop_version.
25494         * cfgloopmanip.c (scale_loop_frequencies): Export.
25495         (loopify): Scale the frequencies by prescribed coefficients.
25496         (set_zero_probability): New function.
25497         (duplicate_loop_to_header_edge): Improve updating of frequencies.
25498         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
25499         and frequencies according to arguments.
25500         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
25501         correctly.
25502         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
25503         * modulo-sched.c (sms_schedule): Set probabilities for entering
25504         versioned loop correctly.
25505         * tree-vect-transform.c (vect_transform_loop): Ditto.
25506         * cfgloop.h (loopify, loop_version): Declaration changed.
25507         (scale_loop_frequencies): Declared.
25509 2007-01-02  Jan Hubicka  <jh@suse.cz>
25511         * cgraph.c: Include tree-flow.h
25512         (cgraph_add_new-function): Handle IPA_SSA mode; execute
25513         early_local_passes.
25514         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
25515         * tree-pass.h (pass_all_early_optimizations): Declare.
25516         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
25517         early_local_passes.
25518         (cgraph_analyze_function): Do early_local_passes.
25519         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
25520         Do not add referenced vars.
25521         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
25522         SSA form.
25523         (gate_all_early_local_passes): New gate.
25524         (pass_early_local_passes): Use new gate.
25525         (execute_early_local_optimizations): New functions.
25526         (gate_all_early_optimizations): New gate.
25527         (pass_all_early_optimizations): New pass.
25528         (execute_free_datastructures): Free SSA only when initialized.
25529         (gate_init_datastructures): Init only when optimizing.
25530         (tree_lowering_passes): Do early local passes when called late.
25531         * tree-profile.c (do_tree_profiling): Don't profile functions added
25532         late.
25533         (do_early_tree_profiling, pass_early_tree_profile): Kill.
25534         * tree-cfg.c (update_modified_stmts): Do not update when operands are
25535         not active.
25536         * passes.c (init_optimizations_passes): Reorder so we go into SSA
25537         during early_local_passes.
25538         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
25541 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
25543         * Makefile.in: Update copyright year.
25545 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
25547         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
25548         in $(lang_checks) and check-consistency targets.
25550 2007-01-02  Jan Hubicka  <jh@suse.cz>
25552         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
25553         Do not add referenced vars.
25554         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
25555         are not active.
25556         * passes.c (init_optimization_passes): Put mudflap_2 after
25557         free_datastructures.
25559 2007-01-02  Jan Hubicka  <jh@suse.cz>
25561         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
25562         Set NOTHROW flag on call statements proved to be nothrow.
25563         Update statement of local calls so new pure/const functions are
25564         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
25565         goto receivers.
25566         (tree_rest_of_compilation): Register hooks and initialize bitmap
25567         early. Do not set after_inlining flag.
25569 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
25571         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
25572         HOST_BITS_PER_LONGLONG
25574 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
25576         PR c/19977
25577         * c-typeck.c (store_init_value): Don't emit pedantic overflow
25578         warning for non-static initializers.
25580 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
25582         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
25583         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
25584         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
25585         Always use set_unique_reg_note to add REG_EQUAL notes.
25587 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25589         Revert:
25590         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25592         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25593         * cfgbuild.c (find_basic_blocks): Likewise.
25594         * cfgrtl.c (rtl_create_basic_block): Likewise.
25595         * function.c (temp_slots_at_level): Likewise.
25596         * reg-stack.c (stack_regs_mentioned): Likewise.
25597         * regclass.c (allocate_reg_info): Likewise.
25598         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25599         set_bb_for_stmt, move_block_to_fn): Likewise.
25600         * tree-complex.c (tree_lower_complex): Likewise.
25601         * vec.h (VEC_safe_grow_cleared): New.
25603 2007-01-02  Ian Lance Taylor  <iant@google.com>
25605         * c-common.c (c_common_truthvalue_conversion): When warning about
25606         using an assignment as a truth value, set TREE_NO_WARNING.
25608 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25610         PR middle-end/7651
25611         * c.opt (Wold-style-declaration): New.
25612         * doc/invoke.texi (C-only Warning Options): New.
25613         (Wold-style-declaration): Document it.
25614         (Wextra): Enabled by -Wextra.
25615         * c-opts.c (c_common_post_options): Enabled by -Wextra.
25616         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
25617         -Wold-style-declaration.
25619 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25621         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25622         * cfgbuild.c (find_basic_blocks): Likewise.
25623         * cfgrtl.c (rtl_create_basic_block): Likewise.
25624         * function.c (temp_slots_at_level): Likewise.
25625         * reg-stack.c (stack_regs_mentioned): Likewise.
25626         * regclass.c (allocate_reg_info): Likewise.
25627         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25628         set_bb_for_stmt, move_block_to_fn): Likewise.
25629         * tree-complex.c (tree_lower_complex): Likewise.
25630         * vec.h (VEC_safe_grow_cleared): New.
25632 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
25634         * c-common.c (c_common_nodes_and_builtins): Since variants of
25635         void_type_node get built before it is given a name, we need to
25636         give those variants the name, too.
25637         (complete_array_type): We need to work with the canonical main
25638         type of the array, from which we will build the qualified version.
25639         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
25640         * print-tree.c (print_node): Display canonical type information
25641         for each type.
25642         * stor-layout.c (layout_type): When we don't know the
25643         alignment of a type for which we're building an array, we end up
25644         guessing wrong, so make the type require structural equality.
25645         * tree.c (make_node_stat): When we build a new type, it is its
25646         own canonical type.
25647         (build_type_attribute_qual_variant): When building an attribute
25648         variant, its canonical type is the non-attribute variant. However,
25649         if the attributes are target-dependent and they differ, we need to
25650         use structural equality checks for this type.
25651         (build_qualified_type): A qualified type is not equivalent to its
25652         unqualified variant; set the canonical type appropriately.
25653         (build_distinct_type_copy): When building a distinct type from
25654         another type, the new type is its own canonical type.
25655         (build_variant_type_copy): When building a new type variant, we
25656         assume that it is equivalent to the original type.
25657         (build_pointer_type_for_mode): When building a pointer type, also
25658         build a canonical type pointer.
25659         (build_reference_type_for_mode): When building a reference type,
25660         also build a canonical type reference.
25661         (build_index_type): When we can't hash an index type (e.g.,
25662         because its maximum value is negative), the index type requires
25663         structural equality tests.
25664         (build_array_type): Build the canonical form of an array type.
25665         (build_function_type): Function types require structural equality,
25666         because they contain default arguments, attributes, etc.
25667         (build_method_type_directly): Ditto for method types.
25668         (build_offset_type): Build the canonical offset type.
25669         (build_complex_type): Build the canonical vector type.
25670         (make_vector_type): Build the canonical vector type.
25671         * tree.h (TYPE_CANONICAL): New.
25672         (TYPE_STRUCTURAL_EQUALITY_P): New.
25673         (SET_TYPE_STRUCTURAL_EQUALITY): New.
25674         (struct tree_type): Added "canonical" field.
25675         * params.h (VERIFY_CANONICAL_TYPES): New.
25676         * doc/c-tree.texi (TYPE_CANONICAL): Document.
25677         (TYPE_STRUCTURAL_EQUALITY_P): Document.
25678         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
25679         * doc/invoke.texi (verify-canonical-types): Document --param
25680         parameter for verifying canonical types.
25682 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25684         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
25685         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
25686         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
25687         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
25688         tm_file.
25689         * config/rs6000/e500.h: New.
25690         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
25691         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
25692         Remove.
25693         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
25694         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
25695         TARGET_E500_DOUBLE): Remove.
25696         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
25697         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
25698         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
25699         * config/rs6000/rs6000.c (rs6000_override_options): Use
25700         CHECK_E500_OPTIONS.
25702 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25704         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
25705         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
25706         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
25707         rs6000_emit_cmove): Don't check TARGET_E500.
25708         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
25709         sordered): Don't check TARGET_E500.
25711 2007-01-01  Eric Christopher  <echristo@apple.com>
25713         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
25714         HARD_REGISTER_NUM_P.
25716 2007-01-01  Roger Sayle  <roger@eyesopen.com>
25718         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
25719         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
25720         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
25721         eq/ne Y".
25723 2007-01-01  Mike Stump  <mrs@apple.com>
25725         * configure.ac: Remove support for building with Apple's gcc-3.1.
25727 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25729         PR middle-end/30311
25730         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
25731         REG is a hard register.  Do not modify REG before calling
25732         subreg_nregs.
25733         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
25734         multiple of the size of YMODE for certain lowpart cases.
25736 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25738         PR middle-end/30253
25739         * gimplify (voidify_wrapper_expr): Update for
25740         GIMPLE_MODIFY_STMT.
25742 2007-01-01  Andreas Schwab  <schwab@suse.de>
25744         PR target/29166
25745         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
25746         save of BR0 in extra_spill_size instead of spill_size.
25747         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
25748         area.
25749         (ia64_expand_epilogue): Restore BR0 from its new location.
25751 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25753         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
25754         Use a temporary variable if the left hand side is not a gimple
25755         register.
25757 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25759         * gimplify.c (gimplify_return_expr): Make the temporary variable
25760         for the return expression, a gimple register variable.
25762 2007-01-01  Jan Hubicka  <jh@suse.cz>
25764         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
25765         INSN_LIST.
25767 2007-01-01  Mike Stump  <mrs@apple.com>
25769         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
25770         .literal16.
25771         * config/darwin.c (machopic_select_rtx_section): Use
25772         HAVE_GAS_LITERAL16.
25773         (darwin_mergeable_constant_section): Likewise.
25774         * configure: Regenerate.
25775         * config.in: Regenerate.
25777 2007-01-01  Jan Hubicka  <jh@suse.cz>
25778             Andrew Pinski  <pinskia@gmail.com>
25780         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
25781         before starting IPA passes.