2008-01-10 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / ChangeLog
blob27421b5672cc4134bdb6760ff2b5e336e14191e2
1 2008-01-10  Vladimir Makarov  <vmakarov@redhat.com>
3         * reload1.c (compute_use_by_pseudos): Permits spilled registers in
4         FROM.
5         (temp_pseudo_reg_arr): New variable.
6         (reload): Use instead temp_pseudo_reg_arr of pseudo_regs.  Move
7         freeing to the function end.  Don't clear spilled_pseudos for IRA.
8         Restore original insn chain for IRA.
9         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
10         (count_pseudo, count_spilled_pseudo): Check spilled pseudos.
11         (alter_reg): Set up spilled_pseudos.
12         (finish_spills): Set up pseudo_previous_regs only for spilled
13         pseudos.  Call reassign_pseudos once for all spilled pseudos,
14         pass more arguments.  Don't clear live_throughout and dead_or_set
15         for spilled pseudos.
17         * global.c (reg_becomes_live, build_insn_chain): Don't ignore
18         spilled pseudos for IRA.
19         
20         * caller-save.c (calculate_local_save_info,
21         save_call_clobbered_regs): Ignore spilled pseudos for IRA.
22         
23         * toplev.c (backend_init_target): Call init_ira.
24         (backend_init): Move call of init_ira_once before
25         backend_init_target.
26         
27         * ira.h (init_ira, sort_insn_chain, mark_memory_move_deletion):
28         New function prototypes.
29         (retry_ira_color): Rename to reassign_pseudos.  Change
30         signature.
32         * ira-int.h (allocno): New member dont_reassign_p.
33         (ALLOCNO_DONT_REASSIGN_P): New macro.
34         (memory_move_cost): Change element type.
35         (register_move_cost): Change type.
36         (register_may_move_in_cost, register_may_move_out_cost,
37         reg_class_intersect): New arrays.
38         (important_class_nums): Fix element type.
39         (hard_reg_not_in_set_p): Make it static inline.
40         (init_register_move_cost, init_ira_costs): New function
41         prototypes.
42         (allocno_conflict_index): Remove.
43         (allocate_and_set_costs, allocate_and_copy_costs,
44         allocate_and_set_or_copy_costs): New static inline functions.
45         
46         * ira-build.c (compress_allocno_conflict_vec,
47         compress_conflict_vecs): New functions.
48         (allocno_conflict_index): Remove.
49         (allocno_conflict_check, curr_allocno_conflict_check_tick): New
50         variables.
51         (propagate_info_to_cap): Use allocate_and_copy_costs.
52         (check_and_add_conflicts): Don't call allocno_conflict_index.
53         (ira_flattening): Add some assertions.  Check that cost vectors
54         have been allocated.  Don't call allocno_conflict_index.  Call
55         compress_conflict_vecs.
57         * ira.c (memory_move_cost, register_move_cost): Change types.
58         (register_may_move_in_cost, register_may_move_out_cost,
59         strict_class_subset_p): New variables.
60         (setup_class_subset_and_move_costs): Rename to
61         setup_class_subset_and_memory_move_costs.  Remove
62         register_move_cost setup.  Don't consider no_unit_alloc_regs.  Add
63         strict_class_subset_p setup.
64         (setup_reg_class_intersect): Rename to
65         setup_reg_class_intersect_union.  Don't consider
66         no_unit_alloc_regs.  Add reg_class_union setup.
67         (hard_reg_not_in_set_p): Move to ira-int.h.
68         (setup_reg_subclasses): Use no_unit_alloc_regs instead of
69         fixed_reg_set.  Don't consider no_unit_alloc_regs.
70         (important_class_nums): Fix element type.
71         (setup_cover_classes): Use no_unit_alloc_regs instead of
72         fixed_reg_set.  Don't consider no_unit_alloc_regs.
73         (setup_class_translate): Ditto.
74         (reg_class_union): New variable.
75         (init_register_move_cost, free_register_move_costs): New
76         functions.
77         (init_ira_once): Initialize register_move_cost,
78         register_may_move_in_cost, register_may_move_out_cost.  Move some
79         code to init_ira.
80         (init_ira): New function.  Move some code from init_ira_once.
81         Call free_register_move_costs and init_ira_costs.
82         (calculate_allocation_cost): Check allocation of allocno hard reg
83         cost vector.
84         (basic_block_order_nums): New variable.
85         (chain_freq_compare, chain_bb_compare, sort_insn_chain): New
86         functions.
87         (ira): Call sort_insn_chain.
89         * ira-color.c (allocno_coalesced_p): New variable.
90         (update_copy_costs): Use allocate_and_set_or_copy_costs.
91         (assign_hard_reg): Clear and use
92         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
93         Use allocate_and_copy_costs.  Use allocno cover class cost if the
94         hard register cost vector is not allocated.
95         (get_coalesced_allocnos_best_class_and_freq): Use
96         reg_class_intersect instead of reg_class_subintersect.
97         (add_allocno_to_ordered_bucket): Use strict_class_subset_p.
98         (push_allocno_to_stack): Clear and use
99         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
100         (setup_allocno_left_conflicts_num): Don't setup
101         ALLOCNO_UPDATED_HARD_REG_COSTS and
102         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.  Clear and use
103         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
104         (put_allocno_into_bucket): Don't setup
105         ALLOCNO_UPDATED_HARD_REG_COSTS and
106         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
107         (coalesced_allocno_conflict_p): Clear and use
108         processed_coalesced_allocno_bitmap only if allocno_coalesced_p.
109         (coalesce_allocnos): Setup allocno_coalesced_p.
110         (color_allocnos): Add processing reg class NO_REGS.
111         (color_pass): Propagate assignment of spilled allocno not
112         mentioned in the subregion for the mixed algorithm.  Use
113         allocate_and_set_costs.
114         (move_spill_restore, mark_allocation_change): Check unallocated
115         hard reg cost vectors.
116         (setup_curr_costs): Don't setup ALLOCNO_UPDATED_HARD_REG_COSTS and
117         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.  Use
118         allocate_and_set_or_copy_costs.
119         (mark_memory_move_deletion, allocno_reload_assign,
120         pseudo_reg_compare, reassign_pseudos): New functions.
121         (retry_ira_color): Remove.
122         
123         * ira-conflicts.c (add_insn_allocno_copies): Use
124         allocate_and_set_costs.
125         (allocno_conflict_p): Simplify the code.
126         
127         * ira-costs.c: Rename reg_class_subunion to reg_class_union
128         everywhere.
129         (cost_classes, cost_classes_num, cost_class_nums,
130         max_struct_costs_size): New variables.
131         (copy_cost): Use init_register_move_cost instead of
132         init_move_cost.
133         (record_reg_classes): Ditto.  Use cost_classes and
134         cost_classes_num instead of important_classes and
135         important_classes_num.  Use register_may_move_{in,out}_cost
136         instead of may_move_{in,out}_cost.  Check reg class intersection
137         for alt_cost.
138         (record_address_regs): Use init_register_move_cost instead of
139         init_move_cost.  Use cost_classes and cost_classes_num instead of
140         important_classes and important_classes_num.  Use
141         register_may_move_in_cost instead of may_move_in_cost.
142         (scan_one_insn): Use cost_classes_num instead of
143         important_classes_num.
144         (print_costs): Use cost_classes and cost_classes_num instead of
145         important_classes and important_classes_num.
146         (find_allocno_class_costs): Initialize cost_classes and
147         cost_class_nums.  Use cost_classes and cost_classes_num instead of
148         important_classes and important_classes_num.
149         (process_bb_node_for_hard_reg_moves): Use allocate_and_set_costs.
150         (setup_allocno_cover_class_and_costs): Use cost_classes and
151         cost_classes_num instead of important_classes and
152         important_classes_num.
153         (init_ira_costs_once): Move some code to init_ira_costs.  Initiate
154         cost_classes.
155         (free_ira_costs: New function.  Move some code from
156         finish_ira_costs_once.
157         (init_ira_costs): New function.  Move some code from
158         init_ira_costs_once.  Use max_struct_costs_size instead of
159         struct_costs_size.  Call free_ira_costs.  Allocate cost_classes.
160         (finish_ira_costs_once): Move some code to finish_ira_costs.  Call
161         free_ira_costs.
162         (ira_costs): Use max_struct_costs_size instead of
163         struct_costs_size.  Use allocate_and_set_costs.
165         * ira-emit.c (modify_move_list): Remove allocation of hard reg
166         cost vectors.
168         * ira-lives.c (process_single_reg_class_operands): Add new
169         parameter freq.  Calculate costs basing on the frequency.
170         (process_bb_node_lives): Pass the frequency to
171         process_single_reg_class_operands.
172         
173 2007-12-17  Vladimir Makarov  <vmakarov@redhat.com>
175         * doc/invoke.texi (fira-algoirthm): Remove prioirity coloring.
176         Make mixed the default.
178         * flags.h (ira_algorithm): Remove IRA_ALGORITHM_PRIORITY.
180         * ira-color.c (priority_coloring):  Remove.
181         (do_coloring): Don't call priority_coloring.
183         * opts.c (common_handle_option): Remove priority coloring option.
185         * toplev.c (flag_ira_algorithm): Assign IRA_ALGORITHM_MIXED.
186         
187         * ira-build.c (check_and_add_conflicts, ira_flattening): Increase
188         threshold for internal_flag_ira_verbose.
189         
190 2007-12-17  Vladimir Makarov  <vmakarov@redhat.com>
192         * common.opt (fira-assign-after-call-split, fira-biased-coloring,
193         fira-split-around-calls): Remove.
194         (fdump-simple-rtl, fira-verbose): New options.
195         (fira, fira-coalesce): Initiate by 0.
197         * opts.c (common_handle_option):  Process flag_ira_verbose.
199         * flags.h (flag_ira_verbose): New external definition.
201         * toplev.h (flag_ira_assign_after_call_split,
202         flag_ira_biased_coloring, flag_ira_split_around_calls):  Remove.
204         * toplev.c (flag_ira_verbose): New external declaration.
205         (finalize): Call finish_ira_once.
207         * print-rtl.c (flag_simple):  Rename to flag_dump_simple_rtl.
209         * doc/invoke.texi (-fno-ira-assign-after-call-split,
210         -fira-biased-coloring, -fno-ira-split-around-calls):  Remove.
211         (-fdump-simple-rtl, -fira-verbose): New options.
213         * caller-save.c (insert_restore, insert_save): Use
214         adjust_address_nv instead of adjust_address.  Check the mode by
215         reg_save_code.
217         * ira-call.c: Remove file.
219         * ira-lives.c: New file.
221         * Makefile.in (ira-live.o): Add
222         (ira-call.o): Remove.
223         (IRA_INT_H): Add alloc-pool.h.
225         * ira.h (finish_ira_once): New external definition.
227         * ira-int.h (internal_flag_ira_verbose, alloc_pool allocno_pool,
228         copy_pool, allocno_live_range_pool, ira_loop_tree_height,
229         max_point, start_point_ranges, finish_point_ranges,
230         prohibited_mode_move_regs, important_class_nums,
231         ira_curr_regno_allocno_map, allocno_set_words): New external
232         definitions.
233         (loop_tree_node_t, allocno_live_range_t): New typedefs.  Use them
234         everywhere.
235         (ira_loop_tree_node): Rename to loop_tree_node.
236         (loop_tree_node): New member level.
237         (allocno_live_range): New structure.
238         (allocno): New members nrefs, live_ranges,
239         total_conflict_hard_regs, conflict_allocnos_num,
240         total_conflict_allocnos_num, mem_optimized_dest,
241         mem_optimized_dest_p, total_no_stack_reg_p.  Remove members
242         conflict_allocno_vec_active_size and original_memory_cost.  Rename
243         member curr_hard_reg_costs to updated_hard_reg_costs.
244         (ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
245         ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_CONFLICT_ALLOCNOS_NUM,
246         ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM, ALLOCNO_NREFS,
247         ALLOCNO_MEM_OPTIMIZED_DEST, ALLOCNO_MEM_OPTIMIZED_DEST_P,
248         ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_LIVE_RANGES): New access
249         macros.
250         (ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
251         ALLOCNO_ORIGINAL_MEMORY_COST): Remove.
252         (ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS): Rename to
253         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
254         (allocno_copy): New member loop_tree_node.
255         (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move from
256         ira-conflicts.c.
257         (SET_ALLOCNO_SET_BIT, CLEAR_ALLOCNO_SET_BIT,
258         TEST_ALLOCNO_SET_BIT): New macros.
259         (ira_reallocate, allocno_conflict_index, add_allocno_conflict,
260         create_allocno_live_range, finish_allocno_live_range,
261         add_allocno_copy_to_list, swap_allocno_copy_ends_if_necessary,
262         remove_allocno_copy_from_list, add_allocno_copy, ira_flattening,
263         finish_ira_costs_once, rebuild_start_finish_chains,
264         print_live_range_list, debug_live_range_list,
265         debug_allocno_live_ranges, debug_live_ranges,
266         create_allocno_live_ranges, finish_allocno_live_ranges,
267         allocno_conflict_p, loop_edge_freq): New external function
268         definitions.
269         (hard_reg_in_set_p, original_regno_call_crossed_p,
270         ira_max_regno_before, ira_max_regno_call_before): Remove.
271         (traverse_loop_tree): Add new parameter type.
272         (create_copy): Ditto.
273         (debug_conflicts, ira_emit, add_allocno_copy): Add parameter.
274         (debug_ira_call_data, split_around_calls, get_around_calls_regno):
275         Remove.
276         
277         * ira.c (setup_prohibited_mode_move_regs): New function.
278         (internal_flag_ira_verbose, allocno_pool, copy_pool,
279         allocno_live_range_pool, important_class_nums): New external
280         variables.
281         (IRA_NO_OBSTACK): Uncomment it.
282         (ira_reallocate): New function.
283         (setup_cover_classes): Set up important_class_nums.
284         (finish_ira_once): New function.
285         (prohibited_mode_move_regs,
286         prohibited_mode_move_regs_initialized_p): New global variables.
287         (setup_prohibited_mode_move_regs): New function.
288         (setup_reg_renumber): Remove parameters.
289         (setup_allocno_assignment_from_reg_renumber): Rename to
290         setup_allocno_assignment_flags.  Set up ALLOCNO_ASSIGNED_P.
291         (calculate_allocation_cost): Use ALLOCNO_UPDATED_MEMORY_COST.
292         (ira_max_regno_before, ira_max_regno_call_before): Remove.
293         (ira): Set up internal_flag_ira_verbose.  Call
294         setup_prohibited_mode_move_regs.  Create and destroy allocno,
295         copy, and live range pools.  Remove original_regno_call_crossed_p.
296         Report major passes.  Use argument for ira_emit.  Call
297         ira_flattening and df_analyze.  Remove live range splitting around
298         calls.
299         
300         * ira-build.c (setup_loop_tree_level, rebuild_regno_allocno_maps,
301         expand_calls, compress_calls, allocno_conflict_index,
302         add_to_allocno_conflict_vec, propagate_info_to_cap,
303         copy_allocno_live_range, copy_allocno_live_range_list,
304         finish_allocno, finish_copy,
305         propagate_info_to_loop_tree_node_caps, merge_ranges,
306         common_loop_tree_node_dominator, check_and_add_conflicts,
307         add_conflict_with_underlying_allocnos, ira_flattening): New
308         functions.
309         (check_coalesced_allocnos): Remove.
310         (ira_loop_tree_height): New external variable.
311         (form_loop_tree): Call setup_loop_tree_level.
312         (initiate_calls): Allocate a bit more.  (create_allocno): Use
313         pool_alloc.  Set up ALLOCNO_TOTAL_CONFLICT_ALLOCNOS_NUM,
314         ALLOCNO_TOTAL_CONFLICT_HARD_REGS, ALLOCNO_NREFS,
315         ALLOCNO_TOTAL_NO_STACK_REG_P, ALLOCNO_MEM_OPTIMIZED_DEST,
316         ALLOCNO_MEM_OPTIMIZED_DEST_P, ALLOCNO_UPDATED_MEMORY_COST, and
317         ALLOCNO_LIVE_RANGES.  Rename
318         ALLOCNO_CONFLICT_ALLOCNO_VEC_ACTIVE_SIZE,
319         ALLOCNO_CURR_HARD_REG_COSTS, and
320         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS to
321         ALLOCNO_CONFLICT_ALLOCNOS_NUM, ALLOCNO_UPDATED_HARD_REG_COSTS, and
322         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS.
323         (add_allocno_conflict): Make it external.  Use
324         add_to_allocno_conflict_vec.
325         (create_cap_allocno): Move part of code to propagate_info_to_cap.
326         (finish_allocnos): Use finish_allocno.
327         (add_allocno_copy_to_list, remove_allocno_copy_from_list,
328         swap_allocno_copy_ends_if_necessary, add_allocno_copy): Move from
329         ira-conflicts.c.  Make them external.
330         (create_copy): Use pool_alloc.  Add parameter loop_tree_node.
331         (finish_copies): Use finish_copy.
332         (ira_curr_regno_allocno_map): New external variable.
333         (traverse_loop_tree): Add parameter bb_first_p.
334         (create_insn_allocnos): Update ALLOCNO_NREFS.
335         (create_loop_tree_node_allocnos): Traverse loop tree nodes with
336         BBs first.  Update ALLOCNO_NREFS.
337         (create_loop_tree_node_caps): Move part of code to
338         propagate_info_to_loop_tree_node_cap.
339         (regno_top_level_allocno_map): New global variable.
340         (ira_build): Create caps before build conflicts.  Call
341         create_allocno_live_ranges.  Propagate info to caps.  Report
342         statistics.
343         (ira_destroy): Call finish_allocno_live_ranges.
345         * ira-conflicts.c (set_allocno_live, clear_allocno_live,
346         record_regno_conflict, mark_reg_store, mark_reg_clobber,
347         mark_reg_conflicts, mark_reg_death): Remove.
348         (add_insn_allocno_copies, add_copies): New functions.
349         (add_allocno_copy_to_list, remove_allocno_copy_from_list,
350         swap_allocno_copy_ends_if_necessary, add_allocno_copy): Remove.
351         (add_allocno_copies): Rename to add_insn_allocno_copies.  Use
352         ira_curr_regno_allocno_map and add_insn_allocno_copies.
353         (single_reg_class, single_reg_operand_class,
354         process_single_reg_class_operands, process_bb_node_for_conflicts):
355         Remove.
356         (INT_BITS, INT_TYPE, EXECUTE_IF_SET_IN_ALLOCNO_SET): Move to
357         ira-int.h.
358         (allocnos_live_bitmap, SET_ALLOCNO_CONFLICT_ROW,
359         CLEAR_ALLOCNO_CONFLICT_ROW, TEST_ALLOCNO_CONFLICT_ROW): Remove.
360         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, TEST_ALLOCNO_LIVE):
361         Use {SET, CLEAR, TEST}_ALLOCNO_SET_BIT.
362         (allocno_row_words, hard_regs_live, curr_bb_node,
363         curr_regno_allocno_map, curr_reg_pressure): Remove.
364         (CONFLICTP): Rename to CONFLICT_P.
365         (regs_set): Remove.
366         (propagate_allocno_info): Use ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
367         Set up ALLOCNO_CALLS_CROSSED_START.
368         (allocno_conflict_p): New function.
369         (allocno_reg_conflict_p): Use allocno_conflict_p.
370         (build_allocno_conflict_vects): Divide original and propagated
371         conflicts.
372         (print_hard_reg_set): New function.
373         (print_conflicts): Use print_hard_reg_set.  Set up mark for the
374         start of propagated conflicts.
375         (debug_conflicts): Add parameter.
376         (ira_build_conflicts): Call add_copies.  Set up
377         ALLOCNO_TOTAL_CONFLICT_HARD_REGS.
379         * ira-costs.c (struct costs): Make cost allocated dynamically.
380         (struct_costs_size, temp_cots, op_costs, this_op_costs): New
381         variables.
382         (costs): Rename to total_costs.
383         (COSTS_OF_ALLOCNO): New macro.
384         (curr_regno_allocno_map): Remove.  Use ira_curr_regno_allocno_map
385         instead.
386         (record_reg_classes): Check NO_REGS in allocno_pref.
387         (record_address_regs): Use COSTS_OF_ALLOCNO.
388         (scan_one_insn): Ditto.
389         (print_costs): Ditto.
390         (find_allocno_class_costs): Ditto.  Pass additional argument to
391         traverse_loop_tree.  Set up NO_REGS if memory is cheaper.
392         (setup_allocno_cover_class_and_costs): Use
393         ALLOCNO_UPDATED_MEMORY_COST instead of
394         ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
395         instead of ALLOCNO_CURR_HARD_REG_COSTS, and
396         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
397         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS.  Pass additional argument to
398         traverse_loop_tree.
399         (init_ira_costs_once): Allocate init_cost, op_costs,
400         this_op_costs, temp_costs.
401         (finish_ira_costs_once): New function.
402         
403         * ira-color.c: Use ALLOCNO_UPDATED_MEMORY_COST instead of
404         ALLOCNO_ORIGINAL_MEMORY_COST, ALLOCNO_UPDATED_HARD_REG_COSTS
405         instead of ALLOCNO_CURR_HARD_REG_COSTS, and
406         ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS instead of
407         ALLOCNO_CURR_CONFLICT_HARD_REG_COSTS.  Use
408         ALLOCNO_TOTAL_CONFLICT_HARD_REGS instead of
409         ALLOCNO_CONFLICT_HARD_REGS.
410         (processed_allocno_bitmap): Rename into
411         processed_coalesced_allocno_bitmap.
412         (allocno_cost_compare_func): Use ALLOCNO_UPDATED_MEMORY_COST
413         instead of ALLOCNO_MEMORY_COST.
414         (assign_hard_reg): Remove biased coloring.
415         (add_allocno_to_ordered_bucket): Check cover class first.
416         (loop_edge_freq): Make it external.
417         (setup_allocno_left_conflicts_num): Check that conflicting
418         allocnos of one class.
419         (allocno_conflict_p): Rename to coalesced_allocno_conflict_p.
420         (color_pass): Check pressure in the loop (not in subloops) for
421         mixed algorithm.
422         (allocno_priorities): New variable.
423         (start_allocno_priorities, finish_allocno_priorities): New
424         functions.
425         (allocno_priority_compare_func): Use allocno_priorities.
426         (priority_coloring): Call start_allocno_priorities and
427         finish_allocno_priorities.
428         (do_coloring): Pass additional argument to traverse_loop_tree.
429         
430         * ira-emit.c (struct move): Add member insn.
431         (create_move): Initialize member insn.
432         (generate_edge_moves): Set up ALLOCNO_MEM_OPTIMIZED_DEST and
433         ALLOCNO_MEM_OPTIMIZED_DEST_P.
434         (change_loop): Check prohibited_mode_move_regs.
435         (curr_jump_map, can_move_through_p): Remove.
436         (unify_moves): Don't move through jump.
437         (modify_move_list): Set up attributes for new allocno used for
438         breaking dependency loops.
439         (emit_move_list): Set up insn codes.
440         (update_costs, add_range_and_copies_from_move_list,
441         add_ranges_and_copies): New functions.
442         (ira_emit): Add a parameter.  Call add_ranges_and_copies.
443         
444 2007-10-09  Vladimir Makarov  <vmakarov@redhat.com>
446         * toplev.h (flag_ira_coalesce): New external variable.
448         * ira-int.h (allocno): New members first_coalesced_allocno,
449         next_coalesced_allocno.
450         (ALLOCNO_FIRST_COALESCED_ALLOCNO, ALLOCNO_NEXT_COALESCED_ALLOCNO):
451         New macros.
452         (reg_class_subintersect): New external variable.
454         * ira-color.c (processed_allocno_bitmap): New variable.
455         (allocno_cost_compare_func, print_coalesced_allocno): New
456         functions.
457         (assign_hard_reg): Process coalesced allocnos.
458         (get_coalesced_allocnos_best_class_and_freq): New function.
459         (add_allocno_to_ordered_bucket): Use the function.
460         (push_allocno_to_stack, push_allocnos_to_stack): Process coalesced
461         allocnos.
462         (remove_allocno_from_bucket_and_push, pop_allocnos_from_stack):
463         Use print_coalesced_allocno.
464         (setup_allocno_available_regs_num,
465         setup_allocno_left_conflicts_num): Process coalesced allocnos.
466         (copy_freq_compare_func, allocno_conflict_p, coalesce_allocnos):
467         New functions.
468         (color_allocnos): Allocate/free processed_allocno_bitmap.  Call
469         coalesce_allocnos.
470         (priority_coloring): Allocate/free processed_allocno_bitmap.
472         * ira-build.c (check_coalesced_allocnos): New function.
473         (create_allocno): Initiate next_coalesced_allocno,
474         first_coalesced_allocno.
475         (create_cap_allocno): Check  next_coalesced_allocno,
476         first_coalesced_allocno.
478         * common.opt (fira-coalesce): New option.
480         * ira.c (setup_reg_class_intersect): New function.
481         (reg_class_subintersect): New global variable.
482         (init_ira_once): Call setup_reg_class_intersect.
484         * doc/invoke.texi (-fira-coalescing): New option.
485         
486 2007-09-20  Vladimir Makarov  <vmakarov@redhat.com>
488         * ira-build.c (create_allocno): Initialize ALLOCNO_BEST_CLASS.
490         * ira-color.c (add_allocno_to_ordered_bucket): Use
491         ALLOCNO_BEST_CLASS.
493         * ira-costs.c (setup_allocno_cover_class_and_costs): Initialize
494         ALLOCNO_BEST_CLASS.
496         * ira-int.h (allocno): New member best_class.
497         (ALLOCNO_BEST_CLASS): New macro.
498         
499 2007-09-19  Vladimir Makarov  <vmakarov@redhat.com>
501         * ira-int.h (allocno): Remove calls_crosed.  Add
502         calls_crossed_start.
503         (ALLOCNO_CALLS_CROSSED): Remove.
504         (ALLOCNO_CALLS_CROSSED_START): Add.
505         (build_df): Remove.
506         (regno_calls, add_regno_call): New.
507         
508         * ira-build.c (initiate_calls, finish_calls, add_regno_call): New
509         functions.
510         (regno_calls, regno_calls_num): New globals.
511         (build_df): Remove.
512         (add_loop_to_tree): Use loop_outer.
513         (form_loop_tree): Ditto.
514         (initiate_allocnos, create_cap_allocno): Remove
515         ALLOCNO_CALLS_CROSSED.  Add ALLOCNO_CALLS_CROSSED_START.
516         (finish_allocnos): Remove ALLOCNO_CALLS_CROSSED.
517         (create_bb_allocnos, create_loop_allocnos): Use DF_LR_{IN,OUT}
518         instead of DF_UPWARD_LIVE_{IN,OUT}.
519         (ira_build): Remove adding df problems and call of
520         free_dominance_info.  Call initiate_calls.
521         (ira_destroy): Add free_dominance_info and finish_calls.  Remove
522         df_finish.
524         * ira-emit.c (change_regs): Return the result.
525         (generate_edge_moves): Use DF_LR_{IN,OUT} instead of
526         DF_UPWARD_LIVE_{IN,OUT}.
527         (change_loop): Call df_insn_rescan and df_note_rescan if there is
528         a change.
529         (can_move_through_p): Use hard_reg_set_equal_p instead of
530         GO_IF_HARD_REG_EQUAL.
532         * ira-costs.c (copy_cost, record_reg_classes,
533         record_address_regs): Call init_move_cost if it is necessary.
534         (tune_allocno_costs_and_cover_classes): Use regno_calls and
535         ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
537         * ira-conflicts.c (n_regs_set): Remove.
538         (regs_set): Make it a vector.
539         (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
540         (process_bb_node_for_conflicts): Use DF_LR_IN instead of
541         DF_UPWARD_LIVE_IN.  Call add_regno_call.  Initialize
542         ALLOCNO_CALLS_CROSSED_START.  Remove ALLOCNO_CALLS_CROSSED.
543         (build_conflict_bit_table): Initialize and finalize regs_set.
544         (propagate_allocno_info): Remove ALLOCNO_CALLS_CROSSED.
545         Initialzie ALLOCNO_CALLS_CROSSED_START.
546         
547         * ira-color.c (setup_allocno_available_regs_num,
548         setup_allocno_left_conflicts_num): New functions.
549         (update_allocno_avaialable_regs): Remove.
550         (sorted_allocnos, allocno_stack_varray): Move upper.
551         (assign_hard_reg): Use hard_reg_set_subset_p instead of
552         GO_IF_HARD_REG_SUBSET.
553         (loop_edge_freq): Use DF_LR_{IN,OUT} instead of
554         DF_UPWARD_LIVE_{IN,OUT}.
555         (put_allocno_into_bucket): Call setup_allocno_available_regs_num
556         and setup_allocno_left_conflicts_num.
557         (print_loop_title): Use loop_depth.
558         (allocno_priority_compare_func): Remove REG_N_REFS and
559         REG_LIVE_LENGTH.
560         (retry_ira_color): Use SET_REGNO.  Use ALLOCNO_CALLS_CROSSED_NUM
561         instead of ALLOCNO_CALLS_CROSSED.
562         (collect_pseudo_call_clobbered_regs):  Use regno_calls and
563         ALLOCNO_CALLS_CROSSED_START instead of ALLOCNO_CALLS_CROSSED.
565         * ira-call.c (init_ira_call_data): Add argument to
566         post_order_compute.
567         (n_regs_set): Remove.
568         (regs_set): Make it a vector.
569         (mark_reg_store, mark_reg_clobber): Change 2nd parameter type.
570         (mark_referenced_regs): Check null x.
571         (put_save_restore_and_calculate_local_info): Initialize and
572         finalize regs_set.  Use DF_LR_{IN,OUT} instead of
573         DF_UPWARD_LIVE_{IN,OUT}.  Use loop_outer.
574         (do_init_nothing): Remove.
575         (save_trans_fun, save_con_fun_0, restore_trans_fun,
576         restore_con_fun_0): Remove 1st parameter.
577         (save_con_fun_n, restore_con_fun_n): Ditto.  Use
578         df_simple_dataflow instead of df_analyze_problem.
579         (put_save_restore): Use DF_LR_IN instead of DF_UPWARD_LIVE_IN.
580         Call mark_all_referenced_regs for all insn.  Use bitmap progress.
581         (get_move_insn): New function.
582         (put_save_restore_and_calculate_local_info, put_save_restore): Use
583         the function.
585         * ira.c (insn_contains_asm_1, insn_contains_asm,
586         compute_regs_asm_clobbered, expand_reg_info): New functions.
587         (setup_class_subset_and_move_costs): Use hard_reg_set_subset_p
588         instead of GO_IF_HARD_REG_SUBSET.
589         (setup_reg_subclasses, setup_class_translate): Ditto. Use
590         hard_reg_set_equal_p instead of GO_IF_HARD_REG_EQUAL.
591         (setup_eliminable_regset): Call compute_regs_asm_clobbered.  Use
592         df_set_regs_ever_live instead of regs_ever_live.
593         (setup_reg_renumber): Check reg_equiv_const and
594         reg_equiv_invariant_p.
595         (ira): Remove no_new_pseudos. Add df-problems and analyze.  Call
596         regstat_init_n_sets_and_refs and regstat_compute_ri.  Remove
597         delete_unreachable_blocks.  Use expand_reg_info.  Move
598         setup_preferred_alternate_classes upper.  Remove life_analysis.
599         Prepare df-insfrastructure for reload.
601         * regclass.c (setup_reg_classes): Don't use reg_pref_buffer.
603         * function.[ch] (get_call_invalidated_used_regs): Change 1st
604         parameter type.
605         
606         * gengtype.c (main): Add HARD_REG_SET.
608         * alias.c (value_addr_p): New function.
609         (nonoverlapping_memrefs_p): Use it.
611         * caller-save.c (init_caller_save): Use DF_LR_TOP for IRA instead
612         of global_live_at_start.
613         
614 2007-05-04  Vladimir Makarov  <vmakarov@redhat.com>
616         * ira-conflicts.c: Change pseudo to allocno.
617         * ira-color.c: Ditto.
618         * ira-emit.c: Ditto.
619         * ira-build.c: Ditto.
620         * ira.c: Ditto.
621         (important_classes_num, important_classes): New variables.
622         (setup_cover_classes): Set up the variable values.
623         * ira-costs.c: Ditto.
624         (record_reg_classes, record_address_regs, scan_one_insn,
625         find_pseudo_class_costs):  Process only important classes.
626         * ira-call.c: Ditto.  Add comments about placement optimization.
627         * ira-int.h: Ditto.
628         (allocno) Use one bit field for boolean members.
629         (important_classes_num, important_classes): New external
630         definitions.
632 2007-03-16  Vladimir Makarov  <vmakarov@redhat.com>
634         * flags.h (ira_algorithm): Add IRA_ALGORITHM_MIXED.
636         * opts.c (common_handle_option): Set up IRA_ALGORITHM_MIXED from
637         the option argument.
638         
639         * common.opt (fira-assign-after-call-split, fira-propagate-cost,
640         fira-split-around-calls): New options.
641         (fira-ipra): Switch off by default.
642         
643         * doc/invoke.texi (-fira-algorithm): Add mixed algorithm.
644         (-fno-ira-ipra): Rename to -fira-ipra.
645         (-fno-ira-assign-after-call-split, -fira-propagate-cost,
646         -fno-ira-split-around-calls): Add new options.
647         
648         * ira-conflicts.c (curr_reg_pressure): New variable.
649         (set_pseudo_live, clear_pseudo_live, mark_reg_store,
650         mark_reg_death): Update reg pressure.
651         (add_pseudo_copies): Decrease cost for copy with dead pseudo.
652         (process_bb_node_for_conflicts): Propagate reg pressure.
653         (build_conflict_bit_table): Call process_bb_node_for_conflicts in
654         preorder.
655         (ira_build_conflicts): Add new coloring algorithm.
656         (ira_build_conflicts): Add flag_ira_split_around_calls.
658         * ira-emit.c (change_loop): Print allocation on the region
659         borders.  Use pseudo_cap_member instead of regno.
660         (modify_move_list): Add parameter to create pseudo.
661         (ira_emit): Use pseudo_cap_member instead of regno.
662         
663         * ira-build.c (create_loop_tree_nodes): Set up initial reg
664         pressure.
665         (create_pseudo): Add parameter.  Use the parameter value instead
666         of regno.
667         (print_expanded_pseudo): Use pseudo_cap_member instead of regno.
668         (create_cap_pseudo, create_insn_pseudos, create_bb_pseudos,
669         create_loop_pseudos): Add argument to create_pseudo call.
670         (create_pseudos, ira_build): Process IRA_ALGORITHM_MIXED.
671         (create_loop_tree_node_caps):  Create cap pseudo for all pseudos
672         not having father pseudo.
673         
674         * final.c (rest_of_handle_final): Process INCOMING_REGNO.
676         * toplev.h (flag_ira_assign_after_call_split,
677         flag_ira_propagate_cost, flag_ira_split_around_calls): New flags.
679         * caller-save.c (save_call_clobbered_regs): Move declaration
680         this_insn_sets to the function start.
681         
682         * ira-int.h (ira_loop_tree_node): Add reg_pressure.
683         (pseudo): More comments for regno and cap_member
684         (original_regno_call_crossed_p, ira_max_regno_before,
685         ira_max_regno_call_before): New external variables.
686         (create_pseudo): Add parameter.
687         (reassign_conflict_pseudos, debug_ira_call_data,
688         split_around_calls, get_around_calls_regno): New function
689         prototypes.
691         * ira-color.c (assign_hard_reg): Set best_hard_regno and
692         conflict_regs earlier.  Check register availability earlier.
693         Ignore conflict and copy cost for PSEUDO_MAY_BE_SPILLED_P.
694         (calculate_pseudo_spill_cost): Use pseudo_cap instead of regno.
695         Check father pseudo instead of subloop pseudos.
696         (pop_pseudos_from_stack): Set up PSEUDO_ASSIGNED_P for NO_REGS
697         pseudo.
698         (print_loop_title): Print reg pressure.
699         (color_pass): Use PSEUDO_CAP_MEMBER instead of regno.  Add mixed
700         coloring algorithm.
701         (move_spill_restore): Use PSEUDO_CAP_MEMBER instead of regno.  Use
702         subloop pseudos instead of father pseudo for cost calculation.
703         (setup_curr_costs, reassign_conflict_pseudos): New functions.
704         (retry_ira_color): Don't allocate call used registers when
705         flag_caller_saves or flag_ira_split_around_calls.  Call
706         setup_curr_cost.  Print about spilling pseudo split around calls.
707         (reuse_stack_slot): Choose the slot with minimal memory-memory
708         costs.
710         * ira.c (setup_reg_renumber): Add 2 parameters.  Use cap_number
711         instead of regno.  Initialize caller_save_needed.  Make assertion
712         stricter.
713         (setup_pseudo_assignment_from_reg_renumber): New function.
714         (calculate_allocation_cost): Add assertion.
715         (print_redundant_copies): Use cap_number instead of regno.
716         (original_regno_call_crossed_p, ira_max_regno_before,
717         ira_max_regno_call_before): New global variables.
718         (ira): Process IRA_ALGORITHM_MIXED.  Set up
719         ira_max_regno_call_before and ira_max_regno_before.  New arguments
720         for setup_reg_renumber.  Reassign if pseudo changed its class.
721         Split pseudos around the call if necessary.  Reassign if a pseudo
722         is split.
724         * ira.h: New year for Copyright.
726         * ira-costs.c (reg_pref): Rename to pseudo_pref.
727         (reg_pref_buffer): rename to pseudo_pref_buffer.
728         (find_pseudo_class_costs): Initialize best_cost and best_class.
729         Process IRA_ALGORITHM_MIXED.  Find best cover class for regno.
730         (process_bb_node_for_hard_reg_moves): Process IRA_ALGORITHM_MIXED.
732         * Makefile.in (ira-call.o): Add new file.
734         * reload1.c (calculate_needs_all_insns): Remove unnecessary
735         memory-memory move.
737         * ira-call.c: New file.
738         
739 2007-02-09  Vladimir Makarov  <vmakarov@redhat.com>
741         * common.opt (fipra): Rename to fira-ipra.  Make it default.
742         (fira-move-spills, fira-share-save-slots, fira-share-spill-slots):
743         New.
744         * toplev.h (flag_ipra): Rename to flag_ira_ipra.
745         (flag_ira_move_spills, flag_ira_share_save_slots,
746         flag_ira_share_spill_slots): New external definitions.
747         * doc/invoke.texi (-fipra): Rename to -fno-ira-ipra. 
748         (-fno-ira-move-spills, -fno-ira-share-save-slots,
749         -fno-ira-share-spill-slots): New options.
750         * function.c (get_call_invalidated_used_regs): Rename flag_ipra to
751         flag_ira_ipra.
752         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Ditto.
753         * caller-save.c (setup_save_areas): Use flag_ira_share_save_slots.
754         Rename flag_ipra to flag_ira_ipra.
755         (flag_ira_share_save_slots): Use flag_ira_move_spills.
756         * ira-color.c (assign_hard_reg): Skip pseudos with different cover
757         class.
758         (reuse_stack_slot): Use flag_ira_share_spill_slots.
759         * config/arm/arm.h (IRA_COVER_CLASSES): New macro.
760         
761 2007-02-31  Vladimir Makarov  <vmakarov@redhat.com>
763         * reload.h (debug_save_data): New definition.
764         
765         * caller-save.c (struct bb_info): New.
766         (BB_INFO, BB_INFO_BY_INDEX): New macros.
767         (calculate_local_save_info, set_up_bb_rts_numbers, rpost_cmp,
768         calculate_save_in_out, calculate_save_here,
769         make_global_save_analysis, print_hard_reg_set_and_mode,
770         print_hard_reg_set, print_save_data, debug_save_data,
771         set_hard_reg_saved): New functions.
772         (save_call_clobbered_regs): Make global save analysis and use it
773         to put save/restore code.
774         (insert_one_insn): Check CODE_LABEL.
776 2007-01-19  Vladimir Makarov  <vmakarov@redhat.com>
778         * toplev.h (flag_ipra): New external definition.
780         * common.opt (fipra): New option.
782         * doc/invoke.texi (-fipra); Document the option.
784         * cgraph.h (cgraph_node): New member function_used_regs.
786         * cgraph.c (cgraph_create_node): Initialize function_used_regs.
788         * final.c (update_regs_ever_live): New function.
789         (rest_of_handle_final): Set up function_used_regs and
790         call_used_regs.
792         * ira-build.c (ira_build): Clear function call_used_regs.
794         * function.h: Add hard-reg-set.h header.
795         (emit_status): New member call_used_regs.
796         (get_call_invalidated_used_regs): New definition.
798         * function.c (get_call, get_call_invalidated_used_regs): New
799         functions.
801         * Makefile.in (FUNCTION_H): Add hard-reg-set.h.
802         (caller-save.o): Add dependence on output.h and ira.h
804         * regrename.c (copyprop_hardreg_forward_1): Use function
805         get_call_invalidated_used_regs.
807         * ira-conflicts.c (process_bb_node_for_conflicts): Ditto.
809         * postreload-gcse.c (record_opr_changes,
810         reg_set_between_after_reload_p, reg_used_between_after_reload_p):
811         Ditto.
813         * postreload.c (reload_combine, reload_cse_move2add): Ditto.
815         * rtlanal.c (reg_set_between_p): Ditto.
817         * flow.c (propagate_one_insn): Ditto.
819         * df-scan.c (df_insn_refs_record): Ditto.
821         * gcse.c (compute_hash_table_work, compute_store_table): Ditto.
823         * cselib.c (cselib_process_insn): Ditto.
825         * loop-iv.c (simplify_using_assignment): Ditto.
827         * sched-deps.c (sched_analyze): Ditto.
829         * combine.c (record_dead_and_set_regs): Ditto.
831         * resource.c (mark_set_resources, mark_set_resources): Ditto.
833         * var-tracking.c (var-tracking.c): Ditto.
835         * reload1.c (reload): Ditto.
837         * cse.c (invalidate_for_call): Ditto.  Add parameter.
838         (cse_insn): Pass the parameter.
840         * ira.h (try_to_migrate): Remove the definition.
841         (collect_pseudo_call_clobbered_regs): New external definition.
843         * ira-color.c (collect_pseudo_call_clobbered_regs): New function.
845         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Add cost
846         calculation when IPRA is used.
848         * caller-save.c: Include headers output.h and ira.h.
849         (saved_hard_reg): New structure.
850         (hard_reg_map, hard_reg_map, all_saved_regs): New variables.
851         (all_saved_regs, new_saved_hard_reg, finish_saved_hard_regs,
852         saved_hard_reg_compare_func): New functions.
853         (setup_save_areas): Add code for sharing stack slots.
854         (save_call_clobbered_regs): Use function
855         get_call_invalidated_used_regs.
856         
857 2007-01-12  Vladimir Makarov  <vmakarov@redhat.com>
859         * doc/tm.texi (IRA_HARD_REGNO_ADD_COST_MULTIPLIER): New macro.
861         * ira-conflicts.c (add_pseudo_copies): Add copy between output and
862         died operand pseudos.
864         * ira.c (setup_cover_classes, setup_class_translate): Define and
865         call only when IRA_COVER_CLASSES is defined.
866         (no_alloc_regs): Rename to no_unit_alloc_regs.
867         (setup_eliminable_regset): Set up no_alloc_regs.
869         * ira-costs.c (tune_pseudo_costs_and_cover_classes): Modify cost
870         if IRA_HARD_REGNO_ADD_COST_MULTIPLIER is defined.
872         * config/s390/s390.h (IRA_COVER_CLASSES,
873         IRA_HARD_REGNO_ADD_COST_MULTIPLIER(regno)): Define.
874         
875 2006-12-22  Vladimir Makarov  <vmakarov@redhat.com>
877         * rtl.h (setup_reg_classes): New function prototype.
878         
879         * regclass.c (setup_reg_classes): New function.
881         * global.c (global_alloc): Dump information about register
882         assigning.
884         * ira-int.h (ira_build): Change prototype signature.
886         * ira-color.c (pseudo_compare_func): Rename to
887         pseudo_priority_compare_func.
888         (priority_coloring): Dump information about register
889         assigning.
891         * ira-build.c (ira_build): Return true if we have loops for the
892         allocation.
894         * ira.c (setup_preferred_alternate_classes): New function.
895         (ira): Use it instead of regclass.  Rebuild only if we have loops.
897 2006-12-15  Vladimir Makarov  <vmakarov@redhat.com>
899         * ira.h, ira-int.h, ira.c, ira-build.c, ira-costs.c
900         ira-conflicts.c, ira-color.c, ira-emit.c: New files.
902         * flags.h (ira_algorithm): New enumeration.
903         (flag_ira_algorithm): New external variable declaration.
905         * tree-pass.h (pass_ira): New external variable declaration.
907         * toplev.c (ira.h): New include.
908         (flag_ira_algorithm): New global variable.
909         (backend_init): Call init_ira_once.
911         * toplev.h (flag_ira, flag_ira_biased_coloring): New external
912         variable declarations.
914         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
915         may_move_out_cost): New external variable declarations.
916         
917         * caller-save.c (no_caller_save_reg_set): New global variable.
918         (init_caller_save): Set up no_caller_save_reg_set.
919         
920         * global.c (eliminable_regset): Make it external.
921         (gate_handle_global_alloc): New function.
922         (pass_global_alloc): Add the gate function.
924         * opts.c (decode_options):  Print the warning for -fira.
925         (common_handle_option): Process -fira-algorithm option.
927         * timevar.def (TV_IRA): New pass.
929         * hard-reg-set.h (no_caller_save_reg_set): New external variable
930         declaration.
932         * regmove.c (regmove_optimize): Don't do replacement of output
933         operands by input operands.
934         (rest_of_handle_regmove): Don't do CFG cleanup for IRA.
936         * local-alloc.c (update_equiv_regs): Make it external.  Return
937         true if jump label rebuilding should be done.
938         (gate_handle_local_alloc): New function.
939         (pass_local_alloc): Add the gate function.
941         * alias.c (stack_addr_p): New function.
942         (nonoverlapping_memrefs_p): Add code for IRA.
944         * common.opt (fira, fira-algorithm, fira-biased-coloring): New
945         options.
947         * regclass.c (contains_reg_of_mode, move_cost, may_move_in_cost,
948         may_move_out_cost): Make the variables external.
949         
950         * rtl.h (eliminable_regset): New external variable declaration.
951         (update_equiv_regs): New external function definition.
953         * Makefile.in (IRA_INT_H): New definition.
954         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
955         ira-conflicts.o, ira-color.o, and ira-emit.o.
956         (reload1.o, toplev.o): Add dependence on ira.h.
957         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
958         ira-emit.o): New entries.
960         * passes.c (pass_ira): New pass.
962         * reload1.c (alter_reg): Add a new parameter.
963         (pseudo_reg_compare): New function.
964         (reload): Sort pseudos for IRA.  Call alter_reg with the
965         additional parameter.
966         (count_spilled_pseudo): New variable freq.  Use it.
967         (alter_reg): Add code for IRA.
968         (eliminate_regs_1, finish_spills, emit_input_reload_insns,
969         delete_output_reload): Use additional parameter for alter_reg.
970         (finish_spills, emit_input_reload_insns, delete_output_reload):
971         Call mark_allocation_change.
972         (finish_spills): Call retry_ira_color.
973         
974         * doc/invoke.texi: Describe new options -fira,
975         -fira-biased-coloring, and -fira-algorithm.
976         
977         * doc/passes.texi: Decribe IRA.
979         * doc/tm.texi:  Decribe macro IRA_COVER_CLASSES.
980         
981         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
983         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
985         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
987         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
988         
989         Richard Henderson  <rth@redhat.com>
991         * tree-pass.h (pass_lower_subreg): New external definition.
992         * toplev.h (flag_lower_subreg): New external definition.
993         * rtl.def (CONCATN): New rtl expression.
994         * dwarf2out.c (concatn_loc_descriptor): New function.
995         (loc_descriptor): Process CONCATN.
996         * timevar.def (TV_LOWER_SUBREG): New definition.
997         * emit-rtl.c (gen_reg_rtx_offset): New function.
998         (gen_lowpart_common): Process CONCATN.
999         * simplify-rtx.c (simplify_subreg): Process CONCATN.
1000         * common.opt (flower-subreg): New options.
1001         * rtl.h (gen_reg_rtx_offset): New external definition.
1002         * Makefile.in (OBJS-common): Add lower-subreg.o.
1003         (lower-subreg.o): New entry.
1004         * passes.c (pass_lower_subreg): Add new pass.
1005         * lower-subreg.c: New file.
1006         
1007 2007-08-30  Richard Guenther  <rguenther@suse.de>
1009         PR tree-optimization/33199
1010         * tree-ssa-structalias.c (handle_lhs_call): New function.
1011         (find_func_aliases): In non-IPA mode make sure that for
1012         calls that return a pointer we add a constraint for the
1013         result to point to anything.
1015 2007-08-30  Richard Guenther  <rguenther@suse.de>
1017         * doc/invoke.texi (-mveclibabi): Document new target option.
1018         * config/i386/i386.opt (-mveclibabi): New target option.
1019         * config/i386/i386.c (ix86_veclib_handler): Handler for
1020         vectorization library support.
1021         (override_options): Handle the -mveclibabi option, initialize
1022         the vectorization library handler.
1023         (ix86_builtin_vectorized_function): As fallback call the
1024         vectorization library handler, if set.
1025         (ix86_veclibabi_acml): New static function for ACML ABI style
1026         vectorization support.
1028 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
1030         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
1031         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
1032         SImode and update m.  Don't run gen_lowpart_common on arbitrary
1033         memory address, force it to register first.
1035         PR middle-end/32758
1036         * dce.c (dce_process_block): Don't delete setters of
1037         artificially used registers.
1039 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1041         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
1042         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
1043         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
1045 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1047         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
1048         pattern.
1049         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
1050         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
1052 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1054         * system.h: Activate -Wcast-qual as warning-only.
1056 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
1058         PR target/33168
1059         * config/rs6000/rs6000.c (compare_section_name): New function.
1060         (rs6000_elf_in_small_data_p): Compare section prefixes instead
1061         of full name.
1063 2007-08-29  Olivier Hainque  <hainque@adacore.com>
1065         * xcoffout.c: #include debug.h.
1066         * Makefile.in (xcoffout.o): Add debug.h dependency.
1068 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
1070         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
1071         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
1073 2007-08-29  Richard Guenther  <rguenther@suse.de>
1075         * tree-pretty-print.c (dump_generic_node): Print
1076         label DECL_UID as D.%u.
1077         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
1079 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1081         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
1082         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
1084 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
1086         PR c++/33194
1087         * tree.c (build_type_attribute_qual_variant): Set canonical types
1088         on the final, unqualified attribute variant before building the
1089         qualified version.
1091 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
1093         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
1094         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
1096 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
1098         Revert
1099         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
1100         * config/bfin/bfin.md (composev2hi): Put operands into vector
1101         with correct order.
1103 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
1105         * config/bfin/bfin.md (composev2hi): Put operands into vector
1106         with correct order.
1108 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
1110         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
1111         attribute when appropriate.
1112         (bfin_handle_l1_text_attribute): New.
1113         (bfin_handle_l1_data_attribute): New.
1114         (bfin_attribute_table): Add attributes: l1_text, l1_data,
1115         l1_data_A and l1_data_B.
1116         * doc/extend.texi (node Function Attributes): Document l1_text
1117         function attribute.
1118         (Variable Attributes): Add Blackfin subsection. Document l1_data,
1119         l1_data_A and l1_data_B variable attributes.
1121 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
1123         * config/bfin/bfin.opt (minline-plt): Add.
1124         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
1125         call to global functions.
1126         * doc/invoke.texi (Option Summary): Mention -minline-plt.
1127         (Blackfin Options): Document -minline-plt.
1129 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
1131         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
1132         given a non-function.
1133         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
1135 2007-08-28  DJ Delorie  <dj@redhat.com>
1137         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
1139 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1141         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
1143 2007-08-28  Richard Guenther  <rguenther@suse.de>
1145         * tree.h (struct tree_function_decl): Increase size of
1146         function_code bitfield.
1148 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
1149             Kazu Hirata  <kazu@codesourcery.com>
1151         * gcc/config/m68k/linux.h
1152         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
1153         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
1154         (m68k_return_in_memory): New.
1155         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
1156         New.
1158 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
1160         PR target/32661
1161         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
1162         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
1163         operand) when top VEC_SELECT extracts scalar element.
1164         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
1165         (*vec_extract_v4sf_mem): Ditto.
1167 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
1169         PR middle-end/32370
1170         * passes.c (init_optimization_passes): Move pass_df_finish
1171         after pass_postreload sublist.
1173         PR rtl-optimization/33148
1174         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
1175         (neg (lt X 0)) if X has scalar int mode.
1177         PR debug/32914
1178         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
1179         initializer, use build_vector_from_ctor if possible to create
1180         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
1181         even after this, return NULL.
1183 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1185         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
1187 2007-08-28  Richard Guenther  <rguenther@suse.de>
1189         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
1190         (struct tree_function_decl): Make function_code a bitfield.
1191         Add disregard_inline_limits flag.
1192         * cgraphunit.c (cgraph_process_new_functions): Check
1193         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
1194         (cgraph_preserve_function_body_p): Likewise.
1195         * ipa-inline.c (compute_inline_parameters): Likewise.
1196         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
1197         for GNU C extern inline functions.
1198         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
1199         * tree-inline.c (disregard_inline_limits_p): Remove.
1200         * tree-inline.h (disregard_inline_limits_p): Likewise.
1201         * c-common.c (handle_always_inline_attribute): Set
1202         DECL_DISREGARD_INLINE_LIMITS.
1203         * langhooks.c (add_builtin_function): Verify the function code
1204         fits in the bitfield.
1206 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
1207             Vladimir Yanovsky  <yanov@il.ibm.com>
1208             Revital Eres  <eres@il.ibm.com>
1209             Andrey Belevantsev  <abel@ispras.ru>
1211         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
1212         is set.
1213         * modulo-sched.c: Add documentation regarding do-loop.
1214         (doloop_register_get): Change number of arguments to support
1215         the new do-loop pattern and check whether COUNT_REG has no other
1216         occurences in the loop besides in the control part.
1217         (duplicate_insns_of_cycles): Do not duplicate the insn which
1218         changes count_reg as it is already adjusted.
1219         (generate_prolog_epilog): New argument to support the new
1220         do-loop pattern.  Change the subtract instruction to use
1221         expand_simple_binop.  Call duplicate_insns_of_cycles with new
1222         argument.
1223         (sms_schedule): Call doloop_register_get and
1224         generate_prolog_epilog with new argument.  Do not handle loops
1225         with single sets insns with subreg in their lhs.
1226         * loop-doloop.c (doloop_optimize): Support for another do-loop
1227         pattern.
1228         (doloop_condition_get): Gets an instruction instead of a pattern
1229         and change the return condition when the do-loop pattern is
1230         not parallel.
1231         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
1232         deps when considering to not create edges.
1234 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
1236         * doc/extend.texi (gnu_inline funtion attribute): Document C++
1237         behavior.
1239 2007-08-27  Jason Merrill  <jason@redhat.com>
1241         PR c++/31337
1242         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
1243         zero-sized types after calling gimplify_modify_expr_rhs.
1245 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
1247         * regclass.c (init_reg_autoinc): Fix typo.
1249 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
1250         
1251         Fix PR tree-optimization/33173
1252         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
1254 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
1256         PR target/31385
1257         * config/i386/i386.h (VALID_DFP_MODE_P): New.
1258         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
1259         GPR.
1261 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
1262             David Ung  <davidu@mips.com>
1263             Nigel Stephens <nigel@mips.com>
1265         Separate target-specific initialization from general
1266         back-end initialization.
1268         * toplev.c (init_alignments): New, split out from...
1269         (process_options): ...here.
1270         (backend_init_target):  New, split out from...
1271         (backend_init): ...here.
1272         (lang_dependent_init_target):  New, split out from...
1273         (lang_dependent_init): ...here.
1274         (target_reinit): New.
1275         * toplev.h (target_reinit): Declare.
1276         * expr.c (init_expr_target): Renamed from init_expr_once, since it
1277         now can be called more than once.  Update comments.
1278         * expr.h (init_expr_target): Likewise.
1279         * alias.c (init_alias_target): Renamed from init_alias_once, since it
1280         now can be called more than once.  Explicitly zero
1281         static_reg_base_value.
1282         * emit-rtl.c (init_emit_regs): New, split out from...
1283         (init_emit_once): Here.
1284         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
1285         non-const, so that changes from command-line arguments can overwrite
1286         values provided by the static initializers.
1287         (initial_call_really_used_regs): New, used similarly to the above.
1288         (initial_reg_names): Likewise.
1289         (last_mode_for_init_move_cost): Promoted function-local static to
1290         file-scope static to make it accessible outside init_move_cost.
1291         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
1292         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
1293         reg_names since it is needed for parsing command-line options.
1294         (init_move_cost): Use last_mode_for_init_move_cost instead of
1295         function-local static.
1296         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
1297         call_really_used_regs now.  Reinitialize reg_names.  Also
1298         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
1299         reg_class_superunion.  Clear losing_caller_save_reg_set.
1300         Preserve global registers if called more than once.  Reset
1301         move cost, may_move_in_cost, may_move_out_cost, and
1302         last_mode_for_init_move_cost.
1303         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
1304         can now be invoked more than once.  Update comments.
1305         (init_regs): Update comments.
1306         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
1307         and initial_call_really_used_regs, instead of the non-initial 
1308         variables.  This allows us to save the command-line register settings
1309         after target reinitialization.
1310         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
1311         * rtl.h (init_emit_regs): Declare.
1312         (init_reg_modes_target, init_alias_target): Renamed as described
1313         above.
1314         * reload1.c (init_reload): Update comments.
1315         * optabs.c (init_optabs): Likewise.
1316         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
1317         
1318 2007-08-26  Chao-ying Fu  <fu@mips.com>
1320         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
1321         __typeof().
1323 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1325         * alias.c (memory_modified_1, memory_modified_in_insn_p):
1326         Constify.
1327         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
1328         Likewise.
1329         * bb-reorder.c (copy_bb_p): Likewise.
1330         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
1331         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
1332         block_ends_with_condjump_p): Likewise.
1333         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
1334         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
1335         block_ends_with_condjump_p): Likewise.
1336         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
1337         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
1338         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
1339         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
1340         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
1341         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
1342         debug_true_const_tree instad of debug_true_tree.
1343         * debug.c (do_nothing_debug_hooks): Likewise.
1344         * debug.h (ignore_block, debug_true_const_tree): Constify.
1345         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
1346         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
1347         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
1348         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
1349         dbx_reg_number, is_based_loc, field_type,
1350         simple_type_align_in_bits, simple_decl_align_in_bits,
1351         simple_type_size_in_bits, field_byte_offset, insert_float,
1352         type_tag, member_declared_type, is_redundant_typedef,
1353         secname_for_decl, is_inlined_entry_point): Likewise.
1354         * emit-rtl.c (const_next_insn, const_previous_insn,
1355         const_next_nonnote_insn, const_prev_nonnote_insn,
1356         const_next_real_insn, const_prev_real_insn,
1357         const_next_active_insn, const_prev_active_insn, const_next_label,
1358         const_prev_label): Likewise.
1359         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
1360         Likewise.
1361         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
1362         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
1363         sched_insn_is_legitimate_for_speculation_p): Likewise.
1364         * jump.c (reversed_comparison_code_parts,
1365         reversed_comparison_code, reversed_comparison, condjump_label):
1366         Likewise.
1367         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
1368         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
1369         Likewise.
1370         * rtl.h (const_previous_insn, const_next_insn,
1371         const_prev_nonnote_insn, const_next_nonnote_insn,
1372         const_prev_real_insn, const_next_real_insn,
1373         const_prev_active_insn, const_next_active_insn, const_prev_label,
1374         const_next_label, modified_between_p, modified_in_p,
1375         const_note_storeskeep_with_call_p, condjump_label,
1376         reversed_comparison, reversed_comparison_code,
1377         reversed_comparison_code_parts, memory_modified_in_insn_p,
1378         stack_regs_mentioned): Likewise.
1379         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
1380         keep_with_call_p): Likewise.
1381         * sched-deps.c (deps_may_trap_p, sched_get_condition,
1382         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
1383         sd_lists_size, sd_lists_empty_p): Likewise.
1384         * sched-int.h (sched_insns_conditions_mutex_p,
1385         haifa_classify_insn, no_real_insns_p,
1386         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
1387         sd_lists_size, sd_lists_empty_p): Likewise.
1388         * sdbout.c (sdb_debug_hooks): Likewise.
1389         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
1390         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
1391         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
1392         Likewise.
1393         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
1394         tree_can_throw_internal): Likewise.
1395         * tree-flow-inline.h (phi_nodes): Likewise.
1396         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
1397         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
1398         * tree-gimple.c (const_get_call_expr_in): Likewise.
1399         * tree-gimple.h (const_get_call_expr_in): Likewise.
1400         * tree.c (const_lookup_attribute, attribute_list_equal,
1401         attribute_list_contained): Likewise.
1402         * tree.h (attribute_list_equal, attribute_list_contained,
1403         const_lookup_attribute): Likewise.
1404         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
1406 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
1408         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
1409         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
1411 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
1413         PR target/32991
1414         * config/alpha/constraints.md: Delete "svn:mime-type" property
1415         with svn propdel "svn:mime-type".
1417 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
1419         PR middle-end/33181
1420         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
1421         non NOTE insn doesn't cross basic block.
1422         (noce_try_abs): Likewise.
1423         (noce_process_if_block): Likewise.
1425 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
1427         PR target/33151
1428         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
1429         operand without auto-inc-dec.
1430         * config/rs6000/rs6000.md (floatsidf2_internal): Use
1431         offsettable_mem_operand.
1432         (floatunssidf2_internal): Same.
1433         (fix_truncdfsi2_internal): Same.
1434         (floatsidf_ppc64): Same.
1435         (floatunssidf_ppc64): Same.
1436         (fix_trunctfsi2_internal): Same.
1438 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
1440         PR bootstrap/30620
1441         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
1442         pass defines needed for version.c.
1444 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
1446         * configure.ac (--debug-prefix-map check): Change assembler
1447         version presumed to have feature to 2.18.
1448         * configure: Regenerate.
1450 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1452         * c-common.c (vector_types_convertible_p,
1453         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
1454         self_promoting_args_p): Constify.
1455         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
1456         c_promoting_integer_type_p, self_promoting_args_p,
1457         anon_aggr_type_p, vector_types_convertible_p): Likewise.
1458         * c-decl.c (anon_aggr_type_p): Likewise.
1459         * * c-dump.c (dump_stmt): Likewise.
1460         * c-objc-common.c (has_c_linkage): Likewise.
1461         * c-tree.h (same_translation_unit_p): Likewise.
1462         * c-typeck.c (null_pointer_constant_p,
1463         tagged_types_tu_compatible_p, function_types_compatible_p,
1464         type_lists_compatible_p, lvalue_or_else, lvalue_p,
1465         comptypes_internal, struct tagged_tu_seen_cache,
1466         same_translation_unit_p, alloc_tagged_tu_seen_cache,
1467         c_size_in_bytes): Likewise.
1468         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
1469         hash_ptr, eq_ptr): Likewise.
1470         * langhooks-def.h (lhd_decl_ok_for_sibcall,
1471         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
1472         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
1473         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
1474         Likewise.
1475         * optabs.c (optab_for_tree_code): Likewise.
1476         * optabs.h (optab_for_tree_code): Likewise.
1477         * rtl.h (simplify_rtx): Likewise.
1478         * simplify-rtx.c (simplify_rtx): Likewise.
1479         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
1480         dump_flag, dump_node): Likewise.
1481         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
1482         queue_and_dump_type, dump_flag): Likewise.
1483         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
1484         * tree-pass.h (dump_node): Likewise.
1485         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
1486         supportable_narrowing_operation): Likewise.
1487         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
1488         supportable_narrowing_operation): Likewise.
1489         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
1490         is_negative_overflow_infinity, is_positive_overflow_infinity,
1491         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
1492         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
1493         update_value_range, add_equivalence, ssa_name_nonnegative_p,
1494         ssa_name_nonzero_p, fp_predicate): Likewise.
1495         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
1496         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
1497         ssa_name_nonnegative_p): Likewise.
1499 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
1501         * config.gcc : Add x86_64-elf target.
1503 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
1505         * expr.c (store_expr): Fix order of store_by_pieces arguments.
1507 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
1508             Nigel Stephens <nigel@mips.com>
1510         PR target/11787
1512         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
1513         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
1514         * expr.c (SET_BY_PIECES_P): Define.
1515         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
1516         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
1517         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
1518         store_by_pieces.
1519         * expr.h (SET_RATIO): Define.
1520         (can_store_by_pieces, store_by_pieces): Update prototypes.
1521         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
1522         can_store_by_pieces/store_by_pieces.
1523         (expand_builtin_memcpy_args): Likewise.
1524         (expand_builtin_strncpy): Likewise.
1525         (expand_builtin_memset_args): Likewise.  Also remove special case
1526         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
1527         decide what to do instead.
1528         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
1529         to can_store_by_pieces.
1531         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
1532         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
1534         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
1535         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
1536         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
1537         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
1538         (STORE_BY_PIECES_P): Define.
1540 2007-08-24  Tom Tromey  <tromey@redhat.com>
1542         * varpool.c (varpool_last_needed_node): Fix comment typo.
1543         * c-decl.c (duplicate_decls): Fix comment typo.
1544         (clone_underlying_type): Update comment.
1546 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1548         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
1549         alpha_in_small_data_p, alpha_split_complex_arg,
1550         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1551         Constify.
1552         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
1553         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
1554         Likewise.
1555         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
1556         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
1557         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
1558         * config/darwin.c (darwin_binds_local_p): Likewise.
1559         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
1560         Likewise.
1561         * config/i386/i386-protos.h (i386_pe_binds_local_p,
1562         i386_pe_valid_dllimport_attribute_p): Likewise.
1563         * config/i386/i386.c (ix86_function_regparm,
1564         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
1565         x86_can_output_mi_thunk, ix86_mangle_type,
1566         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
1567         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
1568         i386_pe_binds_local_p): Likewise.
1569         * config/ia64/ia64.c
1570         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
1571         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
1572         ia64_invalid_conversion, ia64_invalid_unary_op,
1573         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1574         Likewise.
1575         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
1576         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
1577         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
1578         * config/mips/mips.c (mips_use_blocks_for_constant_p,
1579         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
1580         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1581         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
1582         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
1583         * config/pa/pa.c (pa_commutative_p): Likewise.
1584         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
1585         Likewise.
1586         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
1587         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
1588         rs6000_use_blocks_for_constant_p,
1589         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
1590         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1591         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
1592         * config/s390/s390.c (s390_mangle_type,
1593         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
1594         Likewise.
1595         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1596         th_in_small_data_p): Likewise.
1597         * config/sh/sh.c (sh_ms_bitfield_layout_p,
1598         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1599         Likewise.
1600         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
1601         sparc_mangle_type): Likewise.
1602         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
1603         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
1604         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
1605         Likewise.
1606         * hooks.c (hook_bool_mode_const_rtx_false,
1607         hook_bool_mode_const_rtx_true,
1608         hook_bool_const_tree_hwi_hwi_const_tree_false,
1609         hook_bool_const_tree_hwi_hwi_const_tree_true,
1610         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
1611         hook_constcharptr_const_tree_null,
1612         hook_constcharptr_const_rtx_null,
1613         hook_constcharptr_const_tree_const_tree_null,
1614         hook_constcharptr_int_const_tree_null,
1615         hook_constcharptr_int_const_tree_const_tree_null): New.
1616         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
1617         hook_bool_tree_hwi_hwi_tree_false,
1618         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
1619         hook_int_tree_tree_1, hook_constcharptr_tree_null,
1620         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
1621         hook_constcharptr_int_tree_null,
1622         hook_constcharptr_int_tree_tree_null): Delete.
1623         (default_can_output_mi_thunk_no_vcall): Constify.
1624         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
1625         hook_bool_tree_hwi_hwi_tree_false,
1626         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
1627         hook_int_tree_tree_1, hook_constcharptr_tree_null,
1628         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
1629         hook_constcharptr_int_tree_null,
1630         hook_constcharptr_int_tree_tree_null): Delete.
1631         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
1632         hook_bool_const_tree_hwi_hwi_const_tree_false,
1633         hook_bool_const_tree_hwi_hwi_const_tree_true,
1634         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
1635         hook_constcharptr_const_tree_null,
1636         hook_constcharptr_const_rtx_null,
1637         hook_constcharptr_const_tree_const_tree_null,
1638         hook_constcharptr_int_const_tree_null,
1639         hook_constcharptr_int_const_tree_const_tree_null): New.
1640         (default_can_output_mi_thunk_no_vcall): Constify.
1641         * integrate.c (function_attribute_inlinable_p): Likewise.
1642         * integrate.h (function_attribute_inlinable_p): Likewise.
1643         * jump.c (rtx_renumbered_equal_p): Likewise.
1644         * output.h (decl_readonly_section, categorize_decl_for_section,
1645         default_use_anchors_for_symbol_p, default_binds_local_p,
1646         default_binds_local_p_1): Likewise.
1647         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
1648         Likewise.
1649         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1650         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
1651         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
1652         TARGET_COMP_TYPE_ATTRIBUTES,
1653         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
1654         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
1655         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
1656         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
1657         TARGET_DWARF_CALLING_CONVENTION): Likewise.
1658         * target.h (can_output_mi_thunk, needs_block_p,
1659         first_cycle_multipass_dfa_lookahead_guard_spec,
1660         vector_alignment_reachable, comp_type_attributes,
1661         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
1662         commutative_p, use_blocks_for_constant_p,
1663         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
1664         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
1665         invalid_within_doloop, valid_dllimport_attribute_p,
1666         split_complex_arg, invalid_arg_for_unprototyped_fn,
1667         invalid_conversion, invalid_unary_op, invalid_binary_op):
1668         Likewise.
1669         * targhooks.c (default_invalid_within_doloop,
1670         hook_invalid_arg_for_unprototyped_fn,
1671         default_builtin_vector_alignment_reachable): Likewise.
1672         (hook_bool_rtx_commutative_p): Delete.
1673         (hook_bool_const_rtx_commutative_p): New.
1674         * targhooks.h (default_invalid_within_doloop,
1675         default_builtin_vector_alignment_reachable,
1676         hook_invalid_arg_for_unprototyped_fn): Constify.
1677         (hook_bool_rtx_commutative_p): Delete.
1678         (hook_bool_const_rtx_commutative_p): New.
1679         * varasm.c (bss_initializer_p, decl_default_tls_model,
1680         categorize_decl_for_section, decl_readonly_section,
1681         default_use_anchors_for_symbol_p, default_binds_local_p,
1682         default_binds_local_p_1): Constify.
1684 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1686         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1687         __NO_BUILTIN if -fno-builtin.
1689 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1691         * config/bfin/bfin.c (print_operand): Report error instead of
1692         ICE for wrong operand.
1694 2007-08-24  Michael Matz  <matz@suse.de>
1696         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
1698 2007-08-24  Richard Guenther  <rguenther@suse.de>
1700         PR middle-end/33166
1701         * tree-ssa.c (useless_type_conversion_p): Split into a
1702         recursive and a non-recursive part.
1703         (useless_type_conversion_p_1): New function.
1704         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
1705         from maybe_fold_offset_to_reference is trivially convertible
1706         to the desired type before doing the simplification.
1708 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1710         * expr.c (store_expr): Optimize initialization of an array
1711         with STRING_CST.
1712         * expr.h (builtin_strncpy_read_str): New prototype.
1713         * builtins.c (builtin_strncpy_read_str): Remove prototype.
1714         No longer static.
1716 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
1718         PR middle-end/33157
1719         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
1720         field when initializing if_info structure.
1722 2007-08-24  Richard Guenther  <rguenther@suse.de>
1724         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
1725         dependencies.
1726         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
1727         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
1728         * tree-inline.c (inlinable_function_p): Fold in common parts of
1729         the cannot_inline_tree_fn langhook.
1730         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
1731         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
1732         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1733         cannot_inline_tree_fn langhook.
1734         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
1735         cannot_inline_tree_fn member.
1737 2007-08-24  Richard Guenther  <rguenther@suse.de>
1739         * expr.c (get_inner_reference): Do computation of bitoffset
1740         from offset in a way we can detect overflow reliably.
1742 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1744         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
1746 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1748         * config/bfin/bfin.opt (mfast-fp): Add.
1749         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
1750         libbffastfp override libgcc if -mfast-fp.
1751         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
1752         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
1753         (Blackfin Options): Document -mfast-fp.
1755 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1757         PR tree-optimization/32573
1758         PR middle-end/32946
1759         * tree-data-ref.c (initialize_data_dependence_relation): Clear
1760         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
1761         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
1762         (build_classic_dist_vector): Return false rather than true if
1763         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
1764         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
1765         returned false.  Don't call save_dist_v before calling
1766         build_classic_dist_vector_1.
1767         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
1768         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
1769         DDR_DIR_VECTS vectors.
1771 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
1773         * configure.ac (leb128): Modify sed statement to work with any
1774         binutils version string.
1775         * configure: Regenerate
1777 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1779         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
1780         Wrap in RTX_CODE macro guard.
1781         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
1782         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
1783         arm_mark_dllimport, arm_pe_encode_section_info,
1784         arm_pe_unique_section): Use ISO-C function declarations.
1785         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
1786         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
1787         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
1788         Likewise.
1789         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
1790         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
1791         defining.
1792         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
1793         warnings.
1794         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
1795         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
1796         (register_move_cost): Use ISO-C function declarations.
1797         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
1798         * config/score/score-protos.h (score_declare_object): Add
1799         ATTRIBUTE_PRINTF_4.
1800         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
1801         warnings.
1802         * final.c (profile_function): Avoid empty if-bodies.
1803         
1804         
1805         * calls.c (must_pass_in_stack_var_size,
1806         must_pass_in_stack_var_size_or_pad): Constify.
1807         * config/alpha/alpha-protos.h (function_value): Likewise.
1808         * config/alpha/alpha.c (alpha_return_in_memory,
1809         alpha_pass_by_reference, function_value,
1810         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
1811         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1812         Likewise.
1813         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
1814         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1815         TARGET_PROMOTE_PROTOTYPES): Likewise.
1816         * config/arm/arm-protos.h (arm_return_in_memory,
1817         arm_pad_arg_upward, arm_function_value): Likewise.
1818         * config/arm/arm.c (arm_pass_by_reference,
1819         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
1820         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1821         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
1822         Likewise.
1823         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
1824         * config/avr/avr-protos.h (avr_function_value): Likewise.
1825         * config/avr/avr.c (avr_return_in_memory,
1826         gas_output_limited_string, gas_output_ascii, avr_function_value,
1827         avr_return_in_memory): Likewise.
1828         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
1829         * config/bfin/bfin.c (bfin_pass_by_reference,
1830         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
1831         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
1832         Likewise.
1833         * config/cris/cris.c (cris_pass_by_reference,
1834         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
1835         * config/crx/crx.c (crx_return_in_memory): Likewise.
1836         * config/darwin.c (function_base, machopic_function_base_name):
1837         Likewise.
1838         * config/fr30/fr30.c (fr30_must_pass_in_stack,
1839         TARGET_PROMOTE_PROTOTYPES): Likewise.
1840         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
1841         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
1842         * config/i386/i386-protos.h (ix86_return_in_memory,
1843         ix86_sol10_return_in_memory): Likewise.
1844         * config/i386/i386.c (ix86_function_value,
1845         ix86_function_sseregparm, ix86_must_pass_in_stack,
1846         type_natural_mode, classify_argument, examine_argument,
1847         construct_container, ix86_pass_by_reference, function_value_32,
1848         function_value_64, ix86_function_value_1, return_in_memory_32,
1849         return_in_memory_64, return_in_memory_ms_64,
1850         ix86_return_in_memory, ix86_sol10_return_in_memory,
1851         TARGET_PROMOTE_PROTOTYPES): Likewise.
1852         * config/ia64/ia64-protos.h (ia64_function_value,
1853         ia64_hpux_function_arg_padding): Likewise.
1854         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
1855         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
1856         ia64_hpux_function_arg_padding): Likewise.
1857         * config/iq2000/iq2000-protos.h (function_arg,
1858         iq2000_function_value): Likewise.
1859         * config/iq2000/iq2000.c (iq2000_return_in_memory,
1860         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
1861         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1862         function_arg, iq2000_function_value): Likewise.
1863         * config/m32c/m32c-protos.h (m32c_function_value,
1864         m32c_promote_function_return): Likewise.
1865         * config/m32c/m32c.c (m32c_pass_by_reference,
1866         m32c_promote_prototypes, m32c_promote_function_return,
1867         m32c_function_value): Likewise.
1868         * config/m32r/m32r.c (m32r_return_in_memory,
1869         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
1870         m32r_in_small_data_p): Likewise.
1871         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
1872         Likewise.
1873         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
1874         m68hc11_function_arg_padding): Likewise.
1875         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
1876         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
1877         m68k_function_value): Likewise.
1878         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
1879         mcore_function_value): Likewise.
1880         * config/mcore/mcore.c (handle_structs_in_regs,
1881         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
1882         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1883         mcore_num_arg_regs, mcore_function_value): Likewise.
1884         * config/mips/mips-protos.h (mips_pad_arg_upward,
1885         mips_function_value): Likewise.
1886         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
1887         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
1888         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1889         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
1890         mips_function_value): Likewise.
1891         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
1892         Likewise.
1893         * config/mmix/mmix.c (mmix_pass_by_reference,
1894         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
1895         mmix_encode_section_info): Likewise.
1896         * config/mn10300/mn10300-protos.h (mn10300_function_value):
1897         Likewise.
1898         * config/mn10300/mn10300.c (mn10300_return_in_memory,
1899         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
1900         mn10300_function_value): Likewise.
1901         * config/mt/mt-protos.h (mt_function_value): Likewise.
1902         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
1903         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
1904         * config/pa/pa-protos.h (function_arg_padding, function_value,
1905         pa_return_in_memory): Likewise.
1906         * config/pa/pa.c (pa_pass_by_reference,
1907         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1908         function_arg_padding, function_value, pa_return_in_memory):
1909         Likewise.
1910         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
1911         * config/rs6000/rs6000-protos.h (rs6000_function_value,
1912         function_arg_padding): Likewise.
1913         * config/rs6000/rs6000.c (rs6000_return_in_memory,
1914         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
1915         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
1916         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1917         function_arg_padding, altivec_expand_dst_builtin,
1918         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
1919         altivec_init_builtins, rs6000_common_init_builtins,
1920         rs6000_function_value): Likewise.
1921         * s390/s390-protos.h (s390_function_value): Likewise.
1922         * config/s390/s390.c (s390_function_arg_size,
1923         s390_pass_by_reference, s390_return_in_memory,
1924         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
1925         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
1926         * config/score/score-protos.h (score_function_value): Likewise.
1927         * config/score/score.c (score_arg_partial_bytes,
1928         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1929         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
1930         score_pass_by_reference, score_add_offset, score_function_value):
1931         Likewise.
1932         * config/sh/sh-protos.h (sh_attr_renesas_p,
1933         sh_promote_prototypes): Likewise.
1934         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
1935         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
1936         sh_attr_renesas_p): Likewise.
1937         * config/sparc/sparc-protos.h (function_value,
1938         function_arg_padding): Likewise.
1939         * config/sparc/sparc.c (sparc_promote_prototypes,
1940         sparc_return_in_memory, sparc_pass_by_reference,
1941         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1942         function_arg_record_value_2, function_arg_record_value_1,
1943         function_arg_record_value, function_arg_record_value,
1944         function_arg_padding, function_value): Likewise.
1945         * config/spu/spu-protos.h (spu_function_value): Likewise.
1946         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
1947         spu_function_value): Likewise.
1948         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
1949         Likewise.
1950         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
1951         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
1952         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1953         Likewise.
1954         * config/v850/v850.c (v850_return_in_memory,
1955         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
1956         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
1957         * config/xtensa/xtensa.c (xtensa_return_in_msb,
1958         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
1959         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1960         Likewise.
1961         * explow.c (promote_mode, hard_function_value): Likewise.
1962         * expr.h (hard_function_value, promote_mode): Likewise.
1963         * function.c (aggregate_value_p): Likewise.
1964         * hooks.c (hook_bool_const_tree_true): New.
1965         * hooks.h (hook_bool_const_tree_true): New.
1966         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
1967         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
1968         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1969         TARGET_RETURN_IN_MSB): Likewise.
1970         * target.h (promote_function_args, promote_function_return,
1971         promote_prototypes, return_in_memory, return_in_msb,
1972         pass_by_reference, must_pass_in_stack, callee_copies,
1973         function_value): Likewise.
1974         * targhooks.c (default_return_in_memory,
1975         hook_pass_by_reference_must_pass_in_stack,
1976         hook_callee_copies_named,
1977         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
1978         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
1979         default_function_value): Likewise. 
1980         * targhooks.h (default_return_in_memory,
1981         hook_pass_by_reference_must_pass_in_stack,
1982         hook_callee_copies_named,
1983         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
1984         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
1985         default_function_value): Likewise.
1986         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
1987         (equiv_class_label_hash, equiv_class_label_eq): Constify.
1988         * tree-vectorizer.c (bb_in_loop_p): Likewise.
1989         * tree.c (needs_to_live_in_memory): Likewise.
1990         * tree.h (struct tree_type, needs_to_live_in_memory,
1991         aggregate_value_p, must_pass_in_stack_var_size,
1992         must_pass_in_stack_var_size_or_pad): Likewise.
1993         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
1994         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
1995         lookup_filename): Likewise.
1997 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
1999         PR target/17390
2000         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
2001         fake fcomi i387 instruction for !TARGET_CMOVE.
2002         (ix86_expand_branch): Expand natural sequence with one jump for
2003         all targets, not only TARGET_CMOVE.
2004         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
2005         pattern to implement fake fcomi sequence.  Split instruction after
2006         reload to correct compare sequences.
2007         (*cmpfp_xf_cc): Ditto.
2008         (*cmpfp_<mode>_cc): Ditto.
2009         (*cmpfp_u_cc): Ditto.
2010         (*cmpfp_<mode>_cc): Ditto.
2012 2007-08-23  Richard Guenther  <rguenther@suse.de>
2014         * tree-pretty-print.c (dump_generic_node): Annotate
2015         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
2017 2007-08-23  Richard Guenther  <rguenther@suse.de>
2019         * builtins.c (expand_builtin_mathfn): Wrap argument in
2020         save_expr directly instead of re-building the call.
2021         (expand_builtin_mathfn_2): Likewise.
2022         (expand_builtin_mathfn_3): Likewise.
2023         (expand_builtin_interclass_mathfn): Likewise.
2024         (expand_builtin_int_roundingfn): Set arg.
2025         (expand_builtin_int_roundingfn_2): Likewise.
2027 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
2029         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
2030         *sse_nand<mode>3, *sse_xor<mode>3): New.
2032 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
2034         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
2035         * config/i386/i386.c (print_operand): Handle ';' code.  Output
2036         semicolon for TARGET_MACHO.
2037         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
2038         emit semicolon after 'lock' prefix.
2039         (sync_double_compare_and_swap<mode>): Ditto.
2040         (*sync_double_compare_and_swapdi_pic): Ditto.
2041         (*sync_compare_and_swap_cc<mode>): Ditto.
2042         (sync_double_compare_and_swap_cc<mode>): Ditto.
2043         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
2044         (sync_old_add<mode>): Ditto.
2045         (sync_add<mode>): Ditto.
2046         (sync_sub<mode>): Ditto.
2047         (sync_ior<mode>): Ditto.
2048         (sync_and<mode>): Ditto.
2049         (sync_xor<mode>): Ditto.
2051 2007-08-22  Chao-ying Fu  <fu@mips.com>
2053         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
2054         in DEF_RTL_EXPR.
2055         (copy_rtx): Handle CONST_FIXED.
2056         (rtx_equal_p): Likewise.
2057         * rtl.h (fixed_value.h): New include.
2058         (rtx_def): Add a new field of fixed_value to u.
2059         (XCNMPFV): Define for accessing fixed_value.
2060         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
2061         Define.
2062         * rtl.def (CONST_FIXED): New constant.
2063         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
2064         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
2065         US_ASHIFT): New codes.
2066         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
2067         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
2068         unsigned_fract_convert, unsigned_sat_fract): Document them.
2069         * varasm.c (assemble_integer): Extend to support fixed-point constants
2070         by using different machine classes.
2071         (decode_addr_const): Handle FIXED_CST.
2072         (const_hash_1): Likewise.
2073         (compare_constant): Likewise.
2074         (copy_constant): Likewise.
2075         (const_rtx_hash_1): Handle CONST_FIXED.
2076         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
2077         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
2078         MODE_VECTOR_UACCUM.
2079         (initializer_constant_valid_p): Handle FIXED_CST.
2080         (output_constant): Support FIXED_POINT_TYPE.
2081         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
2082         * cse.c (hash_rtx): Support CONST_FIXED.
2083         (exp_equiv_p): Likewise.
2084         (cannon_reg): Likewise.
2085         (fold_rtx): Likewise.
2086         (equiv_constant): Likewise.
2087         (cse_process_notes_1): Likewise.
2088         (count_reg_usage): Likewise.
2089         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
2090         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
2091         (wrap_constant): Check CONST_FIXED.
2092         (cselib_hash_rtx): Support CONST_FIXED.
2093         (cselib_subst_to_values): Likewise.
2094         * df-scan.c (df_uses_record): Likewise.
2095         * gcse.c (want_to_gcse_p): Likewise.
2096         (oprs_unchanged_p): Likewise.
2097         (oprs_not_set_p): Likewise.
2098         (compute_transp): Likewise.
2099         (extract_mentioned_regs_helper): Likewise.
2100         * genemit.c (gen_exp): Likewise.
2101         * local-alloc.c (equiv_init_varies_p): Likewise.
2102         (contains_replace_regs): Likewise.
2103         (memref_referenced_p): Likewise.
2104         * loop-invariant.c (check_maybe_invariant): Likewise.
2105         (hash_invariant_expr_1): Likewise.
2106         (invariant_expr_equal_p): Likewise.
2107         * postreload-gcse.c (oprs_unchanged_p): Likewise.
2108         * regclass.c (reg_scan_mark_refs): Likewise.
2109         * regrename.c (scan_rtx): Likewise.
2110         * resource.c (mark_referenced_resources): Likewise.
2111         (mark_set_resources): Likewise.
2112         * rtlanal.c (rtx_unstable_p): Likewise.
2113         (rtx_varies_p): Likewise.
2114         (count_occurrences): Likewise.
2115         (reg_mentioned_p): Likewise.
2116         (modified_between_p): Likewise.
2117         (modified_in_p): Likewise.
2118         (volatile_insn_p): Likewise.
2119         (volatile_refs_p): Likewise.
2120         (side_effects_p): Likewise.
2121         (may_trap_p_1): Likewise.
2122         (inequality_comparisons_p): Likewise.
2123         (computed_jump_p_1): Likewise.
2124         (commutative_operand_precedence): Likewise.
2125         * sched-deps.c (sched_analyze_2): Likewise.
2126         * sched-vis.c (print_value): Likewise.
2127         * reload.c (operands_match_p): Likewise.
2128         (subst_reg_equivs): Likewise.
2129         * reload1.c (eliminate_regs_1): Likewise.
2130         (elimination_effects): Likewise.
2131         (scan_paradoxical_subregs): Likewise.
2132         * alias.c (rtx_equal_for_memref_p): Likewise.
2133         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
2134         * emit-rtl.c (const_fixed_htab): New hash table.
2135         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
2136         Declare.
2137         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
2138         const_fixed_from_fixed_value): New functions.
2139         (verify_rtx_sharing): Handle CONST_FIXED.
2140         (copy_rtx_if_shared_1): Likewise.
2141         (reset_used_flags): Likewise.
2142         (set_used_flags): Likewise.
2143         (copy_insn_1): Likewise.
2144         (init_emit_once): Create const_fixed_htab.
2145         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
2147 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
2149         PR tree-optimization/32949
2150         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
2151         before failing for ivs with non-constant step.
2153 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
2155         * doc/md.texi (Iterators): Renamed from Macros.  All contents
2156         changed to reflect rename of respectively define_code_macro and
2157         define_mode_macro to define_code_iterator and define_mode_iterator.
2158         (Mode Iterators, Code Iterators): Similar.
2159         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
2160         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
2161         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
2162         (initialize_iterators, find_iterator, check_code_iterator)
2163         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
2164         (read_mapping, read_rtx_1): Similar.
2165         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
2166         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
2167         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
2168         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
2169         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
2170         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
2171         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
2172         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
2173         config/rs6000/sync.md, config/rs6000/rs6000.md,
2174         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
2175         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
2176         config/vax/vax.md, config/bfin/bfin.md: Similar.
2178 2007-08-22  David Daney  <ddaney@avtrex.com>
2180         * doc/install.texi (Testing): Mention testing on a simulator.
2182 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
2184         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
2186         * doc/libgcc.texi (Decimal float library routines): Fix formatting
2187         and rearrange floating point conversion functions into different
2188         categories.
2190 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2192         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
2193         dfa_post_advance_cycle): New scheduler hooks.
2194         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
2195         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
2196         new hooks.
2197         (TARGET_SCHED): Use them.
2198         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
2199         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
2200         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
2202         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
2203         function to facilitate debugging.
2204         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
2205         (output_insn_has_dfa_reservation_p): New static function to output
2206         insn_has_dfa_reservation_p ().
2207         (write_automata): Use it.
2208         * genattr.c (main): Output declaration for
2209         insn_has_dfa_reservation_p ().
2211 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
2212             Richard Guenther <rguenther@suse.de>
2213         
2214         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
2215         * simplify_rtx (simplify_binary_operation_1): Likewise.
2216                 
2217 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2219         PR rtl-optimization/32557
2220         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
2221         of REGNO (mws->mw_reg).
2223 2007-08-22  Richard Guenther  <rguenther@suse.de>
2225         PR middle-end/33007
2226         * builtins.c (expand_builtin_int_roundingfn): Replace call
2227         argument wrapped with SAVE_EXPR directly.
2228         (expand_builtin_int_roundingfn_2): Likewise.
2230 2007-08-22  Richard Guenther  <rguenther@suse.de>
2232         * tree-inline.c (inlinable_function_p): Restore disregarding
2233         inline limits for GNU extern inline functions.
2235 2007-08-22  Richard Guenther  <rguenther@suse.de>
2237         PR middle-end/32563
2238         * tree.c (host_integerp): Treat sizetype as signed as it is
2239         sign-extended.
2241 2007-08-21  Ian Lance Taylor  <iant@google.com>
2243         PR tree-optimization/33134
2244         * tree-vrp.c (adjust_range_with_scev): Call
2245         set_value_range_to_value.
2247 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
2249         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
2250         prototype.
2251         
2252 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
2254         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
2255         whitespace.
2257 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
2259         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
2260         cases to set eight bytes at a time.
2261         (expand_block_move): Likewise.
2262         
2263 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
2265         PR debug/32610
2266         * dwarf2out.c (gen_decl_die): Don't call
2267         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
2269 2007-08-21  Paul Brook  <paul@codesourcery.com>
2270             Nathan Sidwell  <nathan@codesourcery.com>
2271             Mark Mitchell  <mark@codesourcery.com>
2272             Joseph Myers  <joseph@codesourcery.com>
2274         * configure.ac: Add --with-pkgversion and --with-bugurl.
2275         * configure: Regenerate.
2276         * doc/install.texi: Document them.
2277         * version.c (version_string): Remove VERSUFFIX.
2278         (VERSUFFIX): Remove.
2279         (pkgversion_string): New.
2280         (bug_report_url): Do not hard-code initializer.
2281         * version.h (pkgversion_string): Declare.
2282         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
2283         Define.
2284         (version.o): Define PKGVERSION and BUGURL.
2285         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
2286         (%.pod): Define BUGURL.
2287         * gcc.c (process_command, main): Use pkgversion_string.
2288         * toplev.c (compile_file, print_version): Likewise.
2289         * protoize.c (main): Likewise.
2290         * gcov.c (print_version): Likewise.  Update copyright date.
2291         * gcov-dump.c (print_version): Likewise.  Update copyright date.
2292         * mips-tdump.c (main): Likewise.  Update copyright date.
2293         * mips-tfile.c (main): Likewise.  Update copyright date.
2294         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
2295         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
2296         shorten description.
2297         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
2298         * doc/gccint.texi: Likewise.
2299         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
2300         Update copyright date.
2302 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
2304         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
2305         (ix86_expand_strlensi_unroll_1): Ditto.
2306         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
2307         (ix86_expand_carry_flag_compare): Update comment.
2309 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
2311         PR middle-end/32912
2312         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
2313         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
2315 2007-08-21  Richard Guenther  <rguenther@suse.de>
2317         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
2319 2007-08-21  Richard Guenther  <rguenther@suse.de>
2321         PR middle-end/33122
2322         * fold-const.c (fold_binary): Remove index +p PTR folding.
2323         Fix types of POINTER_PLUS_EXPR generated by folding of
2324         (PTR +p B) +p A.
2326 2007-08-20  Chao-ying Fu  <fu@mips.com>
2328         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
2329         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
2330         RID_ONEWAY, so that it can be checked in declspecs_add_type.
2331         (c_common_fixed_point_type_for_size): Declare.
2332         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
2333         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
2334         (c_token_starts_declspecs): Likewise.
2335         (c_parser_declspecs): Likewise.
2336         (c_parser_attributes): Likewise.
2337         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
2338         (c_declspecs): Add saturating_p.
2339         * c-decl.c (build_null_declspecs): Initialize saturating_p.
2340         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
2341         _Sat.  Handle RID_SAT.
2342         Avoid using void, bool, char, int, float, double, _Decimal32,
2343         _Decimal64, _Decimal128, and complex with _Sat.
2344         Handle RID_FRACT and RID_ACCUM.
2345         Make sure _Sat is used with _Fract or _Accum.
2346         (finish_declspecs): Handle cts_fract and cts_accum.
2347         * c-common.c (fixed-value.h): New include.
2348         (constant_expression_warning): Handle FIXED_CST.
2349         (overflow_warning): Likewise.
2350         (warnings_for_convert_and_check): Likewise.
2351         (c_common_fixed_point_type_for_size): New.
2352         (c_common_type_for_mode): Handle fixed-point modes to
2353         return various saturating/non-saturating, signed/unsigned types.
2354         (c_common_signed_or_unsigned_type): Support fixed-point types.
2355         (shorten_compare): Check fixed-point zero.
2356         Handle FIXED_POINT_TYPE.
2357         (c_common_truthvalue_conversion): Handle FIXED_CST.
2358         Handle FIXED_POINT_TYPE.
2359         (c_common_nodes_and_builtins): Record builtin types for fixed-point
2360         types.
2361         (handle_mode_attribute): Handle fixed-point modes.  Need to check
2362         if the signness of base type and fixed-point modes are consistent.
2363         (handle_vector_size_attribute): Handle fixed-point modes.
2364         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
2365         (warn_for_div_by_zero): Check fixed-point zero.
2366         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
2367         a common fixed-point type based on fbit, ibit, sign, and saturation.
2368         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
2369         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
2370         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
2371         (convert_for_assignment): Support FIXED_POINT_TYPE.
2372         (digest_init): Handle FIXED_POINT_TYPE.
2373         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
2374         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
2375         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
2376         GE_EXPR, LT_EXPR, GT_EXPR.
2377         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
2378         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
2379         * target.h (gcc_target): Add fixed_point_supported_p.
2380         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
2381         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
2382         (default_fixed_point_supported_p): Define.
2383         * targhooks.h (default_fixed_point_supported_p): Declare.
2384         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
2385         * doc/install.texi (Configuration): Add --enable-fixed-point.
2386         * configure.ac (--enable-fixed-point): New to enable fixed-point
2387         arithmetic extension to C.  For mips targets, we enable it by default.
2388         * configure, config.in: Regenerate.
2390 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
2392         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
2394 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
2396         * dwarf2out.c (text_section_used): Move declaration outside ifdef
2397         DWARF2_DEBUGGING_INFO.
2398         (cold_text_section_used): Same.
2399         (cold_text_section): Same.
2401 2007-08-20  Richard Guenther  <rguenther@suse.de>
2403         * c-typeck.c (convert_for_assignment): Use the type of
2404         the member for the initialization.
2406 2007-08-20  Richard Guenther  <rguenther@suse.de>
2408         * c-objc-common.c (c_disregard_inline_limits): Remove.
2409         * c-objc-common.h (c_disregard_inline_limits): Likewise.
2410         * cgraphunit.c (cgraph_process_new_functions): Call
2411         disregard_inline_limits_p.
2412         (cgraph_preserve_function_body_p): Likewise.
2413         * ipa-inline.c (compute_inline_parameters): Likewise.
2414         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
2415         Remove.
2416         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
2417         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
2418         disregard_inline_limits langhook.
2419         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
2420         Remove.
2421         * langhooks.h (lang_hooks_for_tree_inlining): Remove
2422         disregard_inline_limits langhook.
2423         * tree-inline.c (disregard_inline_limits_p): New function.
2424         * tree-inline.h (disregard_inline_limits_p): Declare.
2426 2007-08-20  Richard Guenther  <rguenther@suse.de>
2428         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
2429         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
2430         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
2431         auto_var_in_fn_p langhook.
2432         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
2433         move ...
2434         * tree.c (auto_var_in_fn_p): ... here.
2435         (find_var_from_fn): Call auto_var_in_fn_p directly.
2436         * langhooks.h (lang_hooks_for_tree_inlining): Remove
2437         auto_var_in_fn_p langhook.
2438         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
2439         (copy_body_r): Likewise.
2440         (self_inlining_addr_expr): Likewise.
2441         * tree.h (auto_var_in_fn_p): Declare.
2443 2007-08-20  Richard Guenther  <rguenther@suse.de>
2445         * tree.c (WALK_SUBTREE): Call walk_tree_1.
2446         (walk_type_fields): Take lh parameter.
2447         (walk_tree): Rename to ...
2448         (walk_tree_1): ... this.  Do not call the walk_subtrees
2449         langhook but the now passed callback.  Pass lh on recursion.
2450         (walk_tree_without_duplicates): Rename to ...
2451         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
2452         and call walk_tree_1.
2453         * tree.h (walk_tree_lh): New typedef.
2454         (walk_tree_1): Declare.
2455         (walk_tree_without_duplicates_1): Likewise.
2456         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
2457         (walk_tree_without_duplicates): New define to
2458         walk_tree_without_duplicates_1 with NULL lh parameter.
2459         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
2460         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
2461         langhook.
2462         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
2463         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
2464         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
2465         initializer.
2467 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2469         PR middle-end/30564
2470         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
2471         code in front of the compacting of basic blocks.
2472         Move the folding of statements inbetween the cgraph checking
2473         and compacting of basic blocks.
2475 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2476            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
2478         PR target/32522
2479         * config/alpha/alpha.c (va_list_skip_additions): Check for
2480         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
2481         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
2482         PLUS_EXPR when checking ap.__base.
2483         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
2484         when doing addition on pointer types.  Use size_int instead of
2485         build_int_cst.
2486         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
2487         ptr_type in the second operand.
2489 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
2491         PR target/33115
2492         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
2494 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2496         PR middle-end/32940
2497         * cfgexpand.c  (expand_one_register_var): Mark pointer
2498         DECL_ARTIFICIAL as REG_POINTER also.
2499         * stmt.c (expand_decl): Likewise.
2501 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
2503         Fix PR 32772
2504         Fix PR 32716
2505         Fix PR 32328
2506         Fix PR 32303
2508         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
2509         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
2510         on_worklist argument and avoid adding things to worklist multiple
2511         times.
2512         (add_to_worklist): Ditto.
2513         (mark_aliases_call_clobbered): Mark entire structure clobbered if
2514         single SFT is clobbered.
2515         (set_initial_properties): Ditto.
2516         (compute_call_clobbered): Update for changes to function
2517         arguments.
2518         (create_overlap_variables_for): Always create SFT for offset 0.
2519         (create_structure_vars): Handle PHI's, since we are in SSA form at
2520         this point.
2521         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
2522         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
2523         TARGET_MEM_REF.
2524         (add_vars_for_offset): Figure out aliases from access + points-to.
2525         (add_virtual_operand): Use add_vars-for_offset.
2526         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
2527         (add_call_clobber_ops): Remove makes_clobbering_call set.
2528         (get_expr_operands): Always pass through the INDIRECT_REF
2529         reference.
2530         * tree-ssa-structalias.c (struct constraint_graph): Remove
2531         variables member.
2532         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
2533         address_taken, pt_used, number_incoming.
2534         (FIRST_ADDR_NODE): Removed.
2535         (merge_graph_nodes): Remove broken code for the moment.
2536         (init_graph): New function.
2537         (build_pred_graph): Remove code to init_graph.
2538         Add location equivalence support.
2539         (struct scc_info): Rename roots to deleted.
2540         (scc_visit): Ditto.
2541         (init_scc_info): Ditto
2542         (init_topo_info): Use graph->size.
2543         (compute_topo_order): Ditto.
2544         (do_da_constraint): Removed.
2545         (do_sd_constraint): Remove calls to find().
2546         set_union_with_increment should always get 0 as last arg here.
2547         (do_complex_constraint): Replace do_da_constraint with assert.
2548         Stop calling find.
2549         (struct equiv_class_label): New.
2550         (pointer_equiv_class_table): Ditto.
2551         (location_equiv_class_table): Ditto.
2552         (equiv_class_label_hash): Ditto.
2553         (equiv_class_label_eq): Ditto
2554         (equiv_class_lookup): Ditto.
2555         (equiv_class_ladd): Ditto.
2556         (pointer_equiv_class): Ditto.
2557         (location_equiv_class): Ditto.
2558         (condense_visit): Rename and rewrite from label_visit to do only
2559         SCC related stuff for HU.
2560         (label_visit): Do HU work for HU.
2561         (perform_var_substitution): Update to do HU and location
2562         equivalence.
2563         (free_var_substitution_info): Update to free HU and location
2564         equivalence structures.  */
2565         (find_equivalent_node): Update for pointer but not location
2566         equivalence.
2567         (unite_pointer_equivalences): New function.
2568         (move_complex_constraints): Rewrite to only do moving.
2569         (rewrite_constraints): Split out of move_complex_constraints.
2570         (solve_graph): Use graph->size.
2571         (process_constraint_1): Add from_call argument, use it.
2572         Split *a = &b into two constraints.
2573         (process_constraint): Use new process_constraint_1.
2574         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
2575         (get_constraint_for): Handle non-pointer integers properly.
2576         Remove code that used to handle structures.
2577         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
2578         with unknown addends.
2579         (handle_rhs_call): New function.
2580         (find_func_aliases): Use handle_rhs_call.
2581         (set_uids_in_ptset): Add an assert.
2582         (set_used_smts): Fix bug in not considering unified vars.
2583         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
2584         (compute_points_to_sets): Update for other function changes.
2585         (delete_points_to_sets): Ditto.
2586         (ipa_pta_execute): Ditto.
2587         (pass_ipa_pta): We need to update SSA after ipa_pta.
2588         
2589 2007-08-19  Jan Hubicka  <jh@suse.cz>
2591         * i386.md: Replace "rim" and "mri" constraints by "g".
2593 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
2595         * dwarf2out.c (text_section_used, cold_text_section_used,
2596         cold_text_section, dwarf2out_note_section_used): New.
2597         (dwarf2out_init): Initialize cold_text_section.
2598         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
2599         dwarf2out_note_section_used.
2600         (size_of_aranges): Only count entry for text section if it was
2601         used.  Count entry for cold text section if it was used.
2602         (output_aranges): Only output entries for text section and cold
2603         text section if they were used.
2605 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
2607         * tree-pretty-print.c (debug_generic_expr): Add a comment about
2608         the function.
2609         (debug_generic_stmt): Likewise.
2610         (debug_tree_chain): Likewise.
2612 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2614         * tree-data-refs.c (split_constant_offset): Expose.
2615         * tree-data-refs.h (split_constant_offset): Add declaration.
2617         * tree-vectorizer.h (dr_alignment_support): Renamed
2618         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
2619         Added a new value dr_explicit_realign.
2620         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
2621         dr_offset, dr_step, and dr_aligned_to, along with new access
2622         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
2623         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
2624         STMT_VINFO_DR_ALIGNED_TO.
2626         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
2627         documentation.
2628         In case of outer-loop vectorization with non-fixed misalignment - use
2629         the dr_explicit_realign scheme instead of the optimized realignment
2630         scheme.
2631         (new_stmt_vec_info): Initialize new fields.
2633         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
2634         'nested_in_vect_loop' case. Change verbosity level.
2635         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
2636         Don't fail on zero step in the outer-loop for loads.
2637         (vect_analyze_data_refs): Call split_constant_offset to calculate
2638         base, offset and init relative to the outer-loop.
2640         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
2641         BSI function argument with a new function argument - at_loop.
2642         Simplify the condition that determines STEP. Takes additional argument
2643         INV_P. Support outer-loop vectorization (handle the
2644         nested_in_vect_loop case), including zero step in the outer-loop. Call
2645         vect_create_addr_base_for_vector_ref with additional argument.
2646         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
2647         Updated function documentation. Handle the 'nested_in_vect_loop' case.
2648         Fixed and simplified calculation of step.
2649         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
2650         of bsi, and with additional argument. Call bump_vector_ptr with
2651         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
2652         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
2653         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
2654         when the realignment setup needs to take place inside the loop.
2655         Support the dr_explicit_realign scheme. Allow generating the optimized
2656         realignment scheme for outer-loop vectorization. Added documentation.
2657         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
2658         the 'nested_in_vect_loop' case, including loads that are invariant in
2659         the outer-loop and the realignment schemes. Handle the case when the
2660         realignment setup needs to take place inside the loop. Call
2661         vect_setup_realignment with additional arguments.  Call
2662         vect_create_data_ref_ptr with additional argument and with loop instead
2663         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
2664         (vect_gen_niters_for_prolog_loop): Call
2665         vect_create_addr_base_for_vector_ref with additional arguments.
2666         (vect_create_cond_for_align_checks): Likewise.
2667         (bump_vector_ptr): Updated to support the new dr_explicit_realign
2668         scheme: takes additional argument bump; argument ptr_incr is now
2669         optional; updated documentation.
2670         (vect_init_vector): Takes additional argument (bsi). Use it, if
2671         available, to insert the vector initialization.
2672         (get_initial_def_for_induction): Pass additional argument in call to
2673         vect_init_vector.
2674         (vect_get_vec_def_for_operand): Likewise.
2675         (vect_setup_realignment): Likewise.
2676         (vectorizable_load): Likewise.
2678 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2680         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
2681         as argument instead of struct loop.
2682         (nested_in_vect_loop_p): New function.
2683         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
2684         vect_used_in_outer.
2685         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
2686         from other phis in the loop.
2687         (destroy_loop_vec_info): Add additional argument to declaration.
2689         * tree-vectorizer.c (supportable_widening_operation): Also check if
2690         nested_in_vect_loop_p (don't allow changing the order in this case).
2691         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
2692         of struct loop. Call nested_in_vect_loop_p and don't require
2693         flag_unsafe_math_optimizations if it returns true.
2694         (new_stmt_vec_info): When setting def_type for phis differentiate 
2695         loop-header phis from other phis.
2696         (bb_in_loop_p): New function.
2697         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
2698         just update their loop_vinfo.  Order of BB traversal now matters -
2699         call dfs_enumerate_from with bb_in_loop_p.
2700         (destroy_loop_vec_info): Takes additional argument to control whether
2701         stmt_vinfo of the loop stmts should be destroyed as well.
2702         (vect_is_simple_reduction): Allow the "non-reduction" use of a
2703         reduction stmt to be defines by a non loop-header phi.
2704         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
2706         * tree-vect-transform.c (vectorizable_reduction): Call
2707         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
2708         (vectorizable_call): Likewise.
2709         (vectorizable_conversion): Likewise.
2710         (vectorizable_operation): Likewise.
2711         (vectorizable_type_promotion): Likewise.
2712         (vectorizable_type_demotion): Likewise.
2713         (vectorizable_store): Likewise.
2714         (vectorizable_live_operation): Likewise.
2715         (vectorizable_reduction): Likewise. Also pass loop_info to
2716         vect_is_simple_reduction instead of loop.
2717         (vect_init_vector): Call nested_in_vect_loop_p.
2718         (get_initial_def_for_reduction): Likewise.
2719         (vect_create_epilog_for_reduction): Likewise.
2720         (vect_init_vector): Check which loop to work with, in case there's an
2721         inner-loop.
2722         (get_initial_def_for_inducion): Extend to handle outer-loop
2723         vectorization. Fix indentation.
2724         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
2725         In the case vect_induction_def get the vector def from the induction
2726         phi node, instead of calling get_initial_def_for_inducion.
2727         (get_initial_def_for_reduction): Extend to handle outer-loop 
2728         vectorization.
2729         (vect_create_epilog_for_reduction): Extend to handle outer-loop
2730         vectorization.
2731         (vect_transform_loop): Change assert to just skip this case.  Add a
2732         dump printout.
2733         (vect_finish_stmt_generation): Add a couple asserts.
2735         (vect_estimate_min_profitable_iters): Multiply
2736         cost of inner-loop stmts (in outer-loop vectorization) by estimated
2737         inner-loop bound.
2738         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
2739         this is an inner-loop reduction in outer-loop vectorization.
2741         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
2742         Same code as what used to be vect_analyze_scalar_cycles, only with
2743         additional argument loop, and loop_info passed to
2744         vect_is_simple_reduction instead of loop.
2745         (vect_analyze_scalar_cycles): Code factored out into
2746         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
2747         Updated documentation.
2748         (analyze_operations): Check for inner-loop loop-closed exit-phis during
2749         outer-loop vectorization that are live or not used in the outerloop,
2750         cause this requires special handling.
2751         (vect_enhance_data_refs_alignment): Don't consider versioning for
2752         nested-loops.
2753         (vect_analyze_data_refs): Check that there are no datarefs in the
2754         inner-loop.
2755         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
2756         and vect_used_in_outer_by_reduction cases.
2757         (process_use): Also consider the case of outer-loop stmt defining an
2758         inner-loop stmt and vice versa.
2759         (vect_analyze_loop_1): New function.
2760         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
2761         loops.  Call vect_analyze_loop_1.
2762         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
2763         been vectorized.  Call destroy_loop_vec_info with additional argument.
2765         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
2766         in the inner-loop when doing outer-loop vectorization. Add
2767         documentation and printout.
2768         (vect_recog_dot_prod_pattern): Likewise. Also add check for
2769         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
2771 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
2773         * tree-affine.h (print_aff): New prototype.
2774         (debug_aff): Likewise.
2775         * tree-affine.c (print_aff): New function.
2776         (debug_aff): Likewise.
2778 2007-08-18  Paul Brook  <paul@codesourcery.com>
2779             Joseph Myers  <joseph@codesourcery.com>
2781         * common.opt (-fdebug-prefix-map=): New option.
2782         * opts.c: Include debug.h.
2783         (common_handle_option): Handle -fdebug-prefix-map.
2784         * final.c: Include ggc.h.
2785         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
2786         remap_debug_filename): New.
2787         * Makefile.in (final.o, opts.o): Update dependencies.
2788         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
2789         * configure.ac: Check for assembler --debug-prefix-map support.
2790         * configure, config.in: Regenerate.
2791         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
2792         (ASM_DEBUG_SPEC): Include ASM_MAP.
2793         * doc/install.texi (--with-debug-prefix-map): Document.
2794         * doc/invoke.texi (-fdebug-prefix-map): Document.
2795         * dbxout.c (dbxout_init, dbxout_start_source_file,
2796         dbxout_source_file): Call remap_debug_filename.
2797         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
2798         dwarf2out_start_source_file, dwarf2out_finish): Call
2799         remap_debug_filename.
2800         (file_table_relative_p): Do not check d->emitted_number.
2801         * toplev.c (output_file_directive): Call remap_debug_filename.
2802         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
2803         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
2805 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2807         * loop-invariant.c (find_invariants_to_move): Add missing macro
2808         argument.
2810 2007-08-17  Tom Tromey  <tromey@redhat.com>
2812         * tree.h (struct tree_label_decl): Removed old "java" fields.
2814 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
2815             Nigel Stephens  <nigel@mips.com>
2817         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
2818         Treat -mno-data-in-code and -mcode-xonly as aliases for
2819         -mcode-readable=no and -mcode-readable=pcrel respectively.
2820         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
2821         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
2822         (MULTILIB_DIRNAMES): Update accordingly.
2824 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
2826         * Makefile.in (version.o): Depend on $(REVISION) only if
2827         REVISION_s is defined.
2829 2007-08-17  Sa Liu  <saliu@de.ibm.com>
2830             Ulrich Weigand  <uweigand@de.ibm.com>
2832         PR middle-end/32970
2833         * tree.c (reconstruct_complex_type): For a pointer to a vector,
2834         use build_qualified_type to retain qualifiers of the base type.
2836 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
2838         * config/score/score.md : Update pattern tablejump.
2839         * config/score/score.c : Update score_initialize_trampoline 
2840         function.
2841         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
2842         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
2843         * doc/contrib.texi: Add my entry.
2845 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
2847         * Makefile.in (REVISION): New.
2848         (REVISION_c): New.
2849         (REVISION_s): New.
2850         (version.o): Also depend on $(REVISION). Add
2851         -DREVISION=$(REVISION_s).
2853         * version.c (version_string): Add REVISION.
2855 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
2857         * tree-eh.c (lower_try_finally_onedest): Reset the locus
2858         of GOTO that's relocated to a different block.
2860 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2862         * c-common.c (const_strip_array_types): New.
2863         * c-common.h (lang_missing_noreturn_ok_p): Delete.
2864         (const_strip_array_types): New.
2865         * c-objc-common.c (c_disregard_inline_limits,
2866         c_warn_unused_global_decl): Constify.
2867         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
2868         c_vla_type_p, c_incomplete_type_error): Likewise.
2869         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
2870         * hooks.c (hook_bool_const_tree_false): New.
2871         * hooks.h (hook_bool_const_tree_false): Likewise.
2872         * langhooks-def.h (lhd_warn_unused_global_decl,
2873         lhd_incomplete_type_error, lhd_expr_size,
2874         lhd_tree_inlining_disregard_inline_limits,
2875         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
2876         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
2877         * langhooks.c (lhd_warn_unused_global_decl,
2878         lhd_incomplete_type_error,
2879         lhd_tree_inlining_disregard_inline_limits,
2880         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
2881         lhd_expr_size): Likewise.
2882         * langhooks.h (lang_hooks_for_tree_inlining,
2883         lang_hooks_for_tree_dump, lang_hooks_for_types,
2884         lang_hooks_for_decls, lang_hooks): Likewise.
2885         * pointer-set.c (pointer_set_t, pointer_set_create,
2886         pointer_set_contains, insert_aux, pointer_set_insert,
2887         pointer_set_traverse, pointer_map_t, pointer_map_create,
2888         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
2889         Likewise.
2890         * pointer-set.h (pointer_set_contains, pointer_set_insert,
2891         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
2892         pointer_map_traverse): Likewise.
2893         * predict.c (assert_is_empty): Likewise.
2894         * tree-affine.c (free_name_expansion): Likewise.
2895         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
2896         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
2897         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
2899 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
2901         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
2902         field.
2903         (destroy_loop_vec_info): Add call to VEC_free.
2904         * tree-vectorizer.h (may_alias_ddrs): Define.
2905         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
2906         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
2907         Change reporting to dump.
2908         (vect_is_duplicate_ddr): New.
2909         (vect_mark_for_runtime_alias_test): New.
2910         (vect_analyze_data_ref_dependences) Add call to
2911         vect_mark_for_runtime_alias_test.
2912         (vect_enhance_data_refs_alignment): Define local variable
2913         vect_versioning_for_alias_required, don't perform
2914         peeling for alignment if versioning for alias is
2915         required.
2916         (vect_enhance_data_refs_alignment): Use
2917         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
2918         PARAM_VECT_MAX_VERSION_CHECKS.
2919         * tree-vect-transform.c
2920         (vect_create_cond_for_alias_checks): New.
2921         (vect_transform_loop): Add call to
2922         vect_create_cond_for_alias_checks.
2923         (vect_vfa_segment_size): New.
2924         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
2925         Rename.
2926         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
2927         * gcc/doc/invoke.texi
2928         (vect-max-version-for-alignment-checks): Document.
2929         (vect-max-version-for-alias-checks): Document.
2930         (vect-max-version-checks): Remove.
2931      
2932 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
2934         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
2935         the same line as the instruction for all asm dialects.
2936         (*rep_movsi): Ditto.
2937         (*rep_movsi_rex64): Ditto.
2938         (*rep_movqi): Ditto.
2939         (*rep_movqi_rex64): Ditto.
2940         (*rep_stosdi_rex64): Ditto.
2941         (*rep_stossi): Ditto.
2942         (*rep_stossi_rex64): Ditto.
2943         (*rep_stosqi): Ditto.
2944         (*rep_stosqi_rex64): Ditto.
2945         (*cmpstrnqi_nz_1): Ditto.
2946         (*cmpstrnqi_nz_rex_1): Ditto.
2947         (*cmpstrnqi_1): Ditto.
2948         (*cmpstrnqi_rex_1): Ditto.
2949         (*strlenqi_1): Ditto.
2950         (*strlenqi_rex_1): Ditto.
2951         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
2952         prefix on the same line as the instruction for all asm dialects.
2953         (sync_double_compare_and_swap<mode>): Ditto.
2954         (*sync_double_compare_and_swapdi_pic): Ditto.
2955         (*sync_compare_and_swap_cc<mode>): Ditto.
2956         (sync_double_compare_and_swap_cc<mode>): Ditto.
2957         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
2958         (sync_old_add<mode>): Ditto.
2959         (sync_add<mode>): Ditto.
2960         (sync_sub<mode>): Ditto.
2961         (sync_ior<mode>): Ditto.
2962         (sync_and<mode>): Ditto.
2963         (sync_xor<mode>): Ditto.
2965 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
2967         PR middle-end/32897
2968         * reload.c (find_reloads): Check that the memory returned by
2969         find_reloads_toplev was not the result of forcing a constant
2970         to memory.
2971         (find_reloads_toplev): Always use simplify_gen_subreg to get
2972         the subreg of a constant.  If the result is also a constant,
2973         but not a legitimate one, force it into the constant pool
2974         and reload its address.
2976 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
2978         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
2979         POPCOUNT.
2981 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
2983         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
2984         directive for the current vector ABI.
2986 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
2988         PR target/32963
2989         * caller-save.c (reg_save_code): Set invalide status on restore code.
2990         
2991 2007-08-15  Diego Novillo  <dnovillo@google.com>
2993         * tree-ssa-alias.c (compute_memory_partitions): Use
2994         alias_bitmap_obstack to allocate bitmaps.
2995         (reset_alias_info): Factor out of init_alias_info.
2996         Mark all name tags not associated to an SSA name for renaming.
2997         (init_alias_info): Call it.
2998         (create_name_tags): Tidy.  Add comments.
2999         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
3001 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
3003         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
3004         scheduler dependencies.
3006 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3008         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
3009         "register_operand".
3010         (*iorsi_1_zext): Likewise.
3011         (*iorsi_1_zext_imm): Likewise.
3012         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
3013         with "rm"/"xm" constraint.
3014         (sse2_vmsqrtv2df2): Likewise.
3016 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
3018         PR middle-end/33074
3019         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
3020         REG_LIBCALL note.
3022 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
3024         * tree-pass.h (PROP_pta): Removed.
3025         (TODO_rebuild_alias): New.
3026         (pass_may_alias): Removed.
3027         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
3028         aliasing if we changed something.
3029         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
3030         SSA internally.
3031         (pass_may_alias): Removed.
3032         (create_structure_vars): Return TODO_rebuild_alias.
3033         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
3034         * tree-sra.c (tree_sra): Only rebuild aliasing if something
3035         changed.
3036         (tree_sra_early): We never affect aliasing right now.
3037         * tree-flow.h (compute_may_aliases): New prototype.
3038         * passes.c: Remove pass_may_alias from the passes.
3039         (execute_function_todo): Support TODO_rebuild_alias.    
3041 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
3043         * i386.c: (legitimize_address): Move dllimported variable check
3044         infront of legitimizing pic address of CONST symbols.
3046 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
3048         PR tree-optimization/32941
3049         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
3050         (goto_queue_cmp): Remove.
3051         (find_goto_replacement): Change search method.
3052         (maybe_record_in_goto_queue): Add assert.
3053         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
3054         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
3056 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3058         * alias.c (component_uses_parent_alias_set): Constify.
3059         * alias.h (component_uses_parent_alias_set): Likewise.
3060         * cfgrtl.c (print_rtl_with_bb): Likewise.
3061         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
3062         mpz_get_double_int): Likewise.
3063         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
3064         mpz_get_double_int): Likewise.
3065         * expr.c (is_aligning_offset, undefined_operand_subword_p,
3066         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
3067         Likewise.
3068         * expr.h (safe_from_p): Likewise.
3069         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
3070         Likewise.
3071         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
3072         zero_sized_type, goa_lhs_expr_p): Likewise.
3073         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
3074         * rtl.h (print_rtl_with_bb): Likewise.
3075         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
3076         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
3077         * tree-flow-inline.h (bb_stmt_list): Constify.
3078         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
3079         cbsi_stmt): New.
3080         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
3081         const_first_stmt, const_last_stmt): New.
3082         (block_may_fallthru, empty_block_p): Constify.
3083         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
3084         EXPR_ONLY_BODY): New.
3085         (expr_first, expr_last, expr_only): Use macro for body.
3086         (const_expr_first, const_expr_last, const_expr_only): New.
3087         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
3088         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
3089         ctsi_prev, ctsi_stmt): New.
3090         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
3091         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
3092         * tree-ssa-loop-niter.c (loop_only_exit_p,
3093         derive_constant_upper_bound): Likewise.
3094         * tree-ssa-phiopt.c (empty_block_p): Likewise.
3095         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
3096         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
3097         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
3098         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
3099         * tree.c (get_type_static_bounds): Likewise.
3100         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
3101         (get_type_static_bounds): Constify.
3103 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3105         PR target/30315
3106         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
3107         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
3108         (*<addsub><mode>3_cc_overflow): New.
3109         (*add<mode>3_cconly_overflow): New.
3110         (*sub<mode>3_cconly_overflow): New.
3111         (*<addsub>si3_zext_cc_overflow): New.
3112         * config/i386/predicates.md (fcmov_comparison_operator): Accept
3113         CCCmode for LTU, GTU, LEU and GEU.
3114         (ix86_comparison_operator): Likewise.
3115         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
3116         * config/i386/i386.c (put_condition_code): Support CCCmode.
3117         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
3118         or MINUS expressions.
3120 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
3122         PR c/30428
3123         * c-typeck.c (build_binary_op): Disallow vector float types with
3124         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
3126 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
3128         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
3129         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
3130         (dep_def): New typedef.
3131         (init_dep_1, sd_debug_dep): Declare functions.
3132         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
3133         (debug_dep_links): Remove.
3134         (struct _deps_list): New field 'n_links'.
3135         (DEPS_LIST_N_LINKS): New macro.
3136         (FOR_EACH_DEP_LINK): Remove.
3137         (create_deps_list, free_deps_list, delete_deps_list): Remove
3138         declaration.
3139         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
3140         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
3141         (copy_deps_list_change_con, move_dep_link): Ditto.
3142         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
3143         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
3144         'dep_count'.
3145         (INSN_BACK_DEPS): Remove.
3146         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
3147         New macros.
3148         (INSN_DEP_COUNT): Remove.
3149         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
3150         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
3151         Declare global variables.
3152         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
3153         (add_forw_dep, compute_forward_dependences): Remove declarations.
3154         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
3155         (add_back_forw_dep, delete_back_forw_dep): Ditto.
3156         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
3157         functions.
3158         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
3159         New constants.
3160         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
3161         (sd_list_types_def): New typedef.
3162         (sd_next_list): Declare function.
3163         (struct _sd_iterator): New type.
3164         (sd_iterator_def): New typedef.
3165         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
3166         functions.
3167         (FOR_EACH_DEP): New cycle wrapper.
3168         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
3169         Declare functions.
3170         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
3171         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
3172         Ditto.
3174         * sched-deps.c (init_dep_1): Make global.
3175         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
3176         constants.
3177         (dump_dep): New static function.
3178         (dump_dep_flags): New static variable.
3179         (sd_debug_dep): New function.
3180         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
3181         the list.
3182         (move_dep_link): Use remove_from_deps_list (), instead of
3183         detach_dep_link ().
3184         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
3185         (dep_link_is_detached_p): New static function.
3186         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
3187         instead.
3188         (dn_pool, dl_pool): New alloc_pools.
3189         (dn_pool_diff, dl_pool_diff): New static variables.
3190         (create_dep_node, delete_dep_node): New static function.
3191         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
3192         (deps_list_empty_p): Make it static.  Use 'n_links' field.
3193         (deps_pools_are_empty_p): New static function.
3194         (alloc_deps_list, delete_deps_list): Remove.
3195         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
3196         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
3197         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
3198         (forward_dependency_cache): Remove.
3199         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
3200         'back' from the names.  Change signature to use dep_t instead of
3201         equivalent quad.
3202         (add_back_dep): Ditto.  Make global.
3203         (check_dep_status): Rename to check_dep ().
3204         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
3205         New functions.
3206         (sd_finish_insn): Ditto.
3207         (sd_find_dep_between_no_cache): New static function.
3208         (sd_find_dep_between): New function.
3209         (ask_dependency_caches, set_dependency_caches): New static functions.
3210         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
3211         (add_or_update_dep_1): Separate pieces of functionality into
3212         ask_dependency_caches (), update_dependency_caches (),
3213         change_spec_dep_to_hard (), update_dep ().
3214         (get_back_and_forw_lists): New static function.
3215         (sd_add_dep): Separate setting of dependency caches into
3216         set_dependency_caches ().
3217         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
3218         New functions.
3219         (sd_delete_dep): Ditto.
3220         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
3221         (dump_lists): New static function.
3222         (sd_debug_lists): New debug function.
3223         (delete_all_dependences, fixup_sched_groups): Update to use
3224         sd_* infrastructure.
3225         (sched_analyze_2): Create data-speculative dependency only if
3226         data-speculation is enabled.
3227         (sched_analyze_insn): If insn cannot be speculative, make all its
3228         dependencies non-speculative.
3229         (sched_analyze): Use sd_init_insn ().
3230         (add_forw_dep, compute_forward_dependencies): Remove.
3231         (delete_dep_nodes_in_back_deps): New static function.
3232         (sched_free_deps): New function.
3233         (init_dependency_caches): Init alloc_pools.
3234         (extend_depedency_caches): Update after removing of
3235         forward_dependency_cache.
3236         (free_dependency_caches): Ditto.  Free alloc_pools.
3237         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
3238         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
3239         Ditto.
3240         (add_back_forw_dep, delete_back_forw_dep): Ditto.
3241         (add_dependence): Use init_dep ().
3242         (get_dep_weak_1): New static function.
3243         (get_dep_weak): Move logic to get_dep_weak_1 ().
3244         (dump_ds): New static function moved from haifa-sched.c:
3245         debug_spec_status ().
3246         (debug_ds): New debug function.
3247         (check_dep_status): Rename to check_dep ().  Update to check whole
3248         dependencies.
3250         * haifa-sched.c (spec_info): Make global.
3251         (added_recovery_block_p): Rename to
3252         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
3253         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
3254         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
3255         to use new interfaces.
3256         (ok_for_early_queue_removal): Ditto.
3257         (schedule_block): Initialize logical uids of insns emitted by the
3258         target.
3259         (sched_init): Initialize new variable.
3260         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
3261         interfaces.
3262         (extend_global): Initialize insn data.
3263         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
3264         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
3265         new interfaces.
3266         (add_to_speculative_block): Update to use new interfaces.
3267         (create_recovery_block): Set new variables.
3268         (create_check_block_twin, fix_recovery_deps): Update to use new
3269         interfaces.
3270         (sched_insn_is_legitimate_for_speculation_p): New function.
3271         (speculate_insn): Move checking logic to
3272         sched_insn_is_legitimate_for_speculation_p ().
3273         (sched_remove_insn): Finalize sched-deps information of instruction.
3274         (clear_priorities, add_jump_dependencies): Update to use new
3275         interfaces.
3276         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
3277         
3278         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
3279         to use new interfaces.
3280         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
3281         (new_ready): Try to use control speculation only if it is available.
3282         (add_branch_dependences): Update to use new interfaces.
3283         (compute_block_backward_dependences): Rename to
3284         compute_block_dependences ().  Call
3285         targetm.sched.dependencies_evaluation_hook ().
3286         (free_block_dependencies): New static function.
3287         (debug_dependencies): Update to use new interfaces.
3288         (schedule_region): Remove separate computation of forward dependencies.
3289         Move call of targetm.sched.dependencies_evaluation_hook () to
3290         compute_block_dependences ().  Free dependencies at the end of
3291         scheduling the region.
3293         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
3294         new interfaces.
3295         (add_deps_for_risky_insns): Ditto.
3296         (schedule_ebb): Remove separate computation of forward dependencies.
3297         Free dependencies at the end of scheduling the ebb.
3299         * ddg.c (create_ddg_dependence): Update to use new interfaces.
3300         (build_intra_loop_deps): Ditto.  Remove separate computation of
3301         forward dependencies.  Free sched-deps dependencies.
3303         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
3304         to use new interfaces.
3305         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
3307         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
3308         new interfaces.
3309         (is_costly_group): Ditto.
3311 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3313         * alias.c (rtx_equal_for_memref_p): Constify.
3314         * basic-block.h (const_edge, const_basic_block): New.
3315         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
3316         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
3317         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
3318         probably_never_executed_bb_p, edge_probability_reliable_p,
3319         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
3320         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
3321         Likewise.
3322         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
3323         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
3324         Likewise.
3325         * cfganal.c (flow_active_insn_p, forwarder_block_p,
3326         flow_nodes_print, dfs_enumerate_from): Likewise.
3327         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
3328         control_flow_insn_p, count_basic_blocks): Likewise.
3329         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
3330         get_loop_body_with_size, loop_exit_edge_p): Likewise.
3331         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
3332         average_num_loop_insns, loop_exit_edge_p,
3333         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
3334         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
3335         average_num_loop_insns, seq_cost): Likewise.
3336         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
3337         * dominance.c (dominated_by_p): Likewise.
3338         * emit-rtl.c (validate_subreg): Likewise.
3339         * except.c (can_throw_internal, can_throw_external): Likewise.
3340         * except.h (can_throw_internal, can_throw_external): Likewise.
3341         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
3342         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
3343         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
3344         simple_mem, store_ops_ok, load_kills_store, find_loads,
3345         store_killed_in_insn, store_killed_after, store_killed_before,
3346         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
3347         Likewise.
3348         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
3349         noce_mem_write_may_trap_or_fault_p): Likewise.
3350         * pointer-set.c (pointer_set_contains, pointer_map_contains):
3351         Likewise.
3352         * pointer-set.h (pointer_set_contains, pointer_map_contains):
3353         Likewise.
3354         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
3355         probably_cold_bb_p, probably_never_executed_bb_p,
3356         edge_probability_reliable_p, br_prob_note_reliable_p,
3357         can_predict_insn_p): Likewise.
3358         * regclass.c (reg_set_to_hard_reg_set): Likewise.
3359         * resource.c (return_insn_p): Likewise.
3360         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
3361         Likewise.
3362         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
3363         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
3364         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
3365         verify_gimple_modify_stmt): Likewise.
3366         * tree-chrec.c (is_not_constant_evolution,
3367         is_multivariate_chrec_rec, is_multivariate_chrec,
3368         chrec_contains_symbols, chrec_contains_undetermined,
3369         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
3370         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
3371         eq_evolutions_p, scev_direction): Likewise.
3372         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
3373         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
3374         chrec_contains_symbols_defined_in_loop,
3375         chrec_contains_undetermined, tree_contains_chrecs,
3376         evolution_function_is_affine_multivariate_p,
3377         evolution_function_is_univariate_p, chrec_zerop,
3378         evolution_function_is_constant_p, evolution_function_is_affine_p,
3379         evolution_function_is_affine_or_constant_p,
3380         tree_does_not_contain_chrecs, chrec_type): Likewise.
3381         * tree-data-ref.c (tree_fold_divides_p,
3382         object_address_invariant_in_loop_p, dr_may_alias_p,
3383         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
3384         same_access_functions, constant_access_functions,
3385         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
3386         Likewise.
3387         * tree-flow.h (scev_direction): Likewise.
3388         * tree-gimple.c (is_gimple_stmt): Likewise.
3389         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
3390         Likewise.
3391         * tree-pretty-print.c (op_prio): Likewise.
3392         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
3393         analyzable_condition, backedge_phi_arg_p): Likewise.
3394         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
3395         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
3396         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
3397         Likewise.
3399 2007-08-13  Dan Hipschman  <dsh@google.com>
3401         PR c/32953
3402         * c-format.c (check_format_arg): Move check for zero-length
3403         format strings below the check for unterminated strings.
3405 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
3407         PR C/30427
3408         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
3409         types.
3411 2007-08-13  Nick Clifton  <nickc@redhat.com>
3413         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
3415 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3417         PR fortran/32860
3418         * c-format.c (gcc_gfc_length_specs): New array.
3419         (gcc_gfc_char_table): Add unsigned specifier, and references to
3420         the l length modifier.
3421         (format_types_orig): Use the new gcc_gfc_length_specs.
3423 2007-08-12  Sa Liu  <saliu@de.ibm.com>
3425         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
3426         and with REG_RETVAL note after split.
3428 2007-08-11  David Daney  <ddaney@avtrex.com>
3430         * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
3431         as ATTRIBUTE_UNUSED.
3433 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
3434             Segher Boessenkool  <segher@kernel.crashing.org>
3436         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
3437         HAVE_LOCAL_CPU_DETECT not defined.
3439 2007-08-11  Jan Hubicka  <jh@suse.cz>
3441         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
3442         (cgraph_process_new_functions): Honor previous value of
3443         disregard_inline_limits.
3444         * ipa-inline.c (compute_inline_parameters): Likewise.
3446 2007-08-11  Ian Lance Taylor  <iant@google.com>
3448         * alias.h (alias_set_type): Define new type.
3449         (ALIAS_SET_MEMORY_BARRIER): Use it.
3450         * rtl.h: Include alias.h.
3451         (struct mem_attrs): Use alias_set_type.
3452         * tree.h: Include alias.h
3453         (struct tree_type): Use alias_set_type.
3454         (struct tree_struct_field_tag): Likewise.
3455         (struct tree_decl_common): Likewise.
3456         * alias.c (struct alias_set_entry): Use alias_set_type.
3457         (get_alias_set_entry, alias_set_subset_of): Likewise.
3458         (alias_sets_conflict_p): Likewise.
3459         (alias_sets_must_conflict_p): Likewise.
3460         (objects_must_conflict_p): Likewise.
3461         (get_alias_set, new_alias_set): Likewise.
3462         (record_alias_subset, record_component_aliases): Likewise.
3463         (varargs_set, frame_set): Change to alias_set_type.
3464         (get_varargs_alias_set): Use alias_set_type.
3465         (get_frame_alias_set): Likewise.
3466         * builtins.c (setjmp_alias_set): Change to alias_set_type.
3467         * dse.c (struct store_info): Use alias_set_type.
3468         (struct read_info, struct clear_alias_mode_holder): Likewise.
3469         (clear_alias_set_lookup, canon_address): Likewise.
3470         (record_store, check_mem_read_rtx): Likewise.
3471         (dse_record_singleton_alias_set): Likewise.
3472         (dse_invalidate_singleton_alias_set): Likewise.
3473         * emit-rtl.c (get_mem_attrs): Likewise.
3474         (set_mem_attributes_minus_bitpos): Likewise.
3475         (set_mem_alias_set): Likewise.
3476         * expr.c (store_constructor_field, store_field): Likewise.
3477         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
3478         * langhooks.c (lhd_get_alias_set): Likewise.
3479         * langhooks-def.h (lhd_get_alias_set): Likewise.
3480         * reload1.c (alter_reg): Likewise.
3481         * tree-flow.h (struct fieldoff): Likewise.
3482         * tree-ssa-alias.c (struct alias_map_d): Likewise.
3483         (may_alias_p, get_smt_for, create_sft): Likewise.
3484         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
3485         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
3486         (merge_smts_into): Likewise.
3487         * varasm.c (const_alias_set): Likewise.
3488         * c-common.c (strict_aliasing_warning): Likewise.
3489         (c_common_get_alias_set): Likewise.
3490         * dse.h (dse_record_singleton_alias_set): Update declaration.
3491         (dse_invalidate_singleton_alias_set): Likewise.
3492         * emit-rtl.h (set_mem_alias_set): Likewise.
3493         * c-common.h (c_common_get_alias_set): Likewise.
3494         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
3495         * print-tree.c (print_node): Likewise.
3496         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
3497         alias_set_type.
3498         (alpha_setup_incoming_varargs): Use alias_set_type.
3499         * config/i386/i386.c (setup_incoming_varargs_64): Use
3500         alias_set_type.
3501         (setup_incoming_varargs_ms_64): Likewise.
3502         (ix86_GOT_alias_set): Likewise.
3503         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
3504         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
3505         (set): Change to alias_set_type.
3506         (get_TOC_alias_set): Use alias_set_type.
3507         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
3508         declaration.
3509         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
3510         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
3511         alias_set_type.
3512         (struct_value_alias_set): Likewise.
3513         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
3515 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
3517         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
3518         * config/vxworks.h (TARGET_VXWORKS): Override.
3519         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
3520         "mips" if TARGET_VXWORKS.
3522 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
3524         * calls.c (avoid_likely_spilled_reg): New function.
3525         (expand_call): Use it.
3527 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3529         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
3531 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
3533         * config/mips/predicates.md (const_call_insn_operand): Invoke
3534         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
3536 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
3538         PR target/33042
3539         * config/rs6000/driver-rs6000.c: Include link.h.
3540         Use ElfW instead of wordsize-specif typedef.
3542 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3544         * system.h (CONST_CAST): New.
3545         * c-decl.c (c_make_fname_decl): Use it.
3546         * c-lex.c (cb_ident, lex_string): Likewise.
3547         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
3548         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
3549         give_switch, set_multilib_dir): Likewise.
3550         * gengtype-parse.c (string_seq, typedef_name): Likewise.
3551         * passes.c (execute_one_pass): Likewise.
3552         * prefix.c (update_path): Likewise.
3553         * pretty-print.c (pp_base_destroy_prefix): Likewise.
3554         * tree.c (build_string): Likewise.
3556 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
3558         * tree-flow-inline.h (is_exec_stmt): Remove.
3559         (is_label_stmt): Remove.
3560         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
3561         is_label_stmt.
3563 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3565         * lower-subreg.c (resolve_shift_zext): Don't adjust
3566         src_reg_num for wordmode operands.
3568 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
3569             David Ung  <davidu@mips.com>
3571         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
3572         (TARGET_SCHED_REORDER2): Define.
3573         (mips_maybe_swap_ready): New.
3574         (mips_last_74k_agen_insn): New.
3575         (mips_74k_agen_init): New.
3576         (mips_74k_agen_reorder): New function to group loads and stores
3577         in the ready queue.
3578         (mips_sched_init): New.  
3579         (mips_sched_reorder): Don't do initialization here.  Call
3580         mips_74k_agen_reorder.
3581         (mips_variable_issue): Call mips_74k_agen_init.
3583 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
3585         * tree-flow-inline.h (get_filename): Remove.
3587 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
3589         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
3590         argument.
3591         (mips_fetch_insns): Delete in favor of...
3592         (mips_load_store_insns): ...this new function.
3593         * config/mips/mips.c (mips_address_insns): Add a boolean argument
3594         to say whether multiword moves _might_ be split.
3595         (mips_fetch_insns): Delete in favor of...
3596         (mips_load_store_insns): ...this new function.
3597         (mips_rtx_costs): Update the call to mips_address_insns.
3598         (mips_address_cost): Likewise.
3599         * config/mips/mips.md (length): Use mips_load_store_insns instead
3600         of mips_fetch_insns.
3601         * config/mips/constraints.md (R): Use mips_address_insns rather
3602         than mips_fetch_insns.  Assume that the move never needs to be split.
3604 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
3606         * config/mips/mips.opt (mhard-float, msoft-float):  Make these
3607         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
3608         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
3609         * config/mips/mips.h (mips16_hard_float): Delete.
3610         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI):  Delete these
3611         definitions, and replace with....
3612         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
3613         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
3614         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
3615         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
3616         (override_options):  Replace MASK_SOFT_FLOAT references with
3617         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
3618         and mips16_hard_float when TARGET_MIPS16.
3619         
3620 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3622         PR c/32796
3623         * c-typeck.c (build_binary_op): Check for non pointer types before
3624         calling int_fits_type_p.
3626 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3628         PR middle-end/32813
3629         * fold-const.c (omit_one_operand): Return only the ommitted expression
3630         if the result is an empty statement.
3631         (pedantic_omit_one_operand): Likewise.
3633 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
3635         * c-typeck.c (readonly_error): Improve error for assignment.
3636         
3637         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
3638         expression. 
3639         (pp_c_expression): Ditto.
3641 2007-08-09  Simon Baldwin  <simonb@google.com>
3643         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
3644         break that was preventing simplify_associative_operation() for xor.
3646 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
3647             Nigel Stephens  <nigel@mips.com>
3649         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
3650         Document change in interpretation of value from boolean to
3651         tri-state integer.
3652         * optabs.c (expand_ffs, expand_ctz): New functions to compute
3653         ffs and ctz using clz.
3654         (expand_unop):  Call them.
3655         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
3656         result value.
3657         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
3658         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
3659         enable the new ffs expansion on this target.
3661 2007-08-09  Jan Hubicka  <jh@suse.cz>
3663         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
3664         (expand_ternary_op): Likewise.
3665         (expand_vec_shift_expr): Likewise.
3666         (expand_binop_directly): Likewise.
3667         (expand_binop): Likewise.
3668         (sign_expand_binop): Likewise.
3669         (expand_twoval_unop): Likewise.
3670         (expand_twoval_binop): Likewise.
3671         (expand_twoval_binop_libfunc): Likewise.
3672         (widen_clz): Likewise.
3673         (widen_bswap): Likewise.
3674         (expand_parity): Likewise.
3675         (expand_unop): Likewise.
3676         (expand_abs_nojump): Likewise.
3677         (expand_copysign): Likewise.
3678         (emit_no_conflict_block): Likewise.
3679         (emit_libcall_block): Likewise.
3680         (can_compare_p): Likewise.
3681         (prepare_cmp_insn): Likewise.
3682         (emit_cmp_and_jump_insn_1): Likewise.
3683         (prepare_float_lib_cmp): Likewise.
3684         (emit_conditional_add): Likewise.
3685         (gen_add2_insn): Likewise.
3686         (have_add2_insn): Likewise.
3687         (gen_sub2_insn): Likewise.
3688         (have_sub2_insn): Likewise.
3689         (can_extend_p): Likewise.
3690         (can_fix_p): Likewise.
3691         (can_float_p): Likewise.
3692         (expand_float): Likewise.
3693         (expand_fix): Likewise.
3694         (expand_sfix_optab): Likewise.
3695         (new_optab): Likewise.
3696         (new_convert_optab): Likewise.
3697         (init_libfuncs): Likewise.
3698         (init_interclass_conv_libfuncs): Likewise.
3699         (init_intraclass_conv_libfuncs): Likewise.
3700         (set_conv_libfunc): Likewise.
3701         (init_optabs): Likewise.
3702         (debug_optab_libfuncs): Likewise.
3703         (gen_cond_trap): Likewise.
3704         * optabs.h (optab_handler, convert_optab_hanlder): New.
3705         * genopinit.c: Update optabs generation table.
3706         * reload.c (find_reloads_address_1): Use optabs accestors.
3707         * builtins.c (expand_builtin_mathfn): Likewise.
3708         (expand_builtin_mathfn_2): Likewise.
3709         (expand_builtin_mathfn_3): Likewise.
3710         (expand_builtin_interclass_mathfn): Likewise.
3711         (expand_builtin_sincos): Likewise.
3712         (expand_builtin_cexpi): Likewise.
3713         (expand_builtin_powi): Likewise.
3714         (expand_builtin_strlen): Likewise.
3715         * dojump.c (do_jump): Likewise.
3716         * expr.c (convert_move): Likewise.
3717         (move_by_pieces): Likewise.
3718         (move_by_pieces_ninsns): Likewise.
3719         (can_store_by_pieces): Likewise.
3720         (store_by_pieces_1): Likewise.
3721         (emit_move_via_integer): Likewise.
3722         (emit_move_complex): Likewise.
3723         (emit_move_ccmode): Likewise.
3724         (emit_move_insn_1): Likewise.
3725         (emit_single_push_insn): Likewise.
3726         (store_constructor): Likewise.
3727         (expand_expr_real_1): Likewise.
3728         (do_store_flag): Likewise.
3729         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
3730         (enumerate_modes): Likewise.
3731         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
3732         (supportable_widening_operation): Likewise.
3733         (supportable_narrowing_operation): Likewise.
3734         * expmed.c (store_bit_field_1): Likewise.
3735         (extract_bit_field_1): Likewise.
3736         (expand_mult_highpart_optab): Likewise.
3737         (expand_smod_pow2): Likewise.
3738         (expand_divmod): Likewise.
3739         (emit_store_flag): Likewise.
3740         * tree-vect-patterns.c
3741         (vect_pattern_recog_1): Likewise.
3742         * tree-ssa-loop-prefetch.c
3743         (nontemporal_store_p): Likewise.
3744         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
3745         (vect_create_epilog_for_reduction): Likewise.
3746         (vectorizable_reduction): Likewise.
3747         (vectorizable_operation): Likewise.
3748         (vect_strided_store_supported): Likewise.
3749         (vectorizable_store): Likewise.
3750         (vect_strided_load_supported): Likewise.
3751         (vectorizable_load): Likewise.
3752         * combine.c (simplify_comparison): Likewise.
3753         * tree-vect-generic.c
3754         (type_for_widest_vector_mode): Likewise.
3755         (expand_vector_operations_1): Likewise.
3756         * config/spu/spu.c (spu_expand_mov): Likewise.
3757         (spu_emit_vector_compare): Likewise.
3758         * config/rs6000/rs6000.c
3759         (rs6000_emit_vector_compare): Likewise.
3760         * stmt.c (add_case_node): Likewise.
3761         * reload1.c (gen_reload):
3763 2007-08-09  Michael Matz  <matz@suse.de>
3765         * tree.h (fixed_zerop): Declare as taking a const_tree.
3766         * tree.c (fixed_zerop): Take a const_tree.
3768 2007-08-09  Ira Rosen  <irar@il.ibm.com>
3770         * tree-vect-transform.c (vectorizable_store): Remove call to
3771         copy_virtual_operands() and call mark_symbols_for_renaming() for
3772         the created vector store.
3773         (vect_setup_realignment): Don't call copy_virtual_operands() and
3774         update_vuses_to_preheader(). 
3775         (vectorizable_load): Don't call copy_virtual_operands(). 
3776         (update_vuses_to_preheader): Remove.
3778 2007-08-08  Chao-ying Fu  <fu@mips.com>
3780         * tree.def (FIXED_POINT_TYPE): New type.
3781         (FIXED_CST): New constant.
3782         (FIXED_CONVERT_EXPR): New expr.
3783         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
3784         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
3785         * tree.h (struct tree_base): Add saturating_flag.
3786         Remove one bit of spare for saturating_flag.
3787         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
3788         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
3789         FIXED_POINT_TYPE_P): Define.
3790         (TYPE_SATURATING): Define.
3791         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
3792         (struct tree_fixed_cst): New.
3793         (TYPE_IBIT, TYPE_FBIT): Define.
3794         (tree_node): Add fixed_cst.
3795         (enum tree_index): Add new enumeration values of
3796         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
3797         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
3798         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
3799         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
3800         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
3801         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
3802         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
3803         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
3804         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
3805         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
3806         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
3807         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
3808         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
3809         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
3810         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
3811         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
3812         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
3813         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
3814         (sat_short_fract_type_node, sat_fract_type_node,
3815         sat_long_fract_type_node, sat_long_long_fract_type_node,
3816         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
3817         sat_unsigned_long_fract_type_node,
3818         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
3819         fract_type_node, long_fract_type_node, long_long_fract_type_node,
3820         unsigned_short_fract_type_node, unsigned_fract_type_node,
3821         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
3822         sat_short_accum_type_node, sat_accum_type_node,
3823         sat_long_accum_type_node, sat_long_long_accum_type_node,
3824         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
3825         sat_unsigned_long_accum_type_node,
3826         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
3827         accum_type_node, long_accum_type_node, long_long_accum_type_node,
3828         unsigned_short_accum_type_node, unsigned_accum_type_node,
3829         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
3830         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
3831         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
3832         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
3833         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
3834         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
3835         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
3836         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
3837         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
3838         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
3839         sat_uda_type_node, sat_uta_type_node): New macro.
3840         (make_fract_type, make_accum_type): Declare.
3841         (make_signed_fract_type, make_unsigned_fract_type,
3842         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
3843         make_signed_accum_type, make_unsigned_accum_type,
3844         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
3845         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
3846         make_or_reuse_sat_signed_fract_type,
3847         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
3848         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
3849         make_or_reuse_sat_unsigned_accum_type): New macro.
3850         (fixed_zerop): Declare.
3851         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
3852         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3853         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3854         LONG_LONG_ACCUM_TYPE_SIZE): Define.
3855         * treestruct.def: Add TS_FIXED_CST.
3856         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
3857         (tree.o): Likewise.
3858         (tree-dump.o): Likewise.
3859         (print-tree.o): Likewise.
3860         (tree-pretty-print.o): Likewise.
3861         (fold-const.o): Likewise.
3862         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
3863         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
3864         (is_gimple_min_invariant): Handle FIXED_CST.
3865         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
3866         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
3867         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3868         (layout_type): Handle FIXED_POINT_TYPE.
3869         (make_fract_type, make_accum_type): New functions.
3870         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
3871         * tree-dump.c (fixed-value.h): New include.
3872         (dump_fixed): New function.
3873         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
3874         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
3875         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
3876         * tree-pretty-print.c (fixed-value.h): New include.
3877         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
3878         FIXED_CONVERT_EXPR.
3879         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
3880         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
3881         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
3882         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
3883         for non-saturating fixed-point types.
3884         (reassociate_bb): Likewise.
3885         * emit-rtl.c (fixed-value.h): New include.
3886         (fconst0, fconst1): New array.
3887         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
3888         * tree-vect-generic.c expand_vector_operation): Support
3889         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
3890         MODE_VECTOR_UACCUM.
3891         (type_for_widest_vector_mode): Add one parameter for the 
3892         saturating flag.
3893         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
3894         vector mode.
3895         Pass the satp parameter to type_for_mode for fixed-point types.
3896         (expand_vector_operations_1): Pass the saturating flag to
3897         type_for_widest_vector_mode.
3898         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
3899         and MODE_VECTOR_UACCUM.
3900         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
3901         (vectorizable_condition): Likewise.
3902         * tree.c (fixed-value.h): New include.
3903         (tree_code_size): Support FIXED_CST.
3904         (build_fixed): New function.
3905         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
3906         (fixed_zerop): New function.
3907         (tree_node_structure): Support FIXED_CST.
3908         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
3909         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
3910         (type_hash_eq): Handle FIXED_POINT_TYPE.
3911         (simple_cst_equal): Support FIXED_CST.
3912         (iterative_hash_expr): Handle FIXED_CST.
3913         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
3914         (get_narrower): Likewise.
3915         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
3916         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
3917         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
3918         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
3919         nodes.
3920         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
3921         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3922         (initializer_zerop): Support FIXED_CST.
3923         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
3924         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
3925         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
3926         (is_base_type): Handle FIXED_POINT_TYPE.
3927         (add_type_attribute): Handle FIXED_POINT_TYPE.
3928         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
3929         * print-tree.c (fixed-value.h): New include.
3930         (print_node_brief): Support FIXED_CST.
3931         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
3932         * c-pretty-print.c (fixed-value.h): New include.
3933         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
3934         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
3935         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
3936         Support fixed-point types for inner items in VECTOR_TYPE.
3937         (pp_c_direct_declarator): Likewise.
3938         (pp_c_declarator): Likewise.
3939         (pp_c_fixed_constant): New function.
3940         (pp_c_constant): Handle FIXED_CST.
3941         (pp_c_primary_expression): Likewise.
3942         (pp_c_expression): Likewise.
3943         * fold-const.c (fixed-value.h): New include.
3944         (negate_expr_p): Return true for FIXED_CST.
3945         (fold_negate_expr): Support FIXED_CST.
3946         (split_tree): Support FIXED_CST.
3947         (const_binop): Support FIXED_CST.
3948         (fold_convert_const_int_from_fixed): New function to convert from
3949         fixed to int.
3950         (fold_convert_const_real_from_fixed): New function to convert from
3951         fixed to real.
3952         (fold_convert_const_fixed_from_fixed): New function to convert from
3953         fixed to another fixed.
3954         (fold_convert_const_fixed_from_int): New function to convert from
3955         int to fixed.
3956         (fold_convert_const_fixed_from_real): New function to convert from
3957         real to fixed.
3958         (fold_convert_const): Support conversions from fixed to int, from
3959         fixed to real, from fixed to fixed, from int to fixed, and from real
3960         to fixed.
3961         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
3962         (operand_equal_p): Support FIXED_CST.
3963         (make_range): For fixed-point modes, we need to pass the
3964         saturating flag as the 2nd parameter.
3965         (tree_swap_operands_p): Handle FIXED_CST.
3966         (fold_plusminus_mult_expr): For fract modes, we cannot generate
3967         constant 1.
3968         (fold_unary): Support FIXED_CONVERT_EXPR.
3969         (fold_binary): Handle FIXED_CST.
3970         Make sure the type is not saturating, before associating operations.
3971         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
3972         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
3973         (fold_negate_const): Support FIXED_CST.
3974         (fold_relational_const): Support FIXED_CST.
3975         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
3976         (gimplify_expr): Handle FIXED_CST.
3977         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
3978         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
3979         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
3980         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
3981         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3982         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3983         LONG_LONG_ACCUM_TYPE_SIZE.
3984         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
3985         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
3986         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
3987         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
3988         MODE_ACCUM, and MODE_UACCUM.
3989         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
3990         fixed-point types to disable reduction.
3991         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
3993 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
3995         * config/rs6000/x-rs6000: New file.
3996         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
3997         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
3998         (EXTRA_SPEC_FUNCTIONS): Define.
3999         (HAVE_LOCAL_CPU_DETECT): Define.
4000         (CC1_CPU_SPEC): Define.
4001         * config/rs6000/driver-rs6000.c: New file.
4002         * config/rs6000/aix.h (CC1_SPEC): Define.
4003         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
4004         * config.host: Add x-rs6000 to host_xmake_file if host and target
4005         are rs6000 or powerpc.
4007 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
4009         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
4011 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
4012             Sandra Loosemore  <sandra@codesourcery.com>
4013             Chao-ying Fu  <fu@mips.com>
4014             Nigel Stephens  <nigel@mips.com>
4015             David Ung  <davidu@mips.com>
4017         * doc/invoke.texi (-mcode-readable): Document.
4018         * config/mips/mips.opt (mcode-readable): New option.
4019         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
4020         * config/mips/mips.h (mips_code_readable_setting): New enum.
4021         (mips_code_readable): Declare.
4022         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
4023         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
4024         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
4025         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
4026         boiler-plate comments.
4027         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
4028         * config/mips/mips.c (mips_code_readable): New variable.
4029         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
4030         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
4031         context and -mcode-readable setting to restrict the use of
4032         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
4033         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
4034         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
4035         (mips_blocks_for_constant_p): Only return false for
4036         TARGET_MIPS16_PCREL_LOADS.
4037         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
4038         for MIPS16.  Handle SYMBOL_32_HIGH.
4039         (mips_const_insns): Allow HIGHs for MIPS16 too.
4040         (mips_unspec_address_offset): New function, split out from...
4041         (mips_unspec_address): ...here.
4042         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
4043         16-bit symbolic constants.  Assert approropiate conditions for
4044         using the "la" and "dla" macros.
4045         (mips_handle_option): Handle -mcode-readable=.
4046         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
4047         Set up mips_lo_relocs[SYMBOL_32_HIGH].
4048         (mips_strip_unspec_address): New function, split out from...
4049         (print_operand_reloc): ...here.
4050         (print_operand): Pass constants through mips_strip_unspec_address.
4051         (print_operand_address): Likewise.
4052         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
4053         (mips_select_rtx_section): Remove MIPS16 handling.
4054         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
4055         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
4056         (mips16_lay_out_constants): Do nothing unless
4057         TARGET_MIPS16_PCREL_LOADS.
4058         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
4059         * config/mips/mips.md: Split HIGHs for MIPS16.
4060         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
4062 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
4064         * config/mips/mips-protos.h (mips_emit_move): Declare.
4065         * config/mips/mips.c (mips_emit_move): New function.
4066         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
4067         (mips_legitimize_const_move): Likewise.
4068         (mips_legitimize_move): Likewise.
4069         (mips_split_64bit_move): Likewise.
4070         (mips_restore_gp): Likewise.
4071         (mips_load_call_address): Likewise.
4072         (mips_emit_fcc_reload): Likewise.
4073         (mips_set_return_address): Likewise.
4074         (mips_block_move_straight): Likewise.
4075         (mips_block_move_loop): Likewise.
4076         (mips_setup_incoming_varargs): Likewise.
4077         (mips_save_reg): Likewise.
4078         (mips_expand_prologue): Likewise.
4079         (mips_restore_reg): Likewise.
4080         (mips_expand_epilogue): Likewise.
4081         (mips_output_mi_thunk): Likewise.
4082         (build_mips16_call_stub): Likewise.
4083         (mips_builtin_branch_and_move): Likewise.
4084         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
4085         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
4086         (fixuns_truncdfdi2): Likewise.
4087         (fixuns_truncsfsi2): Likewise.
4088         (fixuns_truncsfdi2): Likewise.
4089         (loadgp_absolute): Likewise.
4090         (builtin_setjmp_setup): Likewise.
4091         (builtin_longjmp): Likewise.
4092         (untyped_call): Likewise.
4094 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
4096         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
4097         an "rtx *" argument.  Return a bool.
4098         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
4099         values and return true if they can be split.  Take the same kind of
4100         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
4101         and store the lo_sum there if nonnull.  Use the symbol type to
4102         determine whether a $gp or HIGH is needed.
4103         (mips_legitimize_address): Update call to mips_split_symbol and
4104         simplify accordingly.
4105         (mips_legitimize_const_move): Likewise.
4106         * config/mips/mips.md: In the combine define_split,
4107         check mips_split_symbol instead of splittable_symbolic_operand.
4108         Update use of mips_split_symbol in the generator code.
4109         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
4111 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
4113         * config/mips/mips.c (mips_symbolic_address_p): Delete.
4114         (mips_symbol_insns_1): New function, split out from...
4115         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
4116         and stores separately from load addresses.
4117         (mips_classify_address): Replace uses of mips_symbolic_address_p
4118         with uses of mips_symbol_insns.
4119         (mips_address_insns): Update calls to mips_symbol_insns.
4120         (mips_const_insns): Likewise.
4121         (mips_legitimize_address): Likewise.
4123 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
4125         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
4126         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
4127         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
4128         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
4129         non-call contexts if TARGET_MIPS16.
4130         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
4131         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
4132         code for SYMBOL_ABSOLUTE.
4133         (mips_symbol_insns): Likewise.
4135 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
4137         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
4138         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
4139         (mips_symbolic_constant_p): Likewise.  Update the call to
4140         mips_classify_symbol.
4141         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
4142         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
4143         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
4144         (print_operand_reloc): Add a context argument.  Update the call to
4145         mips_symbolic_constant_p.
4146         (print_operand): Update the calls to print_operand_reloc.
4147         (print_operand_address): Use print_operand_reloc rather than
4148         print_operand.
4149         (mips_rewrite_small_data_p): Add a context argument.  Update the call
4150         to mips_symbolic_constant_p.
4151         (mips_small_data_pattern_1): Make DATA the containing mem.
4152         Update the call to mips_rewrite_small_data_p.
4153         (mips_rewrite_small_data_1): Likewise.
4154         (mips_use_anchors_for_symbol_p): Update the call to
4155         mips_symbolic_constant_p.
4156         * config/mips/predicates.md (const_call_insn_operand): Likewise.
4157         (splittable_symbolic_operand): Likewise.
4158         (move_operand): Likewise.
4159         (absolute_symbolic_operand): Likewise.
4160         (got_disp_operand): Likewise.
4161         (got_page_ofst_operand): Likewise.
4163 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
4165         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
4166         (SYMBOL_ABSOLUTE): ...this.
4167         (SYMBOL_SMALL_DATA): Rename to...
4168         (SYMBOL_GP_RELATIVE): ...this.
4169         (SYMBOL_CONSTANT_POOL): Rename to...
4170         (SYMBOL_PC_RELATIVE): ...this.
4171         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
4172         (mips_symbolic_address_p, mips_symbol_insns, override_options)
4173         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
4174         after above changes.
4175         * config/mips/predicates.md (const_call_insn_operand): Likewise.
4176         (general_symbolic_operand): Rename to...
4177         (absolute_symbolic_operand): ...this.
4178         * config/mips/mips.md: Update after above changes.
4180 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
4181             Revital Eres  <eres@il.ibm.com>
4183         * ddg.c (print_ddg): Add dump information.
4184         * modulo-sched.c (print_node_sched_params): Add parameter and
4185         verbosity.
4186         (calculate_maxii): Remove function.
4187         (undo_generate_reg_moves): Likewise.
4188         (undo_permute_partial_schedule): Likewise.
4189         (kernel_number_of_cycles): Likewise.
4190         (MAXII_FACTOR): New definition to calculate the upper bound of II.
4191         (sms_schedule): Use it.  Remove profitability checks.
4192         (sms_schedule_by_order): Fix order of nodes within the cycle.
4194 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
4196         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
4197         -profile option, add pie support.
4198         (ENDFILE_SPEC): New spec.
4199         * config/gnu.h (LIB_SPEC): Add -profile option.
4201 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
4203         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
4204         * config/gnu.h (LIB_SPEC): Likewise.
4206 2007-08-07  Yaz Saito  <saito@google.com>
4207             Ian Lance Taylor  <iant@google.com>
4209         * common.opt (finstrument-functions-exclude-function-list): New
4210         option.
4211         (finstrument-functions-exclude-file-list): New option.
4212         * opts.c (char_p): Define and DEF_VEC.
4213         (flag_instrument_functions_exclude_functions): New static
4214         variable.
4215         (flag_instrument_functions_exclude_files): New static variable.
4216         (add_instrument_functions_exclude_list): New static function.
4217         (flag_instrument_functions_exclude_p): New function.
4218         (common_handle_option): Handle new options.
4219         * flags.h (flag_instrument_functions_exclude_p): Declare.
4220         * gimplify.c (gimplify_function_tree): Call
4221         flag_instrument_functions_exclude_p.
4222         * doc/invoke.texi (Option Summary): Mention new options.
4223         (Code Gen Options): Document new options.
4225 2007-08-07  Ian Lance Taylor  <iant@google.com>
4227         PR rtl-optimization/32776
4228         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
4229         (resolve_use): Likewise.
4230         (decompose_multiword_subregs): Remove "changed" local variable.
4232 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
4234         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
4235         * configure: Regenerate.
4236         * config.in: Regenerate.
4237         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
4238         spec string.
4240 2007-08-07  Ian Lance Taylor  <iant@google.com>
4242         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
4243         note, just delete the insn.
4245 2007-08-07  Andreas Schwab  <schwab@suse.de>
4247         PR bootstrap/32973
4248         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
4249         struct definition.
4251 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
4253         * lower-subreg.c (resolve_subreg_use): Remove assertion.
4254         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
4255         (decompose_multiword_subregs): Use the functions above to decompose
4256         multiword shifts and zero-extends.
4258 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4260         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
4261         "assemble" descriptions which were swapped.
4263 2007-08-06  Chao-ying Fu  <fu@mips.com>
4265         * fixed-value.h: New file.
4266         * fixed-value.c: New file.
4267         * Makefile.in (OBJS-common): Add fixed-value.o.
4268         (fixed-value.o): New rule.
4269         (GTFILES): Add fixed-value.h.
4270         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
4271         to compare a.low and b.low.
4272         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
4274 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
4275             Daniel Jacobowitz  <dan@codesourcery.com>
4277         PR target/31868
4278         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
4279         tmake_file.
4280         (x86_64-*-netbsd*): Likewise.
4281         (x86_64-*-linux*): Likewise.
4282         (x86_64-*-kfreebsd*-gnu): Likewise.
4283         (x86_64-*-knetbsd*-gnu): Likewise.
4284         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
4286         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
4288         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
4289         Add -fno-asynchronous-unwind-tables.
4291         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
4292         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
4293         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
4294         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
4295         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
4297 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
4299         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
4300         (TARGET_C_MODE_FOR_SUFFIX): New.
4302 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
4304         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
4306 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
4308         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
4310 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
4312         * config/i386/i386.md: Check TARGET_ macros and optimize_size
4313         before checking function returns in conditional expressions.
4315 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
4317         PR pch/13676
4318         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
4320 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4322         PR middle-end/32988
4323         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
4324         for INTEGRAL_TYPE_P.
4326 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
4328         * configure.ac: Remove --enable-checking=df from default settings.
4329         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
4330         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
4331         if the parameter is true.
4332         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
4333         DF_VERIFY_SCHEDULED flag is true.
4334         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
4335         (df_finish_pass): Adjust prototype.
4336         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
4337         true.
4339         * see.c (pass_see): Add TODO_df_verify.
4340         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
4341         * global.c (rest_of_handle_global_alloc): Schedule verification
4342         after the pass.
4343         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
4344         before the pass.
4345         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
4346         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
4347         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
4349         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
4350         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
4351         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
4353 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
4354             Revital Eres <eres@il.ibm.com>
4356         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
4357         flag.
4358         * ddg.c (create_ddg_dependence): Rename to...
4359         (create_ddg_dep_from_intra_loop_link): This.  Do not check
4360         for interloop edges.  Do not create anti dependence edge when
4361         a true dependence edge exists in the opposite direction and
4362         -fmodulo-sched-allow-regmoves is set.
4363         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
4364         (add_cross_iteration_register_deps): Create anti dependence edge
4365         when -fno-modulo-sched-allow-regmoves is set.
4366         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
4368 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
4370         * config/arm/arm.md (movsi): Add braces.
4372 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4374         PR middle-end/32780
4375         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
4376         operands for the folding of "A - (A & B)" into "~B & A"; cast them
4377         to type.
4379 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
4381         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
4382         state accessor functions.
4383         * cfgloopmanip.c (remove_path, create_preheaders,
4384         force_single_succ_latches, fix_loop_structure): Ditto.
4385         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
4386         tree_duplicate_loop_to_header_edge): Ditto.
4387         * cfgloopanal.c (mark_irreducible_loops): Ditto.
4388         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
4389         Ditto.
4390         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
4391         cleanup_tree_cfg): Ditto.
4392         * tree-cfg.c (tree_merge_blocks): Ditto.
4393         * cfgloop.c (rescan_loop_exit, record_loop_exits,
4394         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
4395         loop_preheader_edge, single_exit): Ditto.
4396         (flow_loops_find): Do not clear loops->state.
4397         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
4398         loops_state_clear): New functions.
4400 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4402         PR middle-end/32399
4403         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
4404         when adding to the base and convert ELT to sizetype instead of type.
4406 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4408         PR middle-end/32304
4409         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
4410         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
4412 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4414         PR middle-end/32935
4415         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
4416          correct type the negate expression.
4418 2007-08-03  Jan Hubicka  <jh@suse.cz>
4420         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
4421         stack boundary.
4423 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
4425         * config/rs6000/rs6000.c (struct processor_cost): Change
4426         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
4427         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
4428         information.
4429         (rios1_costs, rios2_cost): Correct cache line size.
4430         (rs6000_override_options): Set l2-cache-size parameter.
4432 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4433             Diego Novillo  <dnovillo@google.com>
4435         PR 31521
4436         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
4437         if the range includes 0.
4439 2007-08-03  Ben Elliston  <bje@au.ibm.com>
4441         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
4442         mode to unspec expressions to silence a warning from the generator
4443         programs.
4444         
4445 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
4447         * config/ia64/constraints.md ("U"): Make constraint vector only.
4449 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
4451         PR middle-end/25446
4452         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
4453         always_inline attribute on the function decl.
4455 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
4457         PR middle-end/25445
4458         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
4459         if we are compiling with -fPIC.
4461 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
4462             Nigel Stephens  <nigel@mips.com>
4464         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
4465         Define for MIPS32 and MIPS64.
4467 2007-08-02  Nick Clifton  <nickc@redhat.com>
4469         * config/host-hpux.c: Change copyright header to refer to version
4470         3 of the GNU General Public License and to point readers at the
4471         COPYING3 file and the FSF's license web page.
4472         * config/alpha/predicates.md, config/alpha/vms-ld.c,
4473         config/alpha/linux.h, config/alpha/alpha.opt,
4474         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
4475         config/alpha/vms-unwind.h, config/alpha/ev4.md,
4476         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
4477         config/alpha/alpha.h, config/alpha/sync.md,
4478         config/alpha/openbsd.h, config/alpha/alpha.md,
4479         config/alpha/alpha-modes.def, config/alpha/ev5.md,
4480         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
4481         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
4482         config/alpha/constraints.md, config/alpha/osf.h,
4483         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
4484         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
4485         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
4486         config/frv/frv-asm.h, config/frv/frv-protos.h,
4487         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
4488         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
4489         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
4490         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
4491         config/s390/s390.opt, config/s390/s390-modes.def,
4492         config/s390/fixdfdi.h, config/s390/constraints.md,
4493         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
4494         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
4495         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
4496         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
4497         config/m32c/prologue.md, config/m32c/m32c.abi,
4498         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
4499         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
4500         config/m32c/t-m32c, config/m32c/m32c-modes.def,
4501         config/m32c/jump.md, config/m32c/shift.md,
4502         config/m32c/m32c-protos.h, config/libgloss.h,
4503         config/spu/spu-protos.h, config/spu/predicates.md,
4504         config/spu/spu-builtins.h, config/spu/spu.c,
4505         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
4506         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
4507         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
4508         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
4509         config/sparc/hypersparc.md, config/sparc/predicates.md,
4510         config/sparc/linux.h, config/sparc/sp64-elf.h,
4511         config/sparc/supersparc.md, config/sparc/cypress.md,
4512         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
4513         config/sparc/niagara.md, config/sparc/sparc.md,
4514         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
4515         config/sparc/sparc.opt, config/sparc/sync.md,
4516         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
4517         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
4518         config/sparc/sparc.c, config/sparc/little-endian.opt,
4519         config/sparc/sysv4-only.h, config/sparc/sparc.h,
4520         config/sparc/linux64.h, config/sparc/freebsd.h,
4521         config/sparc/sol2.h, config/sparc/rtemself.h,
4522         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
4523         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
4524         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
4525         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
4526         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
4527         config/m32r/linux.h, config/m32r/constraints.md,
4528         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
4529         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
4530         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
4531         config/i386/i386.md, config/i386/netware-crt0.c,
4532         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
4533         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
4534         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
4535         config/i386/sol2.h, config/i386/constraints.md,
4536         config/i386/netware-libgcc.c, config/i386/sysv5.h,
4537         config/i386/predicates.md, config/i386/geode.md,
4538         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
4539         config/i386/freebsd64.h, config/i386/vxworksae.h,
4540         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
4541         config/i386/rtemself.h, config/i386/netbsd-elf.h,
4542         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
4543         config/i386/netware.h, config/i386/i386-modes.def,
4544         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
4545         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
4546         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
4547         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
4548         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
4549         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
4550         config/i386/xm-mingw32.h, config/i386/linux64.h,
4551         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
4552         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
4553         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
4554         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
4555         config/i386/cygwin2.c, config/i386/i386-protos.h,
4556         config/i386/sync.md, config/i386/openbsd.h,
4557         config/i386/host-mingw32.c, config/i386/i386-aout.h,
4558         config/i386/nto.h, config/i386/biarch64.h,
4559         config/i386/i386-coff.h, config/i386/freebsd.h,
4560         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
4561         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
4562         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
4563         config/darwin-protos.h, config/linux.opt, config/sol2.c,
4564         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
4565         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
4566         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
4567         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
4568         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
4569         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
4570         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
4571         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
4572         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
4573         config/sh/superh64.h, config/sh/rtemself.h,
4574         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
4575         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
4576         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
4577         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
4578         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
4579         config/avr/predicates.md, config/avr/constraints.md,
4580         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
4581         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
4582         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
4583         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
4584         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
4585         config/c4x/c4x-modes.def, config/c4x/rtems.h,
4586         config/c4x/predicates.md, config/c4x/c4x.h,
4587         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
4588         config/xtensa/predicates.md, config/xtensa/xtensa.c,
4589         config/xtensa/linux.h, config/xtensa/xtensa.h,
4590         config/xtensa/elf.h, config/xtensa/xtensa.md,
4591         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
4592         config/xtensa/xtensa-protos.h, config/dbx.h,
4593         config/stormy16/predicates.md, config/stormy16/stormy16.md,
4594         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
4595         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
4596         config/host-solaris.c, config/fr30/fr30.h,
4597         config/fr30/predicates.md, config/fr30/fr30-protos.h,
4598         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
4599         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
4600         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
4601         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
4602         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
4603         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
4604         config/host-linux.c, config/interix3.h, config/cris/cris.c,
4605         config/cris/predicates.md, config/cris/linux.h,
4606         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
4607         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
4608         config/cris/aout.opt, config/cris/cris-protos.h,
4609         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
4610         config/iq2000/iq2000.h, config/iq2000/predicates.md,
4611         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
4612         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
4613         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
4614         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
4615         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
4616         config/chorus.h, config/mn10300/mn10300.c,
4617         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
4618         config/mn10300/mn10300.h, config/mn10300/linux.h,
4619         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
4620         config/mn10300/mn10300.md, config/ia64/predicates.md,
4621         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
4622         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
4623         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
4624         config/ia64/freebsd.h, config/ia64/ia64.md,
4625         config/ia64/ia64-modes.def, config/ia64/constraints.md,
4626         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
4627         config/gofast.h, config/rtems.h, config/sol2-10.h,
4628         config/m68k/predicates.md, config/m68k/m68k.md,
4629         config/m68k/linux.h, config/m68k/m68k-modes.def,
4630         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
4631         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
4632         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
4633         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
4634         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
4635         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
4636         config/m68k/constraints.md, config/m68k/rtemself.h,
4637         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
4638         config/m68k/uclinux.h, config/rs6000/power4.md,
4639         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
4640         config/rs6000/linux.h, config/rs6000/eabi.h,
4641         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
4642         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
4643         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
4644         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
4645         config/rs6000/windiss.h, config/rs6000/603.md,
4646         config/rs6000/aix41.h, config/rs6000/cell.md,
4647         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
4648         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
4649         config/rs6000/darwin.md, config/rs6000/darwin64.h,
4650         config/rs6000/default64.h, config/rs6000/7xx.md,
4651         config/rs6000/darwin.opt, config/rs6000/spe.md,
4652         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
4653         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
4654         config/rs6000/7450.md, config/rs6000/linux64.h,
4655         config/rs6000/constraints.md, config/rs6000/440.md,
4656         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
4657         config/rs6000/rs6000.c, config/rs6000/aix52.h,
4658         config/rs6000/rs6000.h, config/rs6000/power6.md,
4659         config/rs6000/predicates.md, config/rs6000/altivec.md,
4660         config/rs6000/aix64.opt, config/rs6000/rios1.md,
4661         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
4662         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
4663         config/rs6000/darwin7.h, config/rs6000/dfp.md,
4664         config/rs6000/linux64.opt, config/rs6000/sync.md,
4665         config/rs6000/vxworksae.h, config/rs6000/power5.md,
4666         config/rs6000/lynx.h, config/rs6000/biarch64.h,
4667         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
4668         config/rs6000/eabispe.h, config/rs6000/e500.h,
4669         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
4670         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
4671         config/rs6000/aix.h, config/rs6000/vxworks.h,
4672         config/rs6000/40x.md, config/rs6000/aix51.h,
4673         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
4674         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
4675         config/arc/arc.h, config/mcore/mcore-elf.h,
4676         config/mcore/mcore-protos.h, config/mcore/predicates.md,
4677         config/mcore/mcore.md, config/mcore/mcore.c,
4678         config/mcore/mcore.opt, config/mcore/mcore.h,
4679         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
4680         config/score/predicates.md, config/score/score-version.h,
4681         config/score/score-protos.h, config/score/misc.md,
4682         config/score/elf.h, config/score/score.c, config/score/mac.md,
4683         config/score/score7.md, config/score/score.h,
4684         config/score/score-conv.h, config/score/score-mdaux.c,
4685         config/score/score.md, config/score/score.opt,
4686         config/score/score-modes.def, config/score/score-mdaux.h,
4687         config/score/mul-div.S, config/arm/uclinux-elf.h,
4688         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
4689         config/arm/symbian.h, config/arm/linux-elf.h,
4690         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
4691         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
4692         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
4693         config/arm/strongarm-pe.h, config/arm/arm.h,
4694         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
4695         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
4696         config/arm/arm-modes.def, config/arm/linux-eabi.h,
4697         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
4698         config/arm/arm-cores.def, config/arm/arm-protos.h,
4699         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
4700         config/arm/wince-pe.h, config/arm/neon.md,
4701         config/arm/constraints.md, config/arm/neon.ml,
4702         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
4703         config/arm/arm.opt, config/arm/arm926ejs.md,
4704         config/arm/predicates.md, config/arm/iwmmxt.md,
4705         config/arm/arm_neon.h, config/arm/unknown-elf.h,
4706         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
4707         config/arm/neon-testgen.ml, config/arm/arm.md,
4708         config/arm/xscale-coff.h, config/arm/pe.c,
4709         config/arm/arm-generic.md, config/arm/pe.h,
4710         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
4711         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
4712         config/arm/strongarm-elf.h, config/arm/cirrus.md,
4713         config/arm/netbsd-elf.h, config/arm/vxworks.h,
4714         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
4715         config/pa/predicates.md, config/pa/pa64-hpux.h,
4716         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
4717         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
4718         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
4719         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
4720         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
4721         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
4722         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
4723         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
4724         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
4725         config/pa/pa64-regs.h, config/pa/pa-modes.def,
4726         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
4727         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
4728         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
4729         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
4730         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
4731         config/mips/linux64.h, config/mips/elforion.h,
4732         config/mips/constraints.md, config/mips/generic.md,
4733         config/mips/predicates.md, config/mips/4300.md,
4734         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
4735         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
4736         config/mips/5k.md, config/mips/vr4120-div.S,
4737         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
4738         config/mips/mips-protos.h, config/mips/6000.md,
4739         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
4740         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
4741         config/mips/mips-modes.def, config/mips/vr.h,
4742         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
4743         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
4744         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
4745         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
4746         config/vax/openbsd1.h, config/vax/netbsd.h,
4747         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
4748         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
4749         config/h8300/rtems.h, config/h8300/predicates.md,
4750         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
4751         config/h8300/h8300.md, config/h8300/h8300.opt,
4752         config/h8300/coff.h, config/h8300/h8300-protos.h,
4753         config/v850/v850.md, config/v850/predicates.md,
4754         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
4755         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
4756         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
4757         config/mmix/mmix.h, config/mmix/predicates.md,
4758         config/mmix/mmix-protos.h, config/mmix/mmix.md,
4759         config/mmix/mmix.c, config/mmix/mmix.opt,
4760         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
4761         config/bfin/rtems.h, config/bfin/bfin-modes.def,
4762         config/bfin/predicates.md, config/bfin/bfin-protos.h,
4763         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
4764         Likewise.
4766 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
4768         * emit-rtl.c (reset_used_decls): Rename to...
4769         (set_used_decls): ...this.  Set the used flag rather than clearing it.
4770         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
4771         DECL_RTLs rather than resetting them.
4773 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
4775         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
4777 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
4779         * reload.c (find_reloads_address_part):  Pass correct MEMREFLOC
4780         argument to find_reloads_address.
4782 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
4784         PR tree-optimization/32919
4785         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
4786         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
4787         (coalesce_ssa_name): Call it.
4789 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
4790             David Ung  <davidu@mips.com>
4792         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
4793         (__mips16_unorddf2, __mips16_floatunsidf): New.
4794         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
4795         above functions.
4796         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
4798 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4800         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
4801         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
4802         * tree.h (OMP_SECTIONS_CONTROL): New macro.
4803         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
4804         * omp-low.c (get_ws_args_for, determine_parallel_type,
4805         expand_omp_for_generic, expand_omp_for_static_nochunk,
4806         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
4807         Work with more precise CFG.
4808         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
4809         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
4810         OMP_CONTINUE.
4811         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
4812         * gimple-low.c (lower_stmt): Ditto.
4813         * tree-inline.c (estimate_num_insns_1): Ditto.
4814         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
4815         (OMP_SECTIONS_SWITCH): New.
4816         * tree-cfgcleanup.c (cleanup_omp_return): New.
4817         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
4818         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
4819         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
4820         (tree_redirect_edge_and_branch): Handle omp constructs.
4822         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
4823         with three arguments.
4825 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4827         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
4828         in loop closed ssa.
4830 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4832         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
4833         the loop structures may need fixing.
4834         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
4835         New functions.
4836         (cleanup_tree_cfg_loop): Removed.
4837         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
4838         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
4839         instead of running cleanup_tree_cfg_loop.
4840         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
4841         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
4842         (tree_predictive_commoning): Declaration changed.
4843         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
4845 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4847         * doc/invoke.texi (l1-cache-size): Update documentation.
4848         (l2-cache-size): Document.
4849         * params.h (L2_CACHE_SIZE): New macro.
4850         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
4851         that L1_CACHE_SIZE is in kB now.
4852         (L2_CACHE_SIZE_BYTES): New macro.
4853         (tree_ssa_prefetch_arrays): Show size in kB.
4854         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
4855         and l2_cache_size fields.
4856         * config/i386/driver-i386.c (describe_cache): Detect cache size
4857         in kB.
4858         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
4859         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
4860         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
4861         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
4862         (override_options): Set l1-cache-size and l2-cache-size to default
4863         values if not specified otherwise.
4864         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
4865         (PARAM_L2_CACHE_SIZE): New.
4867 2007-08-01  Nigel Stephens  <nigel@mips.com>
4868             David Ung  <davidu@mips.com>
4869             Thiemo Seufer  <ths@mips.com>
4870             Chris Dearman  <chris@mips.com>
4871             Richard Sandiford  <richard@codesourcery.com>
4873         * config.gcc (mips*-sde-elf*): New stanza.
4874         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
4875         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
4876         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
4877         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
4878         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
4879         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
4880         to tmake_file.
4881         * config/mips/sde.h: New file.
4882         * config/mips/t-libgcc-mips16: Likewise.
4883         * config/mips/t-sde: Likewise.
4884         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
4885         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
4886         _MIPS_FPSET and _MIPS_SZINT.
4887         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
4888         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
4889         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
4890         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
4891         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4892         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4893         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
4894         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
4895         _MIPS_SZPTR and _MIPS_FPSET.
4896         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
4897         architecture is specified.
4898         (MIPS_32BIT_OPTION_SPEC): New macro.
4900 2007-07-31  Dan Hipschman  <dsh@google.com>
4902         * gcc.c (end_going_arg): New function.
4903         (do_spec_2): Use it.
4904         (do_spec_1): Use it.
4906 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4908         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
4909         only if ENABLE_CHECKING is defined.
4911 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
4913         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
4914         df_ru_add_problem, df_ru_get_bb_info): Removed.
4915         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
4916         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
4917         df_ru_free_bb_info, df_ru_alloc,
4918         df_ru_bb_local_compute_process_def,
4919         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
4920         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
4921         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
4922         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
4923         df_ru_add_problem): Removed.
4925 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4927         PR target/32847
4928         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
4929         (casesi32p, casesi64p): Likewise.
4930         (casesi): Adjust for above.
4932 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
4934         * mode-switching.c (create_pre_exit): Don't search past calls.
4936 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
4938         * config/mips/mips.h (ISA_HAS_SYNCI):  Add !TARGET_MIPS16 test.
4940 2007-07-31  Revital Eres  <eres@il.ibm.com>
4942         * ddg.c (add_deps_for_def): Rename to...
4943         (add_cross_iteration_register_deps): This.  Change implementation
4944         to use only reaching def and def-use chains to construct the
4945         inter loop dependencies.
4946         (add_deps_for_use): Remove function.
4947         (build_inter_loop_deps): Call add_cross_iteration_register_deps
4948         function to build the inter loop dependencies.
4949         * modulo-sched.c (sms_schedule): Build only
4950         reaching def and def-use chains for the propose of the ddg
4951         construction.
4953 2007-07-31  Julian Brown  <julian@codesourcery.com>
4955         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
4956         New define_insns. Use correct RTL.
4957         (vec_set<mode>): Write as expander.
4959 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
4961         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
4962         to an unallocated space.
4964 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
4966         * tree-data-ref.c
4967         (split_constant_offset): Enable split_constant_offset to extract
4968         constants from other statements.
4969         * tree-vect-transform.c
4970         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
4971         to a temp var. Force base_offset to be simple.
4973 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
4975         * df-scan.c (df_scan_verify): Remove artificial limit on
4976         the number of blocks for verification.
4977         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
4978         df_simulate_defs): Avoid unnecessary insn checking for defs.
4980 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
4982         * config/m68k/lb1sf68.asm (FUNC): New macro.
4983         (__mulsi3): Use it.
4984         (__udivsi3): Likewise.
4985         (__divsi3): Likewise.
4986         (__umodsi3): Likewise.
4987         (__modsi3): Likewise.
4988         (__subdf3): Likewise.
4989         (__adddf3): Likewise.
4990         (__muldf3): Likewise.
4991         (__divdf3): Likewise.
4992         (__negdf2): Likewise.
4993         (__cmpdf2): Likewise.
4994         (__subsf3): Likewise.
4995         (__addsf3): Likewise.
4996         (__mulsf3): Likewise.
4997         (__divsf3): Likewise.
4998         (__negsf2): Likewise.
4999         (__cmpsf2): Likewise.
5000         (__eqdf2): Likewise.
5001         (__nedf2): Likewise.
5002         (__gtdf2): Likewise.
5003         (__gedf2): Likewise.
5004         (__ltdf2): Likewise.
5005         (__ledf2): Likewise.
5006         (__eqsf2): Likewise.
5007         (__nesf2): Likewise.
5008         (__gtsf2): Likewise.
5009         (__gesf2): Likewise.
5010         (__ltsf2): Likewise.
5011         (__lesf2): Likewise.
5013 2007-07-30  Ollie Wild  <aaw@google.com>
5015         * c-ppoutput.c (print_lines_directives_only): New function.
5016         (scan_translation_unit_directives_only): New function.
5017         (preprocess_file): Add call to scan_translation_unit_directives_only.
5018         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
5019         (sanitize_cpp_opts): Add default flag_dump_macros setting for
5020         -fdirectives-only.  Add errors for -fdirectives-only conflict with
5021         -Wunused-macros and -traditional.
5022         (finish_options): Add builtin macro initialization for
5023         -fdirectives-only + -fpreprocessed.
5024         * c.opt (fdirectives-only): New.
5025         * doc/cppopts.texi (fdirectives-only): New.
5027 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5029         * alias.c (record_set, memory_modified_1): Constify.
5030         * bt-load.c (note_btr_set): Likewise.
5031         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
5032         * combine.c (set_nonzero_bits_and_sign_copies,
5033         expand_field_assignment, record_dead_and_set_regs_1,
5034         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
5035         likely_spilled_retval_1): Likewise.
5036         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
5037         frv_io_handle_set): Likewise.
5038         * config/mips/mips.c (mips_sim_record_set,
5039         vr4130_true_reg_dependence_p_1): Likewise.
5040         * config/mt/mt.c (insn_dependent_p_1): Likewise.
5041         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
5042         * config/sh/sh.c (flow_dependent_p_1): Likewise.
5043         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
5044         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
5045         * ddg.c (mark_mem_store): Likewise.
5046         * df-problems.c (df_urec_mark_reg_change): Likewise.
5047         * function.c (update_epilogue_consts): Likewise.
5048         * gcse.c (record_set_info, record_last_set_info,
5049         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
5050         reg_clear_last_set): Likewise.
5051         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
5052         Likewise.
5053         * jump.c (reversed_comparison_code_parts): Likewise.
5054         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
5055         reg_is_set): Likewise.
5056         * loop-iv.c (mark_altered): Likewise.
5057         * mode-switching.c (reg_becomes_live): Likewise.
5058         * optabs.c (no_conflict_move_test): Likewise.
5059         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
5060         Likewise.
5061         * postreload.c (reload_combine_note_store, move2add_note_store):
5062         Likewise.
5063         * regmove.c (flags_set_1): Likewise.
5064         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
5065         Likewise.
5066         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
5067         Likewise. 
5068         * resource.c (update_live_status): Likewise.
5069         * rtl.h (set_of, note_stores): Likewise.
5070         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
5071         note_stores, parms_set): Likewise.
5072         * sched-rgn.c (sets_likely_spilled_1): Likewise.
5073         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
5074         Likewise. 
5075         * var-tracking.c (count_stores, add_stores): Likewise.
5077 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5079         * alias.c (mems_in_disjoint_alias_sets_p,
5080         fixed_scalar_and_varying_struct_p, aliases_everything_p,
5081         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
5082         write_dependence_p, mems_in_disjoint_alias_sets_p,
5083         read_dependence, true_dependence, canon_true_dependence,
5084         anti_dependence, output_dependence): Constify.
5085         * combine.c (extended_count): Likewise.
5086         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
5087         * cselib.c (get_value_hash, references_value_p,
5088         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
5089         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
5090         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
5091         * function.c (contains, prologue_epilogue_contains,
5092         sibcall_epilogue_contains): Likewise. 
5093         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
5094         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
5095         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
5096         reg_or_subregno): Likewise.
5097         * recog.c (asm_noperands): Likewise.
5098         * reload1.c (function_invariant_p): Likewise.
5099         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
5100         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
5101         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
5102         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
5103         true_regnum, reg_or_subregno, condjump_in_parallel_p,
5104         extended_count, prologue_epilogue_contains,
5105         sibcall_epilogue_contains, function_invariant_p, true_dependence,
5106         canon_true_dependence, read_dependence, anti_dependence,
5107         output_dependence): Likewise.
5108         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
5110 2007-07-30  Julian Brown  <julian@codesourcery.com>
5112         * config/arm/neon.md (V_ext): New mode attribute.
5113         (neon_vget_lane<mode>): Replace with define_expand.
5114         (neon_vget_lane<mode>_sext_internal)
5115         (neon_vget_lane<mode>_zext_internal): New define_insns for double
5116         and quad precision vectors.
5117         (neon_vget_lanedi): Add bounds check. Remove dead comment.
5118         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
5119         have typeless 32-bit result.
5121 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5123         PR tree-opt/32527
5124         * tree-affine.h (aff_tree): The type of rest is sizetype for types
5125         of pointers.
5126         * tree-affine.c (aff_combination_scale): If type is a pointer type,
5127         use sizetype for rest.
5128         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
5129         (aff_combination_convert): Don't convert rest for pointer types.
5131 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
5133         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
5135         * tree-ssa-alias.c: Add alloc-pool.h.
5136         (init_alias_info): Free alias_bitmap_obstack.
5137         (delete_alias_info): Call delete_mem_ref_stats.
5138         (get_mem_sym_stats_for): Use alloc_pool.
5139         (init_mem_ref_stats): Do not delete mem_ref_stats here.
5140         (delete_mem_sym_stats): Removed.
5141         
5142 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
5144         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
5145         functions cannot be represented as classical distance vectors.
5147 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5149         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
5150         * builtins.c (validate_arg, builtin_mathfn_code,
5151         validate_arglist): Likewise.
5152         * calls.c (call_expr_flags): Likewise.
5153         * combine.c (reg_nonzero_bits_for_combine,
5154         reg_num_sign_bit_copies_for_combine, get_last_value,
5155         reg_truncated_to_mode): Likewise.
5156         * emit-rtl.c (subreg_lowpart_p): Likewise.
5157         * expr.c (highest_pow2_factor_for_target,
5158         categorize_ctor_elements_1, categorize_ctor_elements,
5159         count_type_elements, contains_packed_reference,
5160         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
5161         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
5162         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
5163         native_encode_int, native_encode_real, native_encode_complex,
5164         native_encode_vector, native_encode_expr, native_interpret_int,
5165         native_interpret_real, native_interpret_complex,
5166         native_interpret_vector, native_interpret_expr): Likewise.
5167         * function.c (use_register_for_decl): Likewise.
5168         * gimplify.c (get_name): Likewise.
5169         * langhooks-def.h (lhd_return_null_const_tree): New.
5170         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
5171         * langhooks.c (lhd_return_null_const_tree): New.
5172         * langhooks.h (lang_get_callee_fndecl): Constify.
5173         * output.h (constructor_static_from_elts_p): Likewise.
5174         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
5175         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
5176         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
5177         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
5178         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
5179         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
5180         * rtlhooks-def.h (reg_nonzero_bits_general,
5181         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
5182         Likewise. 
5183         * rtlhooks.c (reg_num_sign_bit_copies_general,
5184         reg_nonzero_bits_general, reg_truncated_to_mode_general):
5185         Likewise. 
5186         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
5187         * stor-layout.c (mode_for_size_tree): Likewise.
5188         * tree-ssa-loop-im.c (memref_eq): Likewise.
5189         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
5190         * tree.c (contains_placeholder_p, type_list_equal,
5191         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
5192         Likewise. 
5193         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
5194         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
5195         contains_placeholder_p, contains_packed_reference,
5196         get_callee_fndecl, operand_equal_for_phi_arg_p,
5197         warn_if_unused_value, is_body_block, native_encode_expr,
5198         native_interpret_expr, fold_convertible_p, operand_equal_p,
5199         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
5200         validate_arglist, simple_cst_equal, type_list_equal,
5201         use_register_for_decl, call_expr_flags, get_name,
5202         highest_pow2_factor): Likewise.
5203         (const_call_expr_arg_iterator_d,
5204         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
5205         first_const_call_expr_arg, more_const_call_expr_args_p,
5206         FOR_EACH_CONST_CALL_EXPR_ARG): New.
5207         * varasm.c (constructor_static_from_elts_p): Constify.
5209 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
5211         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
5212         config/arm/neon-schedgen.ml, config/arm/neon.ml,
5213         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
5214         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
5215         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
5216         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
5217         spelling conventions.
5218         * doc/invoke.texi: Follow spelling conventions.
5220 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
5221             Revital Eres  <eres@il.ibm.com>
5223         * modulo-sched.c (sms_schedule): Avoid loops which includes
5224         auto-increment instructions.
5226 2007-07-28  Richard Guenther  <rguenther@suse.de>
5228         PR middle-end/32920
5229         * fold-const.c (fold_cond_expr_with_comparison): Convert
5230         operand zero of MIN/MAX_EXPR to correct type.
5232 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5234         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
5235         flags_from_decl_or_type): Constify.
5236         * gcc.c (do_spec_1): Likewise.
5237         * print-tree.c (dump_addr, print_node_brief): Likewise.
5238         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
5239         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
5240         tree_purge_all_dead_eh_edges): Likewise.
5241         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
5242         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
5243         Likewise. 
5244         * tree.c (expr_location, expr_has_location, expr_locus,
5245         expr_filename, expr_lineno, get_inner_array_type,
5246         fields_compatible_p): Likewise.
5247         * tree.h (get_inner_array_type, fields_compatible_p,
5248         expr_location, expr_has_location, expr_locus, expr_filename,
5249         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
5250         setjmp_call_p, alloca_call_p): Likewise.
5252 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
5254         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
5255         TV_FLOW_INSENSITIVE.
5257         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
5258         TV_CALL_CLOBBER.
5259         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
5260         (compute_flow_insensitive_aliasing): Ditto for
5261         TV_FLOW_INSENSITIVE.    
5263 2007-07-27  Jan Hubicka  <jh@suse.cz>
5265         * config/i386/i386.c (register_move_cost): Remove accidentally
5266         comitted #if 0 block.
5268         * attribs.c: Include hashtab.h
5269         (attribute_hash): New.
5270         (substring): New structure.
5271         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
5272         New function.
5273         (init_attributes): Initialize attribute hash.
5274         (decl_attributes): Use attribute hash.
5275         * Makefile.in (attribs.c): Depend on hashtab.h.
5277 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
5279         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
5281 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
5283         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
5284         __mips_dspr2 and __mips_dsp_rev macros.
5285         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
5287 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
5288         
5289        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
5291 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
5293         PR middle-end/32749
5294         
5295         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
5296         and the updating of the live and do_not_gen sets.
5297         (df_note_bb_compute): Added updating of live and do_not_gen sets
5298         for regular defs so that the case of clobber inside conditional
5299         call is processed correctly.
5300         
5301 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
5303         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
5304         operands with compatible type.
5306 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
5308         * expr.h (store_bit_field): Don't return a value.
5309         * expmed.c (check_predicate_volatile_ok): New function.
5310         (store_bit_field_1): New function, extracted from store_bit_field.
5311         Take a fallback_p argument and return true if the operation succeeded.
5312         Only use store_fixed_bit_field if fallback_p.  Don't recompute
5313         mode_for_extraction; use op_mode instead.  Try forcing memories
5314         into registers if the insv expander fails.
5315         (store_bit_field): Use store_bit_field_1 with fallback_p true.
5316         Don't return a value.
5317         (convert_extracted_bit_field): New function, extracted from
5318         store_bit_field.
5319         (extract_bit_field_1): Likewise.  Take a fallback_p argument
5320         and return NULL if the operation succeeded.  Only use
5321         extract_fixed_bit_field if fallback_p.  Only calculate one
5322         extraction mode.  Combine code for extv and extzv.  Try forcing
5323         memories into registers if the ext(z)v expander fails.
5324         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
5326 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
5328         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
5329         into bitfields.
5330         (df_ref): Likewise.  Put regno with other integer fields.
5332 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
5334         * df.h (df_mw_hardreg): Remove "loc" field.
5335         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
5336         local variable.
5337         * df-problems.c (df_whole_mw_reg_unused_p): New function,
5338         split out from df_set_unused_notes_for_mw.  Return false for
5339         partial references.  Assert that mw_reg is a REG when returning true.
5340         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
5341         (df_whole_mw_reg_dead_p): New function, split out from
5342         df_set_dead_notes_for_mw.  Return false for partial references.
5343         Assert that mw_reg is a REG when returning true.
5344         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
5345         Remove redundant bitmap check.
5347 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
5349         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
5350         ($(T)crtend.o): Likwise.
5351         ($(T)crtbeginS.o): Likwise.
5352         ($(T)crtendS.o): Likwise.
5353         ($(T)crtfastmath.o): Likwise.
5355 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
5357         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
5358         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
5359         * basic-block.h (struct control_flow_graph): Added x_dom_computed
5360         and x_n_bbs_in_dom_tree fields.
5362 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
5364         PR tree-optimization/32087
5365         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
5366         Do not call scale_bbs_frequencies_int with prob of zero.
5368 2007-07-26  Julian Brown  <julian@codesourcery.com>
5370         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
5371         (neon_element_bits): Add prototypes.
5372         * config/arm/arm.c (bounds_check, neon_lane_bounds)
5373         (neon_const_bounds, neon_element_bits): New functions.
5374         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
5375         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
5376         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
5377         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
5378         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
5379         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
5380         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
5381         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
5382         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
5383         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
5384         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
5385         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
5386         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
5388 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
5390         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
5391         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
5393 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
5394             Julian Brown  <julian@codesourcery.com>
5396         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
5397         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
5398         * config/arm/cortex-a8.md: New.
5399         * config/arm/cortex-a8-neon.md: New.
5400         * config/arm/neon-schedgen.ml: New.
5401         * config/arm/neon.md (vqh_mnem): New.
5402         (neon_type): New.
5403         (Is_float_mode): New.
5404         (Scalar_mul_8_16): New.
5405         (Is_d_reg): New.
5406         (V_mode_nunits): New.
5407         (All instruction patterns): Annotate with neon_type attribute
5408         values.
5409         * config/arm/arm.md: Include cortex-a8.md.
5410         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
5411         values.
5412         Annotate instruction patterns accordingly.
5413         (generic_sched): Do not use generic scheduling for Cortex-A8.
5414         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
5416 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
5418         * fold-const.c (fold_read_from_constant_string): Use
5419         build_int_cst_type.
5420         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
5422 2007-07-26  Nick Clifton  <nickc@redhat.com>
5424         * tree-ssa-operands.h: Change copyright header to refer to version
5425         3 of the GNU General Public License and to point readers at the
5426         COPYING3 file and the FSF's license web page.
5427         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
5428         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
5429         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
5430         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
5431         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
5432         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
5433         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
5434         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
5435         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
5436         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
5437         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
5438         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
5439         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
5440         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
5441         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
5442         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
5443         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
5444         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
5445         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
5446         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
5447         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
5448         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
5449         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
5450         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
5451         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
5452         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
5453         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
5454         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
5455         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
5456         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
5457         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
5458         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
5459         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
5460         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
5461         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
5462         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
5463         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
5464         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
5465         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
5466         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
5467         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
5468         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
5469         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
5470         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
5471         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
5472         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
5473         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
5474         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
5475         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
5476         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
5477         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
5478         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
5479         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
5480         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
5481         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
5482         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
5483         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
5484         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
5485         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
5486         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
5487         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
5488         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
5489         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
5490         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
5491         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
5492         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
5493         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
5494         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
5495         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
5496         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
5497         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
5498         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
5499         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
5500         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
5501         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
5502         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
5503         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
5504         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
5505         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
5506         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
5507         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
5508         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
5509         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
5510         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
5511         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
5512         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
5513         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
5514         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
5515         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
5516         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
5517         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
5518         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
5519         vecprim.h, basic-block.h, tree-ssa-structalias.c,
5520         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
5521         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
5522         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
5523         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
5524         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
5525         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
5526         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
5527         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
5528         convert.c, convert.h, langhooks-def.h, reload1.c,
5529         tree-ssa-operands.c: Likewise.
5531 2007-07-26  Jan Hubicka  <jh@suse.cz>
5533         * tree-ssa-live.c: Include debug.h and flags.h.
5534         (mark_scope_block_unused): New function.
5535         (remove_unused_scope_block_p): New function.
5536         (remove_unused_locals): Remove unused blocks too.
5538 2007-07-25  Ian Lance Taylor  <iant@google.com>
5540         * combine.c (combine_max_regno): Remove.  Remove all uses.
5541         (struct reg_stat_struct): Rename from struct reg_stat.
5542         (reg_stat_type): Define, and declare VECs.
5543         (reg_stat): Change from pointer to VEC.  Change all uses.
5544         (combine_split_insns): New static function.
5545         (try_combine, find_split_point): Call it instead of split_insns.
5547 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5549         * cfghooks.c (split_block): Fix the information about loop latch.
5551 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5553         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
5555 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5557         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
5558         Scan the new edge for loop exit info.
5560 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
5562         * config/darwin.c: Include debug.h.
5564 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
5566         PR target/32218
5567         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
5569 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
5571         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
5572         (HARD_REGNO_MODE_OK): Ditto.
5573         (MODES_TIEABLE_P): Ditto.
5574         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
5575         (CLASS_MAX_NREGS): Ditto.
5576         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
5577         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
5578         (divdf3_internal_thr): Removed.
5579         * config/ia64/div.md: New file.
5580         * config/ia64/constraints.md: Add H constraint.
5582 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5584         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
5585         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
5586         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
5587         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
5588         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
5589         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
5590         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
5591         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
5592         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
5593         dump_sbitmap_file, debug_sbitmap, popcount_table,
5594         sbitmap_popcount): Constify.
5595         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
5596         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
5597         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
5598         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
5599         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
5600         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
5601         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
5602         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
5603         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
5604         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
5605         sbitmap_popcount, sbitmap_verify_popcount): Constify.
5607 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5609         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
5610         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
5611         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
5612         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
5613         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
5614         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
5615         bitmap_intersect_p, bitmap_intersect_compl_p,
5616         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
5617         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
5618         Constify.
5619         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
5620         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
5621         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
5622         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
5623         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
5624         debug_bitmap, debug_bitmap_file, bitmap_print,
5625         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
5626         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
5628 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
5630         * config/darwin.c (darwin_override_options): Additional fix for
5631         debug info formats that don't support var tracking.
5633 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5635         * cselib.c (entry_and_rtx_equal_p): Constify.
5636         * gengtype.c (output_mangled_typename, write_types, write_local):
5637         Likewise.
5638         * gengtype.h (const_type_p): New.
5639         * see.c (eq_descriptor_extension, hash_descriptor_extension):
5640         Constify.
5641         * tlink.c (scan_linker_output): De-constify.
5642         * tree-ssa-loop-im.c (memref_eq): Constify.
5643         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
5644         (shared_bitmap_hash, shared_bitmap_eq): Constify.
5646 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5648         * c-common.c (fname_as_string, c_type_hash): Constify.
5649         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
5650         * cgraph.c (edge_hash, edge_eq): Likewise.
5651         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
5652         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
5653         reg_attrs_htab_eq): Likewise.
5654         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
5655         Likewise.
5656         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
5657         const_decl_t, const_state_t, const_automata_list_el_t): New.
5658         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
5659         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
5660         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
5661         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
5662         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
5663         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
5664         compare_max_occ_cycle_nums, out_state_arcs_num,
5665         compare_transition_els_num, units_cmp, state_reservs_cmp):
5666         Constify.
5667         * genmodes.c (cmp_modes): Likewise.
5668         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
5669         * gimplify.c (compare_case_labels): Likewise.
5670         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
5671         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
5672         * matrix-reorg.c (mtt_info_hash): Likewise.
5673         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
5674         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
5675         (htab_hash_bucket, htab_hash_elem): Constify.
5676         * tree-browser.c (TB_parent_eq): Likewise.
5677         * tree-scalar-evolution.c (hash_scev_info): Likewise.
5678         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
5679         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
5680         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
5681         Constify.
5682         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
5683         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
5684         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
5685         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
5686         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
5687         New.
5688         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
5689         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
5690         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
5691         * tree-ssa-threadupdate.c (redirection_data_hash,
5692         redirection_data_eq): Likewise. 
5693         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
5694         * tree-ssa.c (var_ann_eq): Likewise.
5695         * tree-vrp.c (compare_case_labels): Likewise.
5696         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
5697         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
5698         tree_not_check_failed, tree_class_check_failed,
5699         tree_range_check_failed, tree_not_class_check_failed,
5700         omp_clause_check_failed, omp_clause_range_check_failed,
5701         tree_contains_struct_check_failed, tree_operand_check_failed):
5702         Likewise. 
5703         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
5704         tree_not_check_failed, tree_class_check_failed,
5705         tree_range_check_failed, tree_not_class_check_failed,
5706         tree_operand_check_failed, omp_clause_operand_check_failed,
5707         tree_operand_length): Likewise. 
5708         * var-tracking.c (const_variable): New.
5709         (variable_htab_hash, variable_htab_eq): Constify.
5710         * varasm.c (const_desc_hash): Likewise.
5712 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5714         * expr.c (handled_component_p): Constify.
5715         * fold-const.c (fit_double_type): Likewise.
5716         * real.h (real_value_from_int_cst): Likewise.
5717         * tree-flow-inline.h (gimple_in_ssa_p,
5718         gimple_aliases_computed_p, gimple_addressable_vars,
5719         gimple_call_clobbered_vars, gimple_referenced_vars,
5720         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
5721         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
5722         may_aliases, end_readonly_imm_use_p, has_zero_uses,
5723         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
5724         is_label_stmt, is_global_var, phi_ssa_name_p,
5725         factoring_name_p, is_call_clobbered, tree_common_ann,
5726         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
5727         unmodifiable_var_p, array_ref_contains_indirect_ref,
5728         ref_contains_array_ref, lookup_subvars_for_var,
5729         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
5730         gimple_mem_ref_stats): Likewise.
5731         * tree-flow.h (tree_common_ann, var_ann, function_ann,
5732         may_aliases, is_exec_stmt, is_label_stmt,
5733         ref_contains_array_ref, array_ref_contains_indirect_ref,
5734         var_can_have_subvars, overlap_subvar, is_call_clobbered,
5735         unmodifiable_var_p): Likewise.
5736         * tree-gimple.c (is_gimple_min_invariant): Likewise.
5737         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
5738         * tree.c (type_hash_list, attribute_hash_list, tree_size,
5739         cst_and_fits_in_hwi, real_value_from_int_cst,
5740         build_real_from_int_cst, integer_zerop, integer_onep,
5741         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
5742         tree_floor_log2, real_zerop, real_onep, real_twop,
5743         real_minus_onep, really_constant_p, purpose_member, chain_member,
5744         list_length, fields_length, int_size_in_bytes, bit_position,
5745         int_bit_position, byte_position, int_byte_position, expr_align,
5746         array_type_nelts, tree_node_structure,
5747         type_contains_placeholder_1, iterative_hash_pointer,
5748         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
5749         tree_map_base_eq, type_hash_list, type_hash_eq,
5750         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
5751         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
5752         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
5753         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
5754         int_fits_type_p, get_containing_scope, decl_function_context,
5755         decl_type_context, omp_clause_operand_check_failed,
5756         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
5757         * tree.h (omp_clause_operand_check_failed, tree_size,
5758         build_real_from_int_cst, array_type_nelts, purpose_member,
5759         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
5760         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
5761         is_attribute_p, check_qualified_type, expr_align,
5762         int_size_in_bytes, bit_position, int_bit_position, byte_position,
5763         int_byte_position, list_length, fields_length, initializer_zerop,
5764         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
5765         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
5766         tree_node_structure, handled_component_p, get_containing_scope,
5767         decl_function_context, decl_type_context, real_zerop,
5768         type_num_arguments, fit_double_type, really_constant_p,
5769         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
5770         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
5771         real_twop, real_minus_onep, int_cst_value): Likewise.
5773 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5775         * cfglayout.c (insn_scope, insn_line): Constify.
5776         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
5777         const_double_htab_hash, const_double_htab_eq,
5778         mem_attrs_htab_hash): Likewise.
5779         * loop-iv.c (biv_eq): Likewise.
5780         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
5781         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
5782         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
5783         Likewise. 
5784         * rtl-error.c (location_for_asm, diagnostic_for_asm,
5785         error_for_asm, warning_for_asm, _fatal_insn,
5786         _fatal_insn_not_found): Likewise. 
5787         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
5788         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
5789         rtl_check_failed_type2, rtl_check_failed_code1,
5790         rtl_check_failed_code2, rtl_check_failed_code_mode,
5791         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
5792         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
5793         rtl_check_failed_type2, rtl_check_failed_code1,
5794         rtl_check_failed_code2, rtl_check_failed_code_mode,
5795         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
5796         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
5797         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
5798         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
5799         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
5800         rtx_unstable_p, get_integer_term, get_related_value,
5801         offset_within_block_p, reg_mentioned_p, count_occurrences,
5802         reg_referenced_p, reg_used_between_p, no_labels_between_p,
5803         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
5804         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
5805         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
5806         find_constant_src, find_reg_fusage, find_regno_fusage,
5807         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
5808         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
5809         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
5810         computed_jump_p, auto_inc_p, in_expr_list_p,
5811         remove_node_from_expr_list, loc_mentioned_in_p,
5812         label_is_jump_target_p, reversed_comparison_code_parts,
5813         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
5814         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
5815         print_inline_rtx): Likewise.
5816         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
5817         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
5818         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
5819         get_integer_term, get_related_value, offset_within_block_p,
5820         count_occurrences, reg_mentioned_p, no_labels_between_p,
5821         reg_used_between_p, reg_referenced_p, single_set_2,
5822         multiple_sets, set_noop_p, refers_to_regno_p,
5823         reg_overlap_mentioned_p, dead_or_set_p,
5824         covers_regno_no_parallel_p, covers_regno_p,
5825         dead_or_set_regno_p, find_reg_note, find_regno_note,
5826         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
5827         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
5828         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
5829         side_effects_p, may_trap_p_1, may_trap_p,
5830         may_trap_after_code_motion_p, may_trap_or_fault_p,
5831         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
5832         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
5833         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
5834         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
5835         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
5836         Likewise. 
5837         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
5838         warning_for_asm): Likewise.
5839         * tree.h (print_rtl): Likewise.
5840         * varasm.c (get_pool_mode): Likewise.
5842 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5844         * c-lex.c (c_lex_with_flags, lex_string): Constify.
5845         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
5846         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
5847         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
5848         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
5849         * ddg.c (compare_sccs): Likewise.
5850         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
5851         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
5852         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
5853         decimal_do_fix_trunc, decimal_real_to_integer,
5854         decimal_real_to_integer2, decimal_real_maxval): Likewise.
5855         * dse.c (const_group_info_t): New.
5856         (invariant_group_base_eq, invariant_group_base_hash): Constify.
5857         * dwarf2out.c (const_dw_die_ref): New.
5858         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
5859         * tree-browser.c (TB_parent_eq): Likewise.
5860         * unwind-dw2-fde.c (__register_frame_info_bases,
5861         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
5862         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
5863         Likewise.
5864         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
5865         * unwind-dw2.c (uw_frame_state_for): Likewise.
5866         * value-prof.c (histogram_hash, histogram_eq): Likewise.
5867         * value-prof.h (const_histogram_value): New.
5869 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
5871         * config/mips/mips.c (machine_function): Add
5872         initialized_mips16_gp_pseudo_p.
5873         (mips16_gp_pseudo_reg): Do not emit the initialization of
5874         mips16_gp_pseudo_rtx when being called from the gimple cost-
5875         calculation routines; emit it on the first use outside those
5876         routines.
5878 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5880         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
5881         New.
5882         
5883         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
5884         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
5885         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
5886         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
5887         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
5888         Preserve const-ness of parameters through use of __typeof(),
5889         also constify and tidy.
5890         
5891         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
5892         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
5893         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
5894         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
5895         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
5896         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
5897         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
5898         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
5899         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
5901 2007-07-25  Julian Brown  <julian@codesourcery.com>
5902             Mark Shinwell  <shinwell@codesourcery.com>
5904         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
5905         (alpha_mangle_type): This.
5906         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5907         (TARGET_MANGLE_TYPE): Define this instead.
5908         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
5909         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
5910         (arm_init_neon_builtins): Fix comment.
5911         (arm_mangle_map_entry): New.
5912         (arm_mangle_map): New.
5913         (arm_mangle_type): New.
5914         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
5915         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
5916         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
5917         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5918         (TARGET_MANGLE_TYPE): Define this instead.
5919         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
5920         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
5921         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
5922         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5923         (TARGET_MANGLE_TYPE): Define this instead.
5924         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
5925         to...
5926         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
5927         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5928         (TARGET_MANGLE_TYPE): Define this instead.
5929         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
5930         (s390_mangle_type): This.
5931         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5932         (TARGET_MANGLE_TYPE): Define this instead.
5933         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
5934         (sparc_mangle_type): This.
5935         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5936         (TARGET_MANGLE_TYPE): Define this instead.
5937         * cp/mangle.c (write_type): Call mangle_type target hook on all
5938         types before mangling.  Use original type, not main variant, as
5939         argument.
5940         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
5941         (TARGET_MANGLE_TYPE): This.
5942         * target.h (gcc_target): Rename mangle_fundamental_type to
5943         mangle_type.
5944         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
5945         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
5947 2007-07-25  Julian Brown  <julian@codesourcery.com>
5948             Paul Brook  <paul@codesourcery.com>
5949             Joseph Myers  <joseph@codesourcery.com>
5950             Mark Shinwell  <shinwell@codesourcery.com>
5952         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
5953         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
5954         (with_fpu): Allow --with-fpu=neon.
5955         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
5956         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
5957         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
5958         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
5959         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
5960         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
5961         (neon_emit_pair_result_insn, neon_disambiguate_copy)
5962         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
5963         (output_move_neon): Add prototypes.
5964         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
5965         (all_fpus): Add FPUTYPE_NEON.
5966         (fp_model_for_fpu): Add NEON field.
5967         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
5968         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
5969         in registers.
5970         (arm_legitimate_address_p): Don't support fancy addressing for NEON
5971         structure moves.
5972         (thumb2_legitimate_address_p): Likewise.
5973         (neon_valid_immediate): Recognize and prepare constants suitable for
5974         NEON instructions.
5975         (neon_immediate_valid_for_move): New function. Recognize and prepare
5976         immediates for NEON move instructions.
5977         (neon_immediate_valid_for_logic): New function. Recognize and
5978         prepare immediates for NEON logic instructions.
5979         (neon_output_logic_immediate): New function. Create asm string
5980         suitable for outputting immediate logic instructions.
5981         (neon_pairwise_reduce): New function. Implement reduction using
5982         pairwise operations.
5983         (neon_expand_vector_init): New function. Expand a (possibly
5984         non-constant) vector initialization.
5985         (neon_vector_mem_operand): New function. Memory operands supported
5986         for quad-word loads/stores to/from ARM or NEON registers. Don't
5987         allow base+offset addressing for core regs.
5988         (neon_struct_mem_operand): New function. Valid mems for NEON
5989         structure moves.
5990         (coproc_secondary_reload_class): Enable NEON registers to be loaded
5991         from neon_vector_mem_operand addresses without a secondary register.
5992         (add_minipool_forward_ref): Handle >8-byte minipool entries.
5993         (add_minipool_backward_ref): Likewise.
5994         (dump_minipool): Likewise.
5995         (push_minipool_fix): Likewise.
5996         (output_move_quad): New function. Output quad-word moves, loads and
5997         stores using ARM registers.
5998         (output_move_vfp): Add support for vectors in VFP (NEON) D
5999         registers.
6000         (output_move_neon): Output a NEON load/store to/from a quadword
6001         register.
6002         (arm_print_operand): Implement new codes:
6003         - 'c' for unadorned integers (without a # sign).
6004         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
6005         mode.
6006         - 'e', 'f' for the low and high D parts of a NEON Q register.
6007         - 'q' outputs a NEON Q register.
6008         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
6009         - 'T' prints NEON opcode features from a coded bitmask.
6010         - 'F' is similar to T, but signed/unsigned codes both print as
6011         'i'.
6012         - 't' is similar to T, but 'u' is printed instead of 'p'.
6013         - 'O' prints 'r' if NEON instruction should perform rounding (as
6014         specified by bitmask), else prints nothing.
6015         - '#' is a punctuation character to stop operand numbers from
6016         running together with following digits in the assembler
6017         strings for instructions (when using mode attributes).
6018         (arm_assemble_integer): Handle extra NEON vector modes. Permute
6019         constant vectors in big-endian mode, where necessary.
6020         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
6021         Handle EI, OI, CI, XI modes.
6022         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
6023         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
6024         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
6025         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
6026         (neon_builtin_type_bits): Add enumeration, one bit for each vector
6027         type.
6028         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
6029         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
6030         to turn v8qi, etc. into bits defined above.
6031         (neon_itype): New enumeration. Classifications of NEON builtins.
6032         (neon_builtin_datum): Define struct. Contains information about
6033         a single builtin (with multiple modes).
6034         (CF): Define helper macro for...
6035         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
6036         modes.
6037         (neon_builtin_data): New array. Define information about builtins
6038         for use during initialization/expansion.
6039         (arm_init_neon_builtins): New function.
6040         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
6041         true.
6042         (neon_builtin_compare): New function.
6043         (locate_neon_builtin_icode): New function. Find an insn code for a
6044         builtin given a function code for that builtin. Also return type of
6045         builtin (NEON_BINOP, NEON_UNOP etc.).
6046         (builtin_arg): New enumeration. Types of arguments for builtins.
6047         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
6048         Takes a variable argument list of builtin_arg types, terminated by
6049         NEON_ARG_STOP.
6050         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
6051         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
6052         (neon_emit_pair_result_insn): New function. Support returning pairs
6053         of vectors via a pointer.
6054         (neon_disambiguate_copy): New function. Set up operands for a
6055         multi-word copy such that registers do not get clobbered.
6056         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
6057         ARM_BUILTIN_NEON_BASE.
6058         (arm_file_start): Set float-abi attribute for NEON.
6059         (arm_vector_mode_supported_p): Enable NEON vector modes.
6060         (arm_mangle_map_entry): New.
6061         (arm_mangle_map): New.
6062         (arm_mangle_vector_type): New.
6063         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
6064         when appropriate.
6065         (TARGET_NEON): New macro. Target supports NEON.
6066         (fputype): Add FPUTYPE_NEON.
6067         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
6068         for vectorization based on command-line arg.
6069         (NEON_REGNO_OK_FOR_NREGS): Define.
6070         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
6071         (VALID_NEON_STRUCT_MODE): Define.
6072         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
6073         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
6074         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
6075         (consttable_16): Add pattern for outputting 16-byte minipool
6076         entries.
6077         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
6078         vec-common.md).
6079         (vec-common.md, neon.md): Include md files.
6080         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
6081         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
6082         (memory_constraint "Ut", "Un", "Us"): Define.
6083         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
6084         (MMX_char): New mode attribute.
6085         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
6086         (*add<mode>3_iwmmxt): New insn pattern.
6087         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
6088         (*sub<mode>3_iwmmxt): New insn pattern.
6089         (mulv4hi3): Rename to...
6090         (*mulv4hi3_iwmmxt): This.
6091         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
6092         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
6093         (uminv4hi3, uminv2si3): Remove. Replace with...
6094         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
6095         (*umin<mode>3_iwmmxt): These.
6096         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
6097         (ashr<mode>3_iwmmxt): This new pattern.
6098         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
6099         (lshr<mode>3_iwmmxt): This new pattern.
6100         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
6101         (ashl<mode>3_iwmmxt): This new pattern.
6102         * config/arm/neon-docgen.ml: New file. Generate documentation for
6103         intrinsics.
6104         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
6105         * config/arm/arm_neon.h: New (autogenerated).
6106         * config/arm/neon-testgen.ml: New file. Generate NEON tests
6107         automatically.
6108         * config/arm/neon.md: New file. Define NEON instructions.
6109         * config/arm/neon.ml: New file. Abstract description of NEON
6110         instructions, used to generate arm_neon.h header, documentation and
6111         tests.
6112         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
6113         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
6114         support.
6115         * doc/extend.texi (ARM Built-in Functions): Rename and remove
6116         extraneous comma.
6117         (ARM NEON Intrinsics): New subsection.
6118         * doc/arm-neon-intrinsics.texi: New (autogenerated).
6120 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
6122         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
6123         prototype.
6125 2007-07-24  Jan Hubicka  <jh@suse.cz>
6127         * regclass.c (move_table): New type.
6128         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
6129         (init_move_cost): Break out from ...
6130         (init_reg_sets_1): ... here; simplify computation of
6131         have_regs-of_mode and contains_reg_of_mode.
6132         (record_reg_classes): Unswitch internal loops.
6133         (copy_cost): Trigger lazy initialization of move cost
6134         (record_address_regs): Likewise.
6136 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
6138         * config/darwin.c (darwin_override_options): Don't force on
6139         flag_var_tracking_uninit when no debug info is requested.
6141 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
6143         * cfgloop.c (init_loops_structure): New function.
6144         (flow_loops_find): Create root of the loop tree unconditionally.
6146 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
6148         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
6150 2007-07-24  Jan Hubicka  <jh@suse.cz>
6152         * caller-save.c: Include ggc.h, gt-caller-save.h
6153         (reg_save_code, reg_restore_code): Rename to ...
6154         (cached_reg_save_code, cached_reg_restore_code): ... those.
6155         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
6156         (reg_save_code, reg_restore_code): New functions.
6157         (init_caller_save): Do not intialize
6158         reg_save_code/reg_restore_code tables.
6159         * Makefile.in: (gt-caller-save.h): New.
6161 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6163         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
6164         with the mode of the original operand instead of
6165         integer_one_node.
6167 2007-07-23  Jan Hubicka  <jH@suse.cz>
6169         * i386.c (ix86_secondary_memory_needed): Break out to...
6170         (inline_secondary_memory_needed): ... here.
6171         (ix86_memory_move_cost): Break out to ...
6172         (inline_memory_move_cost): ... here; add support for IN value of 2 for
6173         maximum of input and output; fix handling of Q_REGS on 64bit.
6174         (ix86_secondary_memory_needed): Microoptimize.
6176 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
6178         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
6179         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
6180         stmts_from_loop, known_dependences_p, build_rdg): New.
6181         * tree-data-ref.h: Depends on graphds.h.
6182         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
6183         (build_rdg): Declared.
6184         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
6186 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
6188         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
6189         ccp_min_invariant.
6191 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
6192             Jakub Jelinek  <jakub@redhat.com>
6194         PR middle-end/PR28690
6195         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
6196         EQ compares.
6197         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
6198         and MEM_POINTER operands over REG and MEM operands.
6199         (swap_commutative_operands_p): Change return value to bool.
6200         * rtl.h: Update the corresponding prototype.
6201         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
6202         instead of gen_rtx_PLUS.
6203         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
6204         value to bool.  Change function arguments to rtx's and update code
6205         to match.
6206         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
6207         calls to match the new declaration.
6208         * simplify-rtx.c (simplify_associative_operation): Don't
6209         reorder simplify_binary_operation arguments.
6211 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
6213         * config/mips/mips.c (override_options): Use mips_costs to derive
6214         the default branch cost.
6215         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
6216         than mips_costs.
6217         * config/mips/mips.opt (mbranch-cost=): New option.
6218         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
6220 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
6222         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
6223         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
6224         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
6225         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
6227 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
6229         * config/mips/constraints.md (ks): New constraint.
6230         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
6231         (*add<mode>3_mips16): ...here.
6233 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
6235         * optabs.h (enum optab_index): Add new OTI_signbit.
6236         (signbit_optab): Define corresponding macro.
6237         (enum insn_code signbit_optab[]): Remove array.
6238         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
6239         (expand_copysign_absneg): If back end provides signbit insn, use it
6240         instead of bit operations on floating point argument.
6241         * builtins.c (enum insn_code signbit_optab[]): Remove array.
6242         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
6243         for availability of signbit insn.
6245         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
6246         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
6247         SSE mode is not active.
6248         (isinf<mode>2): Disable for mfpmath=sse,387.
6250 2007-07-22  Ben Elliston  <bje@au.ibm.com>
6252         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
6253         `class' parameter.
6254         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
6256 2007-07-20  Richard Guenther  <rguenther@suse.de>
6258         * tree-cfg.c (verify_expr): COND_EXPRs can have any
6259         integral typed condition.
6260         * tree-ssa.c (useless_type_conversion_p): Do not preserve
6261         booleanness.  Only preserve conversions from a non-base
6262         type to a base type, not in general between types with
6263         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
6264         * tree.def (COND_EXPR): Document that the condition
6265         can be of any integral type.
6267 2007-07-20  Nigel Stephens  <nigel@mips.com>
6268             Richard Sandiford  <richard@codesourcery.com>
6270         * config/mips/mips.h (mips_dwarf_regno): Declare.
6271         (DBX_REGISTER_NUMBER): Remove redundant brackets.
6272         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
6273         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
6274         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
6275         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
6276         (REG_CLASS_NAMES): Update accordingly.
6277         * config/mips/mips.c (mips_dwarf_regno): New array.
6278         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
6279         (mips_subword): Remove special handling for accumulator registers.
6280         (override_options): Initiailize mips_dwarf_regno.  Remove use
6281         of ACC_HI_REG_P.
6282         (mips_swap_registers): New function.
6283         (mips_conditional_register_usage): Swap accumulator registers
6284         around if TARGET_LITTLE_ENDIAN.
6285         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
6286         * config/mips/constraints.md (h, l): Use the endianness to choose
6287         between MD0_REG and MD1_REG.
6288         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
6289         alternative-dependent template.
6291 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
6293         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
6294         no_new_pseudos.
6296 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
6298         * function.c (thread_prologue_and_epilogue_insns): Fix exit
6299         predecessor fallthru flags.
6301 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
6303         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
6304         of compare to the same type.
6305         * cfgloopmanip.c (add_loop): Update information about loop exits.
6306         (loop_version): Remove the innermost loop requirement.
6307         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
6308         to sizetype for pointers.
6310 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
6312         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
6313         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
6314         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
6316         * config/dfp-bit.c: Empty for TFmode conversions.
6318 2007-07-18  Caroline Tice  <ctice@apple.com>
6319         
6320         * var-tracking.c (find_src_status):  Check for  COND_EXEC insns
6321         and handle them correctly; check that src is not NULL before
6322         trying to use it.
6323         (find_src_set_src): Likewise.
6324         
6325 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
6326         
6327         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
6328         (struct alignment_context, init_alignment_context): New.
6329         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
6330         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
6331         (XCHAL_HAVE_S32C1I): Likewise.
6332         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
6333         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
6334         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
6335         (ATOMIC, HQI): New macros.
6336         (memory_barrier, *memory_barrier): New.
6337         (sync_lock_releasesi): New.
6338         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
6339         (sync_lock_test_and_set<mode>): New.
6340         (sync_<atomic><mode>): New.
6341         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
6342         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
6343         (xtensa_expand_atomic): New.
6344         
6345 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6347         PR target/30652
6349         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
6350         transformation for builtin ISNORMAL.
6351         (expand_builtin): Handle BUILT_IN_ISNORMAL.
6352         * builtins.def (BUILT_IN_ISNORMAL): New.
6353         * doc/extend.texi: Document isnormal.
6355 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6357         PR target/30652
6359         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
6360         optabs infrastructure.  Provide generic implementation for
6361         FINITE/ISFINITE.
6362         (expand_builtin): Handle FINITE/ISFINITE.
6363         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
6364         (fold_builtin_1): Likewise.
6366         * builtins.def (BUILT_IN_ISFINITE): New.
6368         * doc/extend.texi: Document isfinite.
6370 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6372         PR target/30652
6373         PR middle-end/20558
6375         * builtins.c (expand_builtin_interclass_mathfn): Provide a
6376         generic fallback for isinf.
6377         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
6378         calculation code ...
6379         * real.c (get_max_float): ... to here.
6380         * real.h (get_max_float): New.
6382 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6384         PR middle-end/32668
6386         * builtin-attrs.def (ATTR_TYPEGENERIC,
6387         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
6389         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
6390         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
6391         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
6392         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
6394         * c-common.c (handle_type_generic_attribute): New.
6395         (c_common_attribute_table): Add "type generic".
6397         * c-typeck.c (convert_arguments): Handle "type generic" functions.
6399 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
6401         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
6402         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
6403         properly.
6405 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6407         PR target/32808
6408         * config/cris/cris.c (cris_print_index): Don't use XEXP before
6409         checking that the operand is an expression.
6411 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
6412             Danny Smith  <dannysmith@users.sourceforge.net>
6414         PR/other 30335
6415         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
6416         file mapping object in local namespace if Windows version later
6417         than NT4
6419 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
6421         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
6422         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
6423         arm_cannot_force_const_mem.
6424         (arm_cannot_force_const_mem): New function.
6425         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
6426         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
6427         of arm_tls_referenced_p.
6428         * config/arm/arm.md (movsi): Split out-of-section constants when
6429         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
6430         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
6432 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
6434         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
6436 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
6438         * config/mips/mips.md (*extendqihi2): Convert the destination
6439         to SImode.
6441 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6443         * config/pa/fptr.c: Update license header.
6444         * config/pa/milli64.S: Likewise.
6446 2007-07-17  Nick Clifton  <nickc@redhat.com>
6448         * COPYING_v3: New file.  Contains version 3 of the GNU General
6449         Public License.
6450         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
6451         Lesser General Public License.
6452         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
6453         the GNU General Public License.
6455 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
6457         PR rtl-optimization/32773
6458         * cfglayout.c (force_one_exit_fallthru): New function.
6459         (cfg_layout_finalize): Use it.
6461 2007-07-16  Richard Guenther  <rguenther@suse.de>
6462             Uros Bizjak  <ubizjak@gmail.com>
6464         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
6465         before forcing it to gimple operand.
6467 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
6468             David Ung  <davidu@mips.com>
6470         * config/mips/mips.h (TUNE_24K): Define.
6471         (TUNE_MACC_CHAINS): Add TUNE_24K.
6472         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
6473         imadd.
6474         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
6475         (r74k_int_madd): .. this new reservation.
6476         (define_bypass): Fixed bypasses for r74k_int_madd to use
6477         mips_linked_madd_p.
6478         * config/mips/24k.md (define_bypass): Define new
6479         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
6481 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
6482             Nigel Stephens  <nigel@mips.com>
6484         * config/mips/mips.md:  Include 20kc.md.
6485         * config/mips/20kc.md: New file.
6486         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
6487         (mips_adjust_cost): Tweak for 20Kc.
6488         (mips_issue_rate): Likewise.
6489         * config/mips/mips.h (TUNE_20KC): Define.
6491 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
6493         * config/rs6000/rs6000.c (struct processor_cost): Add
6494         cache_line_size, l1_cache_lines, and simultaneous_prefetches
6495         fields.
6496         (*_cost): Add cache information.
6497         (rs6000_override_options): Set cache parameters.
6499 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6501         PR bootstrap/3456
6502         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
6503         * doc/install.texi (mips-sgi-irix6): pthread support works now.
6505 2007-07-16  Paul Brook  <paul@codesourcery.com>
6507         PR target/32753
6508         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
6509         (cirrus_thumb2_movsi_insn): Ditto.
6511 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
6513         * config/rs6000/darwin-fallback.c (interpret_libc): Change
6514         CR2_REGNO to R_CR2.
6516 2007-07-15  Andrew Haley  <aph@redhat.com>
6518         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
6519         before looking in the context.
6521 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6523         PR middle-end/32398
6524         PR middle-end/32769
6525         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
6526         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
6527         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
6528         (pa_output_function_prologue): Use rp_saved and
6529         current_function_is_leaf to generate .CALLINFO statement.
6530         (hppa_expand_prologue): Set rp_saved.
6531         (hppa_expand_epilogue): Use rp_saved.
6532         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
6533         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
6535 2007-07-14  Dirk Mueller  <dmueller@suse.de>
6537         * omega.c (coalesce): Fix memory leak on early exit.
6538         * matrix-reorg.c (check_allocation_function): Likewise.
6539         * tree-vect-transform.c (vect_get_new_vect_var): free result
6540         of concat().
6541         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
6542         pass pointer to edge vector
6543         (partition_hot_cold_basic_blocks): Fix memory leak.
6544         * collect2.c (prefix_from_string): Free temporary storage.
6545         * reload1.c (fixup_abnormal_edges): Free sbitmap.
6547 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
6549         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
6550         (DO_GLOBAL_DTORS_BODY): Likewise.
6552 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
6553             Nigel Stephens  <nigel@mips.com>
6555         * config/mips/mips.c (mips_classify_symbol): Don't return
6556         SYMBOL_SMALL_DATA for constant pool addresses if
6557         TARGET_EMBEDDED_DATA is true.
6559 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
6561         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
6562         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
6563         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
6564         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
6565         __builtin_ia32_storehps, __builtin_ia32_storelps,
6566         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
6567         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
6568         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
6569         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
6570         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
6571         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
6572         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
6573         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
6574         using def_builtin_const.
6576 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
6578         PR tree-optimization/32705
6579         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
6580         (simplify_binary_expression): Use SSA_VAL consistently.
6582 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
6584         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
6585         (SPEFSCR_REGNO): Delete definition.
6586         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
6587         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6588         * config/rs6000/rs6000.h: Do not define *_REGNO.
6589         LINK_REGISTER_REGNUM -> LR_REGNO.
6590         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6591         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
6592         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6593         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
6594         R_VRSAVE, R_VSCR. Use them.
6595         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
6596         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
6597         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
6598         * config/rs6000/aix.h: Define R_LR.  Use it.
6599         
6600 2007-07-13  Caroline Tice  <ctice@apple.com>
6601         
6602         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
6603         flag_var_tracking is explicitly turned off (i.e. when variable
6604         tracking is not feasible); otherwise, turn flag_var_tracking on when
6605         flag_var_tracking_uninit is on.
6606         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
6607         note definitions, to allow recording of initialization status in the
6608         notes.
6609         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
6610         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
6611         determine if two note locations are equal.
6612         (output_loc_list): Don't output list entries whose start & end labels
6613         are the same.
6614         (reg_loc_descriptor): Add parameter for initialization status; pass it
6615         to other loc descriptor functions.
6616         (one_reg_loc_descriptor): Add parameter for initialization status;
6617         check its value and add DW_OP_GNU_uninit to returned loc descr if
6618         appropriate.
6619         (multiple_reg_loc_descriptor): Add parameter for initialization
6620         status;
6621         pass init status argument to other loc descriptor functions; check
6622         value of intialization parameter and add DW_OP_GNU_uninit to returned
6623         loc descr if appropriate.
6624         (based_loc_descr): Add parameter for initialization status; add new
6625         variable for return value; check value of initialization parameter and
6626         add DW_OP_GNU_uninit to returned loc descr if appropriate.
6627         (concatn_mem_loc_descriptor): Add parameter for initialization status;
6628         pass init status argument to other loc descriptor functions; check
6629         value of intialization parameter and add DW_OP_GNU_uninit to returned
6630         loc descr if appropriate.
6631         (mem_loc_descriptor): Likewise.
6632         (concat_loc_descriptor): Likewise.
6633         (concatn_loc_descriptor): Likewise.
6634         (loc_descriptor): Add parameter for initialization status; pass it as
6635         argument to other loc descriptor function calls.
6636         (loc_descriptor_from_tree_1): Add appropriate initialization status
6637         to loc descriptor function calls.
6638         (add_location_or_const_value_attribute): Get initialization status
6639         from VAR_LOCATION note; add initialization status to loc descriptor
6640         function calls.
6641         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
6642         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
6643         status is uninitialized, add "[uninint]" to output.
6644         * common.opt (fvar-tracking-uninit): New option, similar to
6645         fvar-tracking, to turn on tracking of uninitialized variables; creates
6646         a new global flag, flag_var_tracking_uninit.
6647         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
6648         (enum var_init_status): New type, for var initialization status field.
6649         * var-tracking.c (struct location_chain_def): Two new fields, init,
6650         for initialization status, and set_src for the assignment value expr.
6651         (unshare_variable): New parameter for initialization status;
6652         initialize new init and set_src fields.
6653         (var_reg_set): New parameters for initialization status and value;
6654         pass them to set_variable_part.
6655         (var_mem_set): Likewise.
6656         (get_init_value): New function.
6657         (var_reg_delete_and_set): New initialization status & value
6658         parameters; add call to get_init_value if status is unknown; pass new
6659         parameters to clobber_variable_part and var_reg_set.
6660         (var_mem_delete_and_set): Likewise.
6661         (var_reg_delete): Pass null set_src value to clobber_variable_part.
6662         (var_mem_delete): Likewise.
6663         (variable_union): Pass status to unshare_variable; initialize new init
6664         and set_src fields. If flag_var_tracking_uninit is not set, force
6665         status to initialized.
6666         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
6667         used later to get the set_src value.
6668         (find_src_status): New function.
6669         (find_src_set_src): New function.
6670         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
6671         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
6672         MO_SET, get set_src value and pass it to var_reg_delete_and_set
6673         and var_mem_delete_and_set.
6674         (dump_variable): Print out "[uninit]" if appropriate.
6675         (set_variable_part): Add new initialization and set_src parameters;
6676         pass status to unshare_variable; set node->init and node- >set_src
6677         fields and modify slot in hash table appropriately; save the init and
6678         set_src values if appropriate and assign to the new node.
6679         (clobber_variable_part): New set_src parameter; if two nodes have
6680         same variable and same location but different set_src (assignment)
6681         values, clobber old node.
6682         (delete_variable_part): Pass init status to unshare_variable.
6683         (emit_note_insn_var_location): Add initialized var; assign var's init
6684         status to new 'initialized'; pass new init status field to calls to
6685         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
6686         status to initialized.
6687         (emit_notes_in_bb): Pass initialization status to calls to
6688         var_reg_set, var_mem_set, var_reg_delete_and_set and
6689         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
6690         var_reg_delete_and_set and var_mem_delete_and_set; call
6691         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
6692         make up for change in add_stores.
6693         (vt_add_function_parameters): Add status to calls to
6694         set_variable_part.
6695         * config/darwin.c (darwin_override_options): Turn on uninitialized
6696         tracking automatically, if var_tracking is on and the system is
6697         10.5 or higher.
6698         
6699 2007-07-13  Sa Liu  <saliu@de.ibm.com>
6701         * config.gcc: Add options for arch and tune on SPU.
6702         * config/spu/predicates.md: Add constant operands 0 and 1.
6703         * config/spu/spu-builtins.def: Add builtins for double precision 
6704         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
6705         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
6706         spu_testsv.
6707         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
6708         a CELLEDP target.
6709         * config/spu/spu-protos.h: Add new function prototypes. 
6710         * config/spu/spu.c (spu_override_options): Check options -march and
6711         -mtune.
6712         (spu_comp_icode): Add comparison code for DFmode and vector mode.
6713         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
6714         mode comparison.
6715         (spu_const_from_int): New.  Create a vector constant from 4 ints.
6716         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
6717         (spu_emit_vector_compare): New.  Emit vector compare.
6718         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
6719         * config/spu/spu.h: Add options -march and -mtune.  Define processor
6720         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
6721         CANONICALIZE_COMPARISON.
6722         * config/spu/spu.md: Add new insns for double precision compare
6723         and double precision vector compare.  Add vcond and smax/smin patterns
6724         to enable DFmode vector conditional expression.
6725         * config/spu/spu.opt: Add options -march and -mtune.
6726         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
6727         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
6728         both CELL and CELLEDP targets: spu_testsv.
6729         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
6730         values.
6732 2007-07-13  Richard Guenther  <rguenther@suse.de>
6734         PR tree-optimization/32721
6735         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
6736         TREE_THIS_VOLATILE on the folded reference.
6737         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
6738         if the array reference has TREE_THIS_VOLATILE set.
6740 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
6742         PR other/32188
6743         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
6745 2007-07-13  Andreas Schwab  <schwab@suse.de>
6747         * gengtype-lex.l: Allow declarations to be indented.
6749 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
6751         * ginclude/tgmath.h: New.
6752         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
6753         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
6754         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
6755         * configure: Regenerate.
6757 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
6759         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
6760         correct index when setting register save state for xd
6761         registers.
6763 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
6765         * config/sh/sh.c (mark_use): Remove.
6767 2007-07-12  Paul Brook  <paul@codesourcery.com>
6769         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
6770         reg does not overlap return value.
6772 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
6774         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
6775         (set_expression_vuses): Ditto.
6776         (init_pre): Initialize expression_vuses.
6778 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
6780         * config/i386/sse.md (storentdf, storentsf): New.
6782 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
6784         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
6785         FUNCTION_DECL.
6786         * tree.c (build_decl_stat): Move code from here...
6787         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
6788         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
6789         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
6790         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
6791         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
6792         FUNCTION_BOUNDARY.
6794 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
6795             Devang Patel  <dpatel@apple.com>
6797         PR tree-optimization/25413
6798         * targhooks.c (default_builtin_vector_alignment_reachable): New.
6799         * targhooks.h (default_builtin_vector_alignment_reachable): New.
6800         * tree.h (contains_packed_reference): New.
6801         * expr.c (contains_packed_reference): New.
6802         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
6803         (vect_enhance_data_refs_alignment): Call
6804         vector_alignment_reachable_p.
6805         * target.h (vector_alignment_reachable): New builtin.
6806         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
6807         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
6808         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
6810 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
6812         * target.h (builtin_vectorization_cost): Add new target builtin.
6813         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
6814         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
6815         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
6816         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
6817         uninitialized variables.
6818         * tree-vect-transform.c (cost_for_stmt): New function.
6819         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
6820         using cost 1 for all scalar stmts. Be less conservative when
6821         estimating the number of prologue/epulogue iterations. Call
6822         targetm.vectorize.builtin_vectorization_cost. Return
6823         min_profitable_iters-1.
6824         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
6825         initialization cost instead of TARG_VEC_STMT_COST. Use
6826         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
6827         epilogue code. Fix epilogue cost computation.
6828         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
6829         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
6830         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
6831         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
6832         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
6833         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
6835 2007-07-12  Richard Guenther  <rguenther@suse.de>
6837         * gimplify.c (gimplify_conversion): Make sure that the result
6838         from maybe_fold_offset_to_reference is trivially convertible
6839         to the desired type before doing the simplification.
6840         (gimplify_expr): Likewise.
6841         * fold-const.c (fold_binary): Use the correct types for
6842         building the simplified expression.
6844 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
6846         PR rtl-optimization/32729
6847         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
6848         that fallthru to exit.
6850 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6852         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
6853         (symDTPOFF2reg): Likewise.
6855 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
6857         PR tree-optimization/32663
6858         
6859         * tree.h (VALUE_HANDLE_VUSES): Remove.
6860         (struct tree_value_handle): Remove vuses.
6862         * tree-vn.c (create_value_handle_for_expr): Don't set
6863         VALUE_HANDLE_VUSES. 
6865         * tree-ssa-pre.c (expression_vuses): New.
6866         (alloc_expression_id): Set up expression_vuses.
6867         (get_expression_vuses): New.
6868         (set_expression_vuses): Ditto.
6869         (clear_expression_ids): Modify for expression_vuses.
6870         (phi_translate_1): Ditto.
6871         (phi_translate_set): Ditto.
6872         (value_dies_in_block_x): Ditto
6873         (valid_in_sets): Ditto.
6874         (add_to_sets): Ditto.
6875         (find_existing_value_expr): Ditto.
6876         (create_value_handle_for_expr): Ditto.
6877         (make_values_for_stmt): Ditto.
6878         (vuse_equiv): Remove.
6880 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
6882         * Makefile.in (mostlyclean): Remove object files.
6884 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
6886         * toplev.c (no_new_pseudos): Deleted.
6887         * rtl.h (no_new_pseudos): Deleted.
6888         * tree-pass.h (pass_no_new_pseudos): Deleted. 
6889         * passes.c (pass_no_new_pseudos): Deleted.
6890         * final.c (rest_of_clean_state): Removed no_new_pseudos.
6891         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
6892         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
6893         reload_completed.
6894         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
6895         * rtlhooks.c (gen_lowpart_general): Ditto.
6896         * optabs.c (prepare_operand): Ditto.
6897         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
6898         no_new_pseudos.
6899         * modulo-sched.c (rest_of_handle_sms): Ditto.
6900         * see.c (rest_of_handle_see): Ditto.
6901         * ifcvt.c (if_convert): Ditto.
6902         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
6903         reload_completed.
6904         * init-regs.c (gate_initialize_regs): Deleted set of
6905         no_new_pseudos.
6906         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
6907         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
6908         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
6909         
6910 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
6912         PR target/32661
6913         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
6914         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
6915         (*vec_extractv2di_1_rex64): New insn pattern.
6917 2007-07-11  David Daney  <ddaney@avtrex.com>
6919         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
6920         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
6921         for SIGNAL_UNWIND_RETURN_COLUMN.
6922         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
6923         (DWARF_FRAME_REGNUM): Rewrite.
6924         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
6926 2007-07-11  Nick Clifton  <nickc@redhat.com>
6928         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
6929         delta and use gen_int_mode in place of GET_INT instead.
6931 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
6933         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
6934         and letter field.
6936 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
6938         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
6939         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
6940         types or not.
6941         * params.h (VERIFY_CANONICAL_TYPES): Remove.
6942         (USE_CANONICAL_TYPES): New.
6943         * doc/invoke.texi (verify-canonical-types): Remove.
6944         (use-canonical-types): Add.
6946 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
6948         * config/spu/spu.c (spu_optimization_options): Remove setting of
6949         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
6950         (spu_override_options): Move it here.
6952 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
6954         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
6955         * config/mips/mips.c (mips_cpu_info_table): Mention
6956         MIPS_ISA_LEVEL_SPEC in the comment.
6958 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
6960         PR tree-optimization/32713
6961         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
6963 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
6965         PR middle-end/30482
6966         * c-opts.c (c_common_post_options): Do not change flag_complex_method
6967         conditional to flag_isoc99.
6968         (c_common_init_options): Do it here, unconditionally.
6970 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
6972         PR tree-optimization/32589
6973         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
6974         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
6975         * tree-ssa-propagate.c (valid_gimple_expression_p): New
6976         predicate, extracted from...
6977         (set_rhs): ...here.  Call it for the expression on entry.
6978         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
6979         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
6980         (simplify_binary_expression): Use valid_gimple_expression_p
6981         to validate the simplification.
6982         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
6984 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
6986         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
6987         DWARF2_DEBUG on 32 bit target too.
6988         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
6990 2007-07-11  Nick Clifton  <nickc@redhat.com>
6992         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
6993         version for 64-bit hosts.
6995 2007-07-10  David Daney  <ddaney@avtrex.com>
6997         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
6998         predicate.
6999         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
7000         call.
7001         * config/mips/mips.c (mips_expand_synci_loop): New function.
7002         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
7003         (UNSPEC_RDHWR): Same.
7004         (UNSPEC_SYNCI): Same.
7005         (UNSPEC_SYNC): Same.
7006         (clear_cache): New expand.
7007         (sync): New insn.
7008         (synci): Same.
7009         (rdhwr): Same.
7010         (clear_hazard): Same.
7011         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
7012         function.
7013         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
7014         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
7016 2007-07-10  Ian Lance Taylor  <iant@google.com>
7018         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
7019         no_new_pseudos.
7021 2007-07-10  David Daney  <ddaney@avtrex.com>
7023         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
7024         * builtins.c (expand_builtin___clear_cache): New function.
7025         (expand_builtin): Call expand_builtin___clear_cache for
7026         BUILT_IN_CLEAR_CACHE case.
7027         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
7028         * doc/md.texi (clear_cache): Document new instruction pattern.
7029         * testsuite/gcc.dg/builtins-64.c: New test.
7031 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
7033         * config/cris/cris.md ("movsi"): Fix typo in last change.
7035 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
7037         PR 32617
7038         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
7039         FUNCTION_DECLs.
7040         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
7041         * varasm.c (assemble_start_function): Honor DECL_ALIGN
7042         for FUNCTION_DECLs.  Don't use align_functions_log if
7043         DECL_USER_ALIGN.
7044         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
7045         even for FUNCTION_DECLs.
7046         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
7047         FUNCTION_DECLs.
7048         * tree.h (DECL_ALIGN): Update for new location of 'align'.
7049         (DECL_FUNCTION_CODE): Update for new location and name of
7050         'function_code'.
7051         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
7052         (struct tree_decl_common): Move 'align' and 'off_align' out
7053         of union, ensure they're still on a 32-bit boundary.  Remove
7054         other fields in union 'u1'.
7055         (struct tree_function_decl): Add field 'function_code' replacing
7056         'u1.f' in tree_decl_common.
7057         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
7058         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
7059         (Variable Attributes): Cross-reference 'aligned' attribute
7060         to Function Attributes.
7061         * flags.h (force_align_functions_log): Delete.
7062         * toplev.c (force_align_functions_log): Delete.
7064 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
7066         PR target/32708
7067         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
7068         (*vec_concatv2di_rex): New insn pattern.
7070 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7072         PR target/32538
7073         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
7075 2007-07-10  Ian Lance Taylor  <iant@google.com>
7077         Replace no_new_pseudos in backends.
7078         * rtl.h (can_create_pseudo_p): Define.
7079         * config/darwin.c (machopic_indirect_data_reference): Use
7080         can_create_pseudo_p () instead of no_new_pseudos.
7081         (machopic_indirect_data_reference): Likewise.
7082         (machopic_legitimize_pic_address): Likewise.
7083         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
7084         (alpha_emit_set_const_1): Likewise.
7085         (alpha_emit_set_const): Likewise.
7086         (alpha_emit_conditional_move): Likewise.
7087         (alpha_split_conditional_move): Likewise.
7088         * config/alpha/alpha.md (various splitters): Likewise.
7089         (movti): Likewise.
7090         * config/arm/arm.c (legitimize_pic_address): Likewise.
7091         (arm_load_pic_register): Likewise.
7092         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
7093         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
7094         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
7095         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
7096         * config/cris/cris.md (movsi): Likewise.
7097         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
7098         (symGOTOFF2reg_hilo): Likewise.
7099         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
7100         * config/h8300/h8300.md (insv, extzv): Likewise.
7101         * config/i386/i386.c (ix86_expand_move): Likewise.
7102         (ix86_expand_vector_move): Likewise.
7103         (ix86_prepare_fp_compare_args): Likewise.
7104         (ix86_expand_carry_flag_compare): Likewise.
7105         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
7106         (tls_dynamic_gnu2_combine_32): Likewise.
7107         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
7108         * config/ia64/ia64.c (ia64_expand_move): Likewise.
7109         (ia64_expand_movxf_movrf): Likewise.
7110         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
7111         (m32c_split_move): Likewise.
7112         (m32c_expand_insv): Likewise.
7113         * config/m68k/m68k.md (movsi): Likewise.
7114         * config/mips/mips.c (mips_force_temporary): Likewise.
7115         (mips_split_symbol): Likewise.
7116         (mips_move_integer): Likewise.
7117         (mips_legitimize_const_move): Likewise.
7118         * config/mn10300/mn10300.md (movsi): Likewise.
7119         * config/pa/pa.c (emit_move_sequence): Likewise.
7120         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
7121         (rs6000_got_register): Likewise.
7122         (create_TOC_reference): Likewise.
7123         (rs6000_machopic_legitimize_pic_address): Likewise.
7124         * config/rs6000/rs6000.md (add<mode>3): Likewise.
7125         (various splitters): Likewise.
7126         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
7127         (movsi_got): Likewise.
7128         * config/s390/s390.c (emit_symbolic_move): Likewise.
7129         * config/s390/s390.md (movhi, movqi): Likewise.
7130         (load_multiple, store_multiple): Likewise.
7131         * config/score/score.c (score_force_temporary): Likewise.
7132         * config/sh/sh.c (prepare_move_operands): Likewise.
7133         (prepare_cbranch_operands): Likewise.
7134         (emit_fpu_switch): Likewise.
7135         (fpscr_set_from_mem): Likewise.
7136         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
7137         (adddi3, subsi3): Likewise.
7138         (various splitters): Likewise.
7139         (divsi_inv_fp_combine): Likewise.
7140         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
7141         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
7142         (sne): Likewise.
7143         * config/sh/predicates.md (xor_operand): Likewise.
7144         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
7145         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
7146         (movdi_pic_label_ref): Likewise.
7147         * config/spu/spu.c (spu_split_immediate): Likewise.
7148         * config/alpha/alpha.md (various splitters): Remove test
7149         !no_new_pseudos || reload_completed.
7150         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
7151         no_new_pseudos.
7152         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
7153         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
7154         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
7155         * config/score/score.c (th_output_mi_thunk): Likewise.
7156         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
7157         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
7159 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
7161         PR rtl-optimization/32664
7162         * mode-switching.c (create_pre_exit): Skip barrier insns.
7164 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
7166         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
7167         force_gimple_operand_bsi.
7168         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
7169         rewrite_use_compare): Ditto.
7170         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
7171         Ditto.
7172         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
7173         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
7174         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
7175         * tree-profile.c (prepare_instrumented_value,
7176         tree_gen_interval_profiler, tree_gen_pow2_profiler,
7177         tree_gen_one_value_profiler, tree_gen_ic_profiler,
7178         tree_gen_ic_func_profiler, tree_gen_average_profiler,
7179         tree_gen_ior_profiler): Ditto.
7180         * tree-ssa-reassoc.c (negate_value): Ditto.
7181         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
7182         Use force_gimple_operand_bsi.
7183         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
7184         * tree-if-conv.c (add_to_dst_predicate_list,
7185         find_phi_replacement_condition): Ditto.
7186         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
7187         Call mark_symbols_for_renaming for new statements.
7188         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
7190 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
7192         * cfghooks.c (remove_edge): New function.
7193         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
7194         loop exit rescans.
7195         * cfghooks.h (remove_edge): Declare.
7196         * cfg.c (remove_edge): Renamed to remove_edge_raw.
7197         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
7199 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
7201         * optabs.h: Added declaration for signbit_optab.  
7202         * optabs.c: (init_optabs): Added initialization for signbit_optab.
7203         * genoptinit.c (optabs): Added entry for signbit insns.  
7204         * builtins.c (expand_builtin_signbit): Added code to use a signbit
7205         insn, if available.  
7206         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
7207         * config/s390/s390.md (signbit<mode>2): New expander.  
7209 2007-07-09  Richard Guenther  <rguenther@suse.de>
7211         PR middle-end/32698
7212         * fold-const.c (fold_plusminus_mult_expr): Move constant
7213         arguments second to allow decomposing.
7215 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
7217         Revert:
7218         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
7219         PR debug/23551
7220         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
7221         Disregard DECL_FROM_INLINE.
7223 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
7225         PR target/27855
7226         * doc/invoke.texi: Add ftree-reassoc flag.
7227         * common.opt (ftree-reassoc): New flag.
7228         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
7229         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
7231 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
7233         PR tree-optimization/32681
7234         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
7235         saved in second_edge->aux when first_bb is a loop header.
7237 2007-07-09  Jan HUbicka  <jh@suse.cz>
7239         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
7241 2007-07-09  Richard Guenther  <rguenther@suse.de>
7243         * c-decl.c (start_function): Do not promote return type.
7245 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
7247         * function.c (do_warn_unused_parameter): Do not warn if
7248         TREE_NO_WARNING is set.
7250 2007-07-08  Andreas Schwab  <schwab@suse.de>
7252         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
7254 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
7256         Revert this patch:
7257         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
7259         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
7260         apply to assembly language, too.
7261         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
7263 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
7265         Revert (note the sccvn portions are *not* reverted)
7266         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
7268         Fix PR tree-optimization/23488
7270         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
7271         handles.
7272         * tree-flow-inline.h (get_value_handle): Ditto.
7273         * tree-ssa-pre.c (decl_vh_map): New.
7274         (decl_node_pool): New.
7275         (can_value_number_operation): Support DECL_P.
7276         (can_PRE_operation): Ditto.
7277         (create_expression_by_pieces): Ditto.
7278         (find_existing_value_expr): Modify to differnetiate between
7279         addressing and top level.
7280         (create_value_handle_for_expr): Handle DECL's.
7281         (poolify_tree): Ditto.
7282         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
7283         (make_values_for_stmt): Handle DECL's properly.
7284         (init_pre): Reorg to not init useless things during FRE.
7285         (fini_pre): Ditto.
7286         * tree-flow.h: Include pointer-set.h.
7287         (decl_vh_map): Declare.
7288         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
7290 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
7292         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
7293         the constraint description.
7294         * doc/md.texi: Update documentation of AVR constraints.
7296 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
7298         * auto-inc-dec.c, config/arm/arm.c,
7299         config/m32r/constraints.md, config/mips/mips.md,
7300         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
7301         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
7302         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
7303         typos.  Follow spelling conventions.
7304         * doc/invoke.texi, doc/rtl.texi: Fix typos.
7306         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
7307         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
7309         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
7310         realloc_vuse): Remove.
7311         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
7312         and realloc_vuse.
7314 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
7316         Fix PR tree-optimization/23488
7318         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
7319         (try_to_simplify): Ditto.
7320         (visit_use): Ditto.
7321         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
7322         handles.
7323         * tree-flow-inline.h (get_value_handle): Ditto.
7324         * tree-ssa-pre.c (decl_vh_map): New.
7325         (decl_node_pool): New.
7326         (can_value_number_operation): Support DECL_P.
7327         (can_PRE_operation): Ditto.
7328         (create_expression_by_pieces): Ditto.
7329         (find_existing_value_expr): Modify to differnetiate between
7330         addressing and top level.
7331         (create_value_handle_for_expr): Handle DECL's.
7332         (poolify_tree): Ditto.
7333         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
7334         (make_values_for_stmt): Handle DECL's properly.
7335         (init_pre): Reorg to not init useless things during FRE.
7336         (fini_pre): Ditto.
7337         * tree-flow.h: Include pointer-set.h.
7338         (decl_vh_map): Declare.
7339         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
7340                 
7341 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
7343         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
7344         apply to assembly language, too.
7345         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
7347 2007-07-06  Ian Lance Taylor  <iant@google.com>
7348             Zack Weinberg  <zackw@panix.com>
7350         PR middle-end/32441
7351         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
7353 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
7355         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
7356         (prefetch): Likewise if "pref" would be used.
7358 2007-07-06  Josh Conner  <jconner@apple.com>
7360         PR middle-end/32602
7361         PR middle-end/32603
7362         * calls.c (store_one_arg): Handle arguments which are partially
7363         on the stack when detecting argument overlap.
7365 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
7367         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
7368         chosen during find_reloads.
7370 2007-07-06  Richard Guenther  <rguenther@suse.de>
7372         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
7373         TYPE_ARG_TYPES for verification of argument types.  Use
7374         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
7375         parameters as variable arguments.
7377 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
7379         * libgcc2.h (word_type): Type definition removed.
7380         (cmp_return_type, shift_count_type): Type definitions added.
7381         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
7382         replaced with shift_count_type.
7383         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
7384         cmp_return_type.
7385         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
7386         changed from word_type to Wtype.
7387         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
7388         replaced with shift_count_type.
7389         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
7390         cmp_return_type.
7391         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
7392         and libgcc_shift_count attribute added.
7393         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
7394         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
7395         (TARGET_INITIALIZER): New target hooks added.
7396         * targhooks.c (default_libgcc_cmp_return_mode,
7397         default_libgcc_shift_count_mode): Default implementations for the new
7398         target hooks added.
7399         * targhooks.h (default_libgcc_cmp_return_mode,
7400         default_libgcc_shift_count_mode): Function prototypes added.
7401         * target.h (struct gcc_target): Fields for the new target hooks added.
7402         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
7403         as library call.
7404         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
7405         library call.
7407         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
7408         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
7410         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
7411         s390_libgcc_shift_count_mode): Functions added.
7412         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
7413         Target hooks defined.
7415 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
7417         * config/mips/mips.c (compute_frame_size): Restore the original
7418         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
7419         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
7420         Document why the difference is needed.
7422 2007-07-06  Richard Guenther  <rguenther@suse.de>
7424         * c-common.c (boolean_increment): Use correctly typed
7425         constant.
7427 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
7429         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
7430         the topmost argument register is not also included in the save mask.
7431         (mips16e_collect_argument_save_p): Take a pointer to the argument
7432         register, rather than a pointer to the number of arguments.
7433         (mips16e_collect_argument_saves): Only include argument saves
7434         that aren't in the register mask.
7436 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
7438         PR rtl-optimization/32450
7439         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
7440         to ensure that instructions are not moved into the prologue when
7441         profiling is on.  Remove unused prologue_end variable.
7442         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
7443         as a scheduling barrier.
7445 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
7447         PR debug/23551
7448         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
7449         Disregard DECL_FROM_INLINE.
7451 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
7453         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
7454         IORing with a constant.
7456 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
7458         PR rtl-optimization/32475
7459         * df-scan.c (df_def_record_1): Add a use of the stack pointer
7460         for every definition of the stack pointer.
7462 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
7464         * arm.c (vfp3_const_double_index): Copy signed results of
7465         REAL_VALUE_TO_INT into unsigned vars.
7467 2007-07-05  Richard Guenther  <rguenther@suse.de>
7469         PR middle-end/32639
7470         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
7471         FUNCTION_TYPE.
7472         * tree-ssa.c (useless_type_conversion_p): Check canonical
7473         types early.
7475 2007-07-05 Anatoly Sokolov <aesok@post.ru>
7477         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
7478         zero_extendhisi2): Change to define_insn_and_split. 
7479         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
7481 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
7483         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
7484         pass_match_asm_constraints): New.
7485         * passes.c (init_optimization_passes): Add new pass.
7486         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
7487         * function.h (struct function): Add has_asm_statement bit.
7488         (current_function_has_asm_statement): New.
7489         * tree-pass.h (pass_match_asm_constraints): New.
7491 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
7493         * config/mips/mips.c (mips_file_start): Avoid declaration
7494         after code.
7496 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
7498         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
7500 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
7502         * rtl.def (NOTE): Change print format string to print
7503         operand 5 as a note insn name.
7505 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
7506             David Ung  <davidu@mips.com>
7508         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
7509         * doc/invoke.texi: (MIPS Options): Document them.
7511 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
7512             David Ung  <davidu@mips.com>
7514         Add support for SmartMIPS ASE.
7516         * optabs.c (expand_binop_directly): New, broken out from...
7517         (expand_binop): Here.  Make it try rotating in the other
7518         direction even when the second operand isn't constant.
7519         * config/mips/mips.md (*lwxs): New.
7520         * config/mips/mips.opt (msmartmips): New.
7521         * config/mips/mips.c (mips_lwxs_address_p): New.
7522         (mips_rtx_costs): Make it recognize scaled indexed addressing.
7523         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
7524         __mips_smartmips when compiling for TARGET_SMARTMIPS.
7525         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
7526         (ISA_HAS_LWXS): New.
7527         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
7528         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
7529         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
7530         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
7531         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
7532         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
7533         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
7535 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
7537         * tree-vectorizer.c (new_loop_vec_info): Initialize
7538         LOOP_VINFO_COST_MODEL_MIN_ITERS.
7539         * tree-vectorizer.h (_loop_vec_info): Added new filed
7540         min_profitable_iters.
7541         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
7542         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
7543         * tree-vect-analyze.c (vect_analyze_operations): Set
7544         LOOP_VINFO_COST_MODEL_MIN_ITERS.
7545         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
7546         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
7547         Fix calculation of peel_iters_prologue. Move consideration of epilogue
7548         and prologue cost to after they are computed.
7549         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
7550         TARG_VEC_STMT_COST.
7551         (vect_model_simple_cost): Takes additional argument dt. Consider cost
7552         of creating vectors from scalars according to dt.
7553         (vect_model_store_cost): Likewise.
7554         (vectorizable_call): Use dt array instead of scalar dt. Call
7555         vect_model_simple_cost with additional argument dt.
7556         (vectorizable_assignment): Likewise.
7557         (vectorizable_operation): Likewise.
7558         (vectorizable_type_demotion): Likewise.
7559         (vectorizable_type_promotion): Likewise.
7560         (vectorizable_store): Use dt array instead of scalar dt. Call
7561         vect_model_store_cost with additional argument dt.
7562         (vect_do_peeling_for_loop_bound): Don't call
7563         vect_estimate_min_profitable_iters. Instead, lookup
7564         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
7565         "may not be profitable".
7567 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
7569         PR testsuite/32014
7570         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
7571         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
7572         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
7573         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
7575 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
7577         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
7578         addressing modes cheaper.
7580 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
7582         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
7583         (dw_ranges_struct): Rename block_num to num.  Adjust.
7584         (dw_ranges_by_label_struct): New.
7585         (ranges_by_label, ranges_by_label_allocated,
7586         ranges_by_label_in_use): New variables.
7587         (add_ranges_num): Factored most of the code out of...
7588         (add_ranges): ... this one.  Rewrite in terms of the former.
7589         (add_ranges_by_labels): New.
7590         (output_ranges): Output by-label ranges.
7591         (dwarf2out_finish): Output range for multiple-section
7592         compile_unit.  Output standard DW_AT_low_pc in addition to
7593         unexpected DW_AT_entry_pc.
7595 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
7597         PR tree-optimization/32604
7598         PR tree-optimization/32606
7600         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
7601         (compute_antic_safe): Removed.
7602         (ANTIC_SAFE_LOADS): Ditto.
7603         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
7604         (execute_pre): Don't call compute_antic_safe.
7605         (vuse_equiv): New function.
7606         (make_values_for_stmt): Use it
7607         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
7608         not always true.
7610 2007-07-04 Anatoly Sokolov <aesok@post.ru>
7612         PR target/31331
7613         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
7614         rather than a decl. 
7615         (avr_attribute_table): Make "naked" attribute apply to function types
7616         rather than to decls.
7617         (avr_handle_fntype_attribute): New function.
7619 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
7621         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
7622         after \.
7624 2007-07-04  David Ung  <davidu@mips.com>
7625             Joseph Myers  <joseph@codesourcery.com>
7627         * config/mips/mips.md (type): Add logical, signext and move.
7628         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
7629         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
7630         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
7631         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
7632         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
7633         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
7634         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
7635         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
7636         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
7637         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
7638         movv2sf_hardfloat_64bit): Use the new types.
7639         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
7640         *movdf_softfloat, *movdf_mips16): Use "multi".
7641         (extendqihi2): Replace with a define_expand.
7642         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
7643         Based on extend<SHORT:mode><GPR:mode>2 patterns.
7644         * config/mips/74k.md (r74k_int_logical): New reservation and
7645         bypasses.
7646         (r74k_int_arith): Remove "slt".
7647         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
7648         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
7649         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
7650         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
7651         reservations for "arith".
7653 2007-07-04  Richard Guenther  <rguenther@suse.de>
7655         * tree-ssa.c (useless_type_conversion_p): Add handling for
7656         scalar float and vector types.  Only call the types_compatible_p
7657         langhook for aggregate types as last resort.  Follow the
7658         rules.
7660 2007-07-04  Richard Guenther  <rguenther@suse.de>
7662         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
7663         the same as NOP_EXPR.
7665 2007-07-04  Nick Clifton  <nickc@redhat.com>
7667         * target.h (struct gcc_target): Add target_help field.
7668         * target-def.h (TARGET_HELP): New.
7669         (TARGET_INITIALIZER): Use TARGET_HELP.
7670         * opts.c (command_handle_option): Invoke target_help function, if
7671         defined, when the user has specified --target-help on the command
7672         line.
7673         * doc/invoke.texi: Mention that --target-help might print
7674         additional information.
7675         * doc/tm.texi: Document TARGET_HELP hook.
7677         * arm.c (TARGET_HELP): Override default definition.
7678         (arm_target_help): New - display a wrapped list of cores and
7679         architectures supported.
7681 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7683         * config/v850/v850.c (expand_prologue): Make sure
7684         GEN_INT() argument is sign extended rather than zero extended.
7685         (expand_epilogue): Likewise.
7686         (output_move_double): Delete.
7687         * config/v850/v850-protos.h (output_move_double): Delete.
7688         * config/v850/v850.md (movdi): Delete.
7689         (*movdi_internal): Delete.
7690         (movdf): Delete.
7691         (*movdf_internal): Delete.
7693 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7695         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
7696         unless compiling RTP PIC.
7698 2007-07-04  Richard Guenther  <rguenther@suse.de>
7700         PR tree-optimization/32482
7701         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
7702         original ssa name if we didn't find a shift expression.
7703         Fix shift constant for bit zero test.
7705 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7707         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
7709 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7711         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
7712         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
7713         * config/arm/vxworks.h (ASM_SPEC): Delete.
7714         (SUBTARGET_EXTRA_ASM_SPEC): Define.
7716 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
7718         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
7719         (DDR_REVERSED_P): New.
7720         * tree-data-ref.c (initialize_data_dependence_relation,
7721         build_classic_dist_vector): Set DDR_REVERSED_P.
7723 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
7725         PR middle-end/32457
7726         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
7727         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
7728         init_omega_for_ddr_1): Use non conservative number of iterations
7729         estimations.
7730         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
7731         (analyze_siv_subscript): Remove FIXME and reinitialization of 
7732         last_conflicts to chrec_dont_know.
7733         * testsuite/gfortran.dg/vect/pr32457.f90: New.
7735 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
7737         * tree.c (maybe_canonicalize_argtypes): Improve description.
7739 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
7741         * tree.c (maybe_canonicalize_argtypes): New.
7742         (build_function_type): Set canonical type.
7743         (build_method_type_directly): Ditto.
7744         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
7745         properly.
7747 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7749         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
7750         like PLUS_EXPR.
7751         (rewrite_use_nonlinear_expr): Likewise.
7753 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
7755         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
7757 2007-07-04  Ben Elliston  <bje@au.ibm.com>
7759         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
7760         of this file.
7762         * c-objc-common.c (c_types_compatible_p): Fix indentation.
7764         * doc/tm.texi (Run-time Target): Capitalise "CPU".
7765         (Exception Handling): Likewise.
7767 2007-07-03  Jan Hubicka  <jh@suse.cz>
7769         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
7771 2007-07-03  Eric Christopher  <echristo@apple.com>
7773         * doc/cppopts.texi: Add conflicting option note to -dM.
7774         * doc/invoke.texi: Add note about possible conflicts with
7775         -E for -dCHARS and note that -dM will not produce
7776         any results if there is no machine dependent reorg.
7777         
7778 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
7780         * tree.h (DECL_ALIGN): Back out previous change.
7782 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
7784         * configure.ac: Test for .dtprelword support on MIPS.
7785         * configure, config.in: Regenerate.
7786         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
7787         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
7789 2007-07-03  Julian Brown  <julian@codesourcery.com>
7791         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
7792         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
7793         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
7794         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
7795         capability.
7796         (all_fpus): Add FPUTYPE_VFP3.
7797         (fp_model_for_fpu): Add VFPv3 field.
7798         (arm_rtx_costs_1): Give cost to VFPv3 constants.
7799         (vfp3_const_double_index): New function. Return integer index of
7800         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
7801         isn't suitable.
7802         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
7803         and argument represents a valid RTX for a VFPv3 constant.
7804         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
7805         two instructions.
7806         (vfp_emit_fstmd): Similar, for fstmd.
7807         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
7808         constants, represented as integer indices.
7809         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
7810         VFP_REGNO_OK_FOR_DOUBLE macros.
7811         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
7812         (arm_file_start): Set float-abi attribute for VFPv3, and output
7813         correct ".fpu" assembler directive.
7814         (arm_dbx_register_numbering): Add FIXME.
7815         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
7816         (fputype): Add FPUTYPE_VFP3.
7817         (FIXED_REGISTERS): Add 32 registers for D16-D31.
7818         (CALL_USED_REGISTERS): Likewise.
7819         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
7820         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
7821         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
7822         (D7_VFP_REGNUM): New.
7823         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
7824         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
7825         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
7826         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
7827         (REG_ALLOC_ORDER): Adjust for VFPv3.
7828         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
7829         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
7830         VFP_LO_REGS, VFP_HI_REGS.
7831         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
7832         (IS_VFP_CLASS): Define macro.
7833         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
7834         IS_VFP_CLASS.
7835         (REGISTER_MOVE_COST): Likewise.
7836         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
7837         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
7838         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
7839         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
7840         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
7841         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
7842         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
7843         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
7844         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
7845         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
7846         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
7847         where appropriate for single-word registers.
7848         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
7849         As above. Fix type attributes.
7850         * config/arm/constraints.md (register_contraint "t"): Define.
7851         (register_constraint "w"): Change to D0-D15, or D0-D31 for
7852         VFPv3/NEON.
7853         (register_constraint "x"): Define.
7854         (constraint "Dv"): Define.
7856 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
7858         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
7860 2007-07-03  Tom Tromey  <tromey@redhat.com>
7862         * c-parser.c (objc_pq_context): Removed.
7863         (objc_need_raw_identifier): Likewise.
7864         (c_parser) <objc_pq_context>: New field.
7865         <objc_need_raw_identifier>: Likewise.
7866         (OBJC_NEED_RAW_IDENTIFIER): Removed.
7867         (c_lex_one_token): Update.
7868         (c_parser_objc_protocol_definition): Update.
7869         (c_parser_objc_method_definition): Update.
7870         (c_parser_objc_methodproto): Update.
7871         (c_parser_declspecs): Update.
7873 2007-07-03  David Ung  <davidu@mips.com>
7875         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
7877 2007-07-03  David Ung  <davidu@mips.com>
7878             Richard Sandiford  <richard@codesourcery.com>
7880         * doc/invoke.texi: Document -march=74kf3_2.
7881         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
7882         (TUNE_74K): Check for it.
7883         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
7884         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
7885         * config/mips/mips.md (cpu): Add 74kf3_2.
7886         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
7887         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
7888         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
7889         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
7890         74kf3_2 to the CPU list.
7891         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
7892         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
7893         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
7894         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
7895         (r74kf3_2_fxfer_from_c1): New insn reservations.
7897 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
7898             David Ung  <davidu@mips.com>
7900         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
7901         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
7902         and 74k[fx].  Document aliases for the new options.
7903         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
7904         (PROCESSOR_24KF2_1): ...this.
7905         (PROCESSOR_24KX): Rename to...
7906         (PROCESSOR_24KF1_1): ...this.
7907         (PROCESSOR_74KF): Rename to...
7908         (PROCESSOR_74KF2_1): ...this.
7909         (PROCESSOR_74KX): Rename to...
7910         (PROCESSOR_74KF1_1): ...this.
7911         (TUNE_74K): Update PROCESSOR_* names.
7912         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
7913         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
7914         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
7915         (mips_rtx_cost_data): Update processor names in comments.
7916         (mips_issue_rate): Update PROCESSOR_* names.
7917         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
7918         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
7919         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
7920         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
7921         Update cpu attribute names.
7922         (r24k_fpu_iss): Rename this reservation to...
7923         (r24kf2_1_fpu_iss): ...this and update all uses.
7924         (r24kx_fpu_iss): Rename this reservation to...
7925         (r24kf1_1_fpu_iss): ...this and update all uses.
7926         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
7927         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
7928         Update cpu attribute names.
7930 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
7932         * config/m32r/constraints.md: New file.
7933         * config/m32r/m32r.c: Include tm-constrs.h.
7934         (small_data_operand): Use satisfies_constraint_* instead of macro.
7935         (addr24_operand, gen_compare): Likewise.
7936         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
7937         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
7938         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
7939         EXTRA_CONSTRAINT): Likewise.
7940         * config/m32r/m32r.md: Include constraints.md.
7941         (*movsi_insn): Use satisfies_constraint_* instead of macro.
7942         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
7943         * config/m32r/predicates.md (conditional_move_operand): Likewise.
7944         (two_insn_const_operand, int8_operand, uint16_operand,
7945         reg_or_int16_operand, reg_or_uint16_operand,
7946         reg_or_cmp_int16_operand, cmp_int16_operand,
7947         seth_add3_operand): Likewise.
7949 2007-07-03  Eric Christopher  <echristo@gmail.com>
7951         * libgcc2.h: Conditionally declare __bswapsi2 and
7952         __bswapdi2.
7953         
7954 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
7956         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
7957         defined.
7959 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7961         PR target/28307
7962         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
7963         (__gthrw_pragma): Provide default definition.
7964         (__gthrw2): Use it.
7965         * gthr-posix.c (__gthrw_pragma): Define.
7967 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
7969         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
7970         before declaring inequality.
7972 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7974         * combine.c (recog_for_combine): Log the success or failure of
7975           matching new insn patterns against the machine description in
7976           detailed dumps.
7978 2007-07-03  Revital Eres  <eres@il.ibm.com>
7980         * ddg.c (print_sccs): New function.
7981         (check_sccs): New function.
7982         (create_ddg_all_sccs): Use it.
7983         * ddg.h (print_sccs): Declare.
7984         * modulo-sched.c (sms_order_nodes): Call print_sccs.
7986 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
7988         * targhooks.h (default_mode_for_suffix): New function declaration.
7989         * targhooks.c (default_mode_for_suffix): New default target hook.
7990         * target.h (struct c): New structure in the targetm struct.
7991         (mode_for_suffix): New target hook as part of struct c.
7992         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
7993         default_mode_for_suffix.
7994         (TARGET_C): New define.
7995         * c-lex.c: Include "target.h".
7996         (interpret_float): Use targetm.c.mode_for_suffix to determine
7997         the mode for a given non-standard suffix.
7998         Makefile.in (c-lex.o): Depend on $(TARGET_H).
8000         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
8001         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
8003         * doc/extend.texi (Floating Types): New node.  Document __float80 and
8004         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
8006 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
8008         PR target/32506
8009         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
8010         predicate instead of target_operand.
8011         (divsi3_i1_media, divsi3_media_2): Likewise.
8013 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
8015         * tree.h (alias_sets_might_conflict_p): Rename into
8016         alias_sets_must_conflict_p.
8017         * alias.c (alias_sets_might_conflict_p): Likewise.
8018         (alias_sets_conflict_p): Use it.
8019         (objects_must_conflict_p): Likewise.
8020         * c-common.c (strict_aliasing_warning): Adjust.
8022 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8024         * rtlhooks.c (gen_lowpart_if_possible): Check for
8025         invalid subreg before calling gen_lowpart_SUBREG.
8027 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
8029         * config/darwin9.h: Add copyright notice.
8030         (LINK_COMMAND_SPEC): Add comment.
8031         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
8032         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
8033         DARWIN_LIBSYSTEM_HAS_UNWIND.
8035 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
8037         PR libgomp/32468
8038         * omp-low.c (check_combined_parallel): New function.
8039         (lower_omp_parallel): Call it via walk_stmts, set
8040         OMP_PARALLEL_COMBINED if appropriate.
8041         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
8042         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
8043         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
8044         don't consider it as combined parallel.
8046 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
8048         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
8049         (gcc_tooldir): Likewise.
8050         * configure: Regenerate.
8051         * Makefile.in (libsubdir_to_prefix): New variable, based on the
8052         old configure.ac gcc_tooldir setting.
8053         (prefix_to_exec_prefix): New variable.
8054         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
8055         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
8057 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
8059         Fix PR tree-optimization/32583
8060         Fix PR tree-optimization/32584
8061         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
8062         (phi_translate_set): Use phi_translate directly now.
8063         (make_values_for_stmt): Don't value number RHS if we already know
8064         it is constant.
8066 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
8067             Jim Wilson <wilson@specifix.com>
8069         PR target/31684
8070         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
8071         copy_insn.
8073 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
8074             Richard Sandiford  <richard@codesourcery.com>
8075             Nigel Stephens  <nigel@mips.com>
8077         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
8078         (mips16e_output_save_restore): Declare.
8079         (mips16e_save_restore_pattern_p): Likewise.
8080         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
8081         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
8082         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
8083         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
8084         (BITSET_P): New global macro, extracted from...
8085         (mips_for_each_saved_reg): ...here.
8086         (mips16e_save_restore_info): New struct.
8087         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
8088         (mips16e_save_restore_regs): New variable.
8089         (mips_split_plus, mips16e_find_first_register): New functions.
8090         (mips16e_mask_registers): New function.
8091         (compute_frame_size): Expand the commentary before the function.
8092         Enforce the MIPS16e save and restore register range restrictions.
8093         Pad the general register save area at the low end.
8094         (mips16e_save_restore_reg, mips16e_build_save_restore)
8095         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
8096         (mips16e_output_save_restore, mips16e_collect_propagate_value)
8097         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
8098         New functions.
8099         (mips_expand_prologue, mips_expand_epilogue): Handle
8100         GENERATE_MIPS16E_SAVE_RESTORE.
8101         * config/mips/mips.md (*mips16e_save_restore): New pattern.
8103 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
8105         PR tree-optimization/31966
8106         PR tree-optimization/32533
8107         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
8108         "basic_block" description as its third argument.  Update function
8109         calls to get destination bb from "edge" argument.  Save "cond" into
8110         aux field of the edge.  Update prototype for changed arguments.
8111         (if_convertible_loop_p): Clear aux field of incoming edges if bb
8112         contains phi node.
8113         (find_phi_replacement_condition): Operate on incoming edges, not
8114         on predecessor blocks.  If there is a condition saved in the
8115         incoming edge aux field, AND it with incoming bb predicate.
8116         Return source bb of the first edge.
8117         (clean_predicate_lists): Clean aux field of outgoing node edges.
8118         (tree_if_conversion): Do not initialize cond variable. Move
8119         variable declaration into the loop.
8120         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
8121         initializations of new_stmt, arg0 and arg1 variables.
8123 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
8125         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
8126         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
8128 2007-07-02  Richard Guenther  <rguenther@suse.de>
8130         * tree-ssa.c (useless_type_conversion_p): Document
8131         future intent as defining the middle-end type system.
8132         Re-structure to call langhook last, group by type class,
8133         mark questionable parts.
8135 2007-07-02  Richard Guenther  <rguenther@suse.de>
8137         * tree-flow.h (types_compatible_p): Declare.
8138         * tree-ssa.c (types_compatible_p): New function.
8139         * ipa-type-escape.c (discover_unique_type): Use
8140         types_compatible_p instead of lang_hooks.types_compatible_p.
8141         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
8142         * tree-vn.c (expressions_equal_p): Likewise.
8143         * tree.c (fields_compatible_p): Likewise.
8144         * tree-ssa-dom.c (avail_expr_eq): Likewise.
8145         (cprop_operand): Use useless_type_conversion_p instead of
8146         lang_hooks.types_compatible_p.
8147         * tree-inline.c (setup_one_parameter): Likewise.
8148         (declare_return_variable): Likewise.
8149         * tree-nrv.c (tree_nrv): Likewise.
8150         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
8151         (maybe_fold_offset_to_component_ref): Likewise.
8152         (maybe_fold_offset_to_reference): Likewise.
8153         * tree-ssa-copy.c (may_propagate_copy): Likewise.
8154         (merge_alias_info): Likewise.
8155         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
8156         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
8157         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
8158         * tree-tailcall.c (find_tail_calls): Likewise.
8159         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
8160         * gimplify.c (canonicalize_addr_expr): Likewise.
8161         (fold_indirect_ref_rhs): Likewise.
8162         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
8163         (cpt_same_type): Likewise.
8164         (check_pointer_types_r): Swap parameters to cpt_same_type
8165         where appropriate.
8166         * fold-const.c (fold_convert): Revert fix for PR15988.
8167         * tree-inline.c (setup_one_parameter): Instead fix it here by
8168         using fold_build1 instead of fold_convert and checking for
8169         error_mark_node.  Convert only if the conversion is necessary.
8171 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
8173         * configure.ac: Check for .gnu_attribute on Power.
8174         * configure: Regenerate.
8175         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
8176         attribute for floating-point ABI.
8178 2007-07-02  Ira Rosen  <irar@il.ibm.com>
8180         PR tree-optimization/32230
8181         PR tree-optimization/32477
8182         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
8183         address is a constant.
8185 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
8187         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
8188         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
8189         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
8190         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
8191         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
8192         64-bit targets.  Add support for *-elfoabi*.
8193         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
8194         different settings if $(tm_defines) does not select the EABI.
8195         (MULTILIB_EXCLUSIONS): Define in those circumstances.
8196         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
8197         (MIPS_ARCH_OPTION_SPEC): Likewise.
8198         (MIPS_ISA_LEVEL_SPEC): Likewise.
8199         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
8200         * config/mips/elfoabi.h: New file.
8202 2007-07-02  Richard Guenther  <rguenther@suse.de>
8204         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
8205         (useless_type_conversion_p): ... this.
8206         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
8207         (useless_type_conversion_p): ... this.
8208         * builtins.c (fold_builtin_memory_op): Rename
8209         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
8210         * tree-cfg.c (verify_expr): Likewise.
8211         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
8212         * tree-ssa-ccp.c (ccp_fold): Likewise.
8213         * tree-ssa-copy.c (may_propagate_copy): Likewise.
8214         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
8215         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
8216         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
8217         * tree-ssa-pre.c (eliminate): Likewise.
8218         * tree-ssa.c (delete_tree_ssa): Likewise.
8219         (tree_ssa_useless_type_conversion): Likewise.
8220         * tree.c (build2_stat): Likewise.
8222 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
8224         Fix PR tree-optimization/32571
8225         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
8226         simplifying them.
8228 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
8230         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
8231         and other expected operations explicitly, change default to
8232         gcc_unreachable. 
8234 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
8236         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
8237         PARALLEL.
8238         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
8239         (tls_load_dot_plus_eight): Move the label number into the unspec.
8240         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
8242 2007-07-01  Andreas Schwab  <schwab@suse.de>
8244         * dwarf2out.c (initial_return_save): Define only if used.
8246 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
8248         Unreverting Richard's Revert of:
8250         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
8252         * dce.c (deletable_insn_p_1): New function, split out from...
8253         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
8254         specially, not those inside PARALLELs.  Remove BODY argument
8255         and adjust recursive call accordingly.
8256         (prescan_insns_for_dce): Update call to delete_insn_p.
8258 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
8259             Revital Eres  <eres@il.ibm.com>
8261         * ddg.c (create_ddg_all_sccs): Fix missed
8262         initialization of scc_nodes.
8264 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
8266         PR middle-end/32559
8267         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
8268         X + ~X to 1 only for INTEGRAL_TYPE_P type.
8270 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
8272         * configure.ac: Check for .gnu_attribute on MIPS.
8273         * configure, config.in: Regenerate.
8274         * config/mips/mips.c (mips_file_start): If supported, output
8275         attribute for floating-point ABI.
8277 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
8279         PR target/32433
8280         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
8281         (ffs_cmove): New expander to expand using ctz pattern.
8282         (*ffs_cmove): Remove pattern.
8283         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
8284         (ffsdi2): Expand using ctz pattern.
8285         (*ffs_rex64): Remove pattern.
8287 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8289         PR rtl-optimization/32296
8290         * pa.md (return): Delete pattern.
8291         (return_internal): Remove "(const_int 1)" from pattern.
8292         (epilogue): Use return_internal pattern for trivial returns.
8293         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
8294         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
8296 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
8298         * tree-ssa-pre.c (is_exception_related): New function
8299         (can_value_number_operation): Use it.
8301 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
8302         
8303         Fix PR tree-optimization/32540
8304         Fix PR tree-optimization/31651
8306         * tree-ssa-sccvn.c: New file.
8308         * tree-ssa-sccvn.h: Ditto.
8309         
8310         * tree-vn.c: Include tree-ssa-sccvn.h
8311         (val_expr_paid_d): Removed.
8312         (value_table): Ditto.
8313         (vn_compute): Ditto.
8314         (val_expr_pair_hash): Ditto.
8315         (val_expr_pair_expr_eq): Ditto.
8316         (copy_vuses_from_stmt): Ditto.
8317         (vn_delete): Ditto.
8318         (vn_init): Ditto.
8319         (shared_vuses_from_stmt): Ditto.
8320         (print_creation_to_file): Moved up.
8321         (sort_vuses): Ditto.
8322         (sort_vuses_heap): Ditto.
8323         (set_value_handle): Make non-static.
8324         (make_value_handle): Ditto.
8325         (vn_add): Rewritten to use sccvn lookups.
8326         (vn_add_with_vuses): Ditto.
8327         (vn_lookup): Ditto (and second argument removed).
8328         (vn_lookup_with_vuses): Ditto.
8329         (vn_lookup_or_add): Ditto (and second argument removed);
8330         (vn_lookup_or_add_with_vuses): Ditto.
8331         (vn_lookup_with_stmt): New.
8332         (vn_lookup_or_add_with_stmt): Ditto.
8333         (create_value_handle_for_expr): Ditto.
8335         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
8336         (seen_during_translate): New function.
8337         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
8338         (phi_trans_add): Ditto.
8339         (constant_expr_p): FIELD_DECL is always constant.
8340         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
8341         Use constant_expr_p.
8342         Avoid infinite recursion on mutually valued expressions.
8343         Change callers of vn_lookup_or_add.
8344         (phi_translate): New function.
8345         (compute_antic_safe): Allow phi nodes.
8346         (create_component_ref_by_pieces): Update for FIELD_DECL change.
8347         (find_or_generate_expression): Rewrite slightly.
8348         (create_expression_by_pieces): Updated for vn_lookup_or_add
8349         change.
8350         Update VN_INFO for new names.
8351         (insert_into_preds_of_block): Update for new names.
8352         (add_to_exp_gen): New function.
8353         (add_to_sets): Use vn_lookup_or_add_with_stmt.
8354         (find_existing_value_expr): Rewrite to changed vn_lookup.
8355         (create_value_expr_from): Ditto, and use add_to_exp_gen.
8356         (try_look_through_load): Removed.
8357         (try_combine_conversion): Ditto.
8358         (get_sccvn_value): New function.
8359         (make_values_for_phi): Ditto.
8360         (make_values_for_stmt): Ditto.
8361         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
8362         SCCVN.
8363         (init_pre): Update for SCCVN changes.
8364         (fini_pre): Ditto.
8365         (execute_pre): Ditto.
8367         * tree-flow.h (make_value_handle): Declare.
8368         (set_value_handle): Ditto.
8369         (sort_vuses_heap): Ditto.
8370         (vn_lookup_or_add_with_stmt): Ditto.
8371         (vn_lookup_with_stmt): Ditto.
8372         (vn_compute): Remove.
8373         (vn_init): Ditto.
8374         (vn_delete): Ditto.
8375         (vn_lookup): Update arguments.
8377         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
8378         (tree-vn.o): Ditto.
8379         (tree-ssa-sccvn.o): New.
8380         (OBJS-common): Add tree-ssa-sccvn.o
8381         
8382 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8384         PR c/4076
8385         * c-typeck.c (build_external_ref): Don't mark as used if called
8386         from itself.
8387         * calls.c (rtx_for_function_call): Likewise.
8388         
8389 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
8391         Revert:
8393         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
8395         * dce.c (deletable_insn_p_1): New function, split out from...
8396         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
8397         specially, not those inside PARALLELs.  Remove BODY argument
8398         and adjust recursive call accordingly.
8399         (prescan_insns_for_dce): Update call to delete_insn_p.
8401 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
8403         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
8404         (try_combine): Move potential calls to undo_all() so they happen
8405         before we commit to using the combined insns.
8407 2006-06-30  Jan Hubicka  <jh@suse.cz>
8409         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
8410         code.
8412 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
8414         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
8415         (cgraph_remove_unreachable_nodes): Likewise.
8416         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
8417         * ipa-inline.c (update_caller_keys): Cast according to the coding
8418         conventions.
8419         (cgraph_decide_recursive_inlining): Likewise.
8420         (cgraph_decide_inlining_of_small_function): Likewise.
8421         (try_inline): Likewise.
8422         (cgraph_decide_inlining_incrementally): Likewise.
8423         * ipa-pure-const.c (get_function_state): Likewise.
8424         (scan_function): Likewise.
8425         (analyze_function): Likewise.
8426         (static_execute): Likewise.
8427         * ipa-reference.c (scan_for_static_refs): Likewise.
8428         (merge_callee_local_info): Likewise.
8429         (analyze_function): Use type safe memory macros.
8430         (static_execute): Likewise. Cast according to the coding conventions.
8431         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
8432         conventions.
8433         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
8434         names.
8435         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
8436         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
8437         variable names.
8439 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8441         PR middle-end/30024
8442         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
8443         for complex modes (both int and real).
8445 2007-06-29  Jan Hubicka  <jh@suse.cz>
8447         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
8449 2007-06-29  Jan Hubicka  <jh@suse.cz>
8451         PR middle-end/32372
8452         * cse.c (cse_insn): Avoid invalid sharing in between register note and
8453         the insn pattern.
8455 2007-06-29  Anatoly Sokolov <aesok@post.ru>
8457         PR target/32335
8458         * config/avr/avr.c: Include dataflow header file.
8459         (expand_prologue): Adjust for prologue insn change.
8460         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
8461         inside a insn.
8463 2007-06-29  Richard Guenther  <rguenther@suse.de>
8465         PR middle-end/32493
8466         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
8467         during type verification.
8469 2007-06-29  Jan Hubicka  <jh@suse.cz>
8471         * recog.c (validate_change_rtx_1): Unshare TO argument.
8473 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
8475         PR tree-optimization/24659
8476         * tree-vect-transform.c (vectorizable_call): Handle
8477         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
8479         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
8480         * config/i386/i386.c (enum ix86_builtins)
8481         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
8482         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
8483         description.
8484         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
8485         const using def_builtin_const.
8486         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
8487         input operands in the same modes as the result.
8488         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
8490 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
8492         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
8493         (df_set_dead_notes_for_mw): Likewise.
8495 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
8497         * c-common.c (pointer_int_sum): Do the negation in sizetype.
8499 2007-06-28  DJ Delorie  <dj@redhat.com>
8501         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
8503 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
8505         * doc/invoke.texi (C++ Dialect Options): Document
8506         fvisibility-ms-compat.
8507         * c.opt (fvisibility-ms-compat): New.
8509 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8511         PR tree-opt/32417
8512         * tree-affine.c (aff_combination_add_elt): Handle
8513         pointer addition specially.
8515 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
8517         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
8518         decl is non-external for AIX ABI.
8520 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
8522         * config/rs6000/predicates.md (current_file_function_operand):
8523         Ensure the symbol is non-external for AIX ABI.
8525 2007-06-28  Nick Clifton  <nickc@redhat.com>
8527         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
8528         (fdce, fdse, fpredictive-commoning): Likewise.
8530 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
8532         PR other/31400
8533         * gcc.c (process_command): Recognize the new -static-libgfortran
8534         option.
8536 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8538         PR target/32418
8539         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
8540         Use a call clobbered hard reg instead of a pseudo reg.
8542 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8544         * config/sh/sh.md (load_gbr): Use correct operand constraint.
8546 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8548         PR target/32479
8549         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
8550         REG_LIBCALL and REG_RETVAL notes.
8551         (divsi3, mulsi3): Likewise.
8552         (mulhisi3): Likewise.  Use emit_libcall_block.
8553         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
8555 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
8557         PR rtl-optimization/32481
8558         * combine.c (adjust_for_new_dest): Rescan the changed insn.
8560 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
8562         * dce.c (deletable_insn_p_1): New function, split out from...
8563         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
8564         specially, not those inside PARALLELs.  Remove BODY argument
8565         and adjust recursive call accordingly.
8566         (prescan_insns_for_dce): Update call to delete_insn_p.
8568 2007-06-27  Richard Guenther  <rguenther@suse.de>
8570         PR middle-end/32492
8571         * tree.h (fold_convertible_p): Declare.
8572         * fold-const.c (fold_convertible_p): New function.
8573         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
8574         instead of lang_hooks.types_compatible_p.
8576 2007-06-26  Jan Hubicka  <jh@suse.cz>
8578         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
8579         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
8580         early use validate_unshare_change.
8581         (reload_combine): Likewise.
8582         * recog.c (change_t): New field unshare.
8583         (validate_change_1): Rename from validate_change; add argument unshare.
8584         (validate_change): Turn into wrapper of validate_change_1; update
8585         prototype for bools.
8586         (validate_unshare_change): New.
8587         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
8588         calls of df_insn_rescan.
8589         * recog.h (validate_change): Replace ints by bools.
8590         (validate_unshare_change): Declare.
8592 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
8594         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
8595         
8596 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
8598         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
8600 2007-06-25  Jan Hubicka  <jh@suse.cz>
8602         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
8603         uninlinable call.
8604         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
8605         cgraph_decide_inlining_incrementally): Move uninlinability checks to
8606         places other call site specific checks are performed.
8608 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8610         PR tree-opt/32421
8611         * tree-vect-transform.c (vectorizable_operation): Convert
8612         POINTER_PLUS_EXPR over to PLUS_EXPR.
8614 2007-06-25  Chao-ying Fu  <fu@mips.com>
8616         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
8617         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
8618         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
8619         Document GET_MODE_IBIT, and GET_MODE_FBIT.
8621         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
8622         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8623         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
8624         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
8625         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
8626         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
8627         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
8628         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
8629         ALL_FIXED_POINT_MODE_P): New define.
8630         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8631         MODE_UACCUM.
8632         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
8634         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
8635         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8636         MODE_VECTOR_UACCUM): New mode classes.
8638         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
8639         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
8640         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
8641         USA, UDA, and UTA.
8643         * genmodes.c (struct mode_data): Add ibit and fbit fields.
8644         (blank_mode): Initialize ibit and fbit.
8645         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
8646         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8647         MODE_UACCUM.
8648         (new_adjust): Change required_class to required_class_from and
8649         required_class_to for testing within a range.
8650         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8651         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8652         MODE_VECTOR_UACCUM.
8653         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
8654         (make_fixed_point_mode): New.
8655         (_ADD_ADJUST): Change C to C1 and C2.
8656         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
8657         use a range for machine classes.
8658         (ADJUST_IBIT, ADJUST_FBIT): New.
8659         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
8660         CONST_MODE_FBIT.
8661         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
8662         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8663         Emit adjustment for ibit and fbit.
8664         (emit_mode_ibit, emit_mode_fbit): New.
8665         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
8667 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
8669         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
8670         as the source of the set.
8672 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
8674         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
8675         FP_REGNO_P): Use IN_RANGE.
8676         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
8677         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
8678         (DATA_REG_P): Use DATA_REGNO_P.
8679         (FP_REG_P): Use FP_REGNO_P.
8680         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
8681         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
8682         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
8684 2007-06-24  Jan Hubicka  <jh@suse.cz>
8686         PR middle-end/30563
8687         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
8689 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
8691         PR middle-end/32461
8692         * fold-const.c (fold_binary): Strip nops of operand 0
8693         of BIT_NOT_EXPR before calling operand_equal_p.
8694         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
8695         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
8697 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
8699         * doc/extend.texi: Document that dllimport and dllexport imply
8700         default visibility.
8701         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
8702         imported or exported declaration, including type declarations.
8703         * c-common.c (handle_visibility_attribute): Check for conflicts
8704         with dllimport/dllexport.
8705         (c_determine_visibility): Handle dllimport/dllexport as an
8706         explicit visibility atttribute.
8708 2007-06-23  Richard Guenther  <rguenther@suse.de>
8710         PR tree-optimization/16876
8711         PR middle-end/29478
8712         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
8713         for CALL_EXPRs.
8714         * tree-inline.c (initialize_inlined_parameters): Do not call
8715         lang_hooks.tree_inlining.convert_parm_for_inlining.
8716         * cgraphbuild.c (initialize_inline_failed): Set inline failed
8717         reason for mismatched types.
8718         * gimplify.c (gimplify_call_expr): Verify the call expression
8719         arguments match the called function type signature.  Otherwise
8720         mark the call expression to be not considered for inlining
8721         using CALL_CANNOT_INLINE_P flag.
8722         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
8723         edges call expression.
8724         (cgraph_decide_inlining_of_small_function): Likewise.
8725         (cgraph_decide_inlining): Likewise.
8726         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
8727         Remove define.
8728         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
8729         * c-typeck.c (c_convert_parm_for_inlining): Remove.
8730         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
8731         Remove declaration.
8732         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
8733         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
8734         Remove.
8735         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
8736         convert_parm_for_inlining member.
8738 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
8740         PR target/31152
8741         * arm.md (negscc): Match the correct operand for optimized LT0 test.
8742         Remove optimization for GT.
8744 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
8746         PR middle-end/32437
8747         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
8748         is a PARALLEL.
8749         (prescan_insns_for_dce): Add extra parameter.
8750         
8751 2007-06-23  Jan Hubicka  <jh@suse.cz>
8753         PR middle-end/31541
8754         * gimplify.c (mark_addressable): New function.
8755         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
8757 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8759         PR middle-end/32374
8760         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
8762 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8764         PR target/32413
8765         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
8766         moves between MMX/SSE registers to at least 8 units to prevent
8767         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
8769 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8771         * config/i386/i386.c (override_options): Correct x86_sahf
8772         setting condition.
8774 2007-06-21  David Daney  <ddaney@avtrex.com>
8776         PR target/32406
8777         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
8778         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
8779         (exception_receiver): Renamed to ...
8780         (nonlocal_goto_receiver): ... this.
8782 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
8784         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
8785         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
8786         partial register accesses.
8788 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
8790         * fold-const.c (debug_fold_checksum): Move it under
8791         ENABLE_FOLD_CHECKING.
8793 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
8795         PR middle-end/20623
8796         * tree.h (debug_fold_checksum): Declared.
8797         * fold-const.c (build_fold_addr_expr_with_type_1): New.
8798         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
8799         build_fold_addr_expr_with_type_1.
8800         (fold_addr_expr, debug_fold_checksum): New.
8801         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
8802         (fold_unary, fold_comparison, split_address_to_core_and_offset):
8803         Use fold_addr_expr.
8804         
8805 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
8807         PR tree-optimization/19590
8808         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
8809         of scev is a constant.
8810         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
8812 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
8814         * df-problems.c (df_note_bb_compute): Made computation of live
8815         info consistent with df_lr.
8817 2007-06-21  Richard Guenther  <rguenther@suse.de>
8819         PR tree-optimization/32453
8820         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
8821         for pointer anti-range.
8823 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
8825         * config/i386/i386.c (processor_target_table): Increase maximum
8826         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
8827         default 64bit.
8829         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
8830         byte alignment if > 8 byte alignment is preferred.
8831         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
8833 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
8835         PR tree-optimization/31866
8836         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
8837         if ASM_EXPR's input is not a SSA_NAME.
8839         PR middle-end/32362
8840         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
8841         but decl is a global var, instead return decl.
8842         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
8843         even for is_global_var decls, if they are private in some outer
8844         context.
8846 2007-06-21  Richard Guenther  <rguenther@suse.de>
8848         PR tree-optimization/32451
8849         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
8851 2007-06-21  Christian Bruel  <christian.bruel@st.com>
8853         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
8854         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
8855         (push_regs): Changed saving order or banked registers.
8856         (sh_expand_epilogue): Likewise.
8857         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
8858         (FIRST_BANKED_REG): Likewise.
8859         (LAST_BANKED_REG): Likewise.
8860         * config/sh/sh.md (banked) New attribute.
8861         (in_delay_slot): Check banked attribute.
8862         
8863 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
8865         PR tree-optimization/32075
8866         * tree-data-ref.c (subscript_dependence_tester_1, 
8867         analyze_miv_subscript, analyze_overlapping_iterations,
8868         add_distance_for_zero_overlaps, build_classic_dist_vector,
8869         subscript_dependence_tester_1, analyze_overlapping_iterations,
8870         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
8871         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
8872         to evolution_function_is_affine_multivariate_p.
8874 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
8876         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
8878 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8880         PR target/32335
8881         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
8882         for TARGET_A16.
8883         * config/m32c/prologue.md (epilogue_exitd_16): New.
8884         (epilogue_reit_16): New.
8885         (epilogue_exitd): Rename to epilogue_exitd_24.
8886         (epilogue_reit): Rename to epilogue_reit_24.
8888 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
8889             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
8891         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
8892         New counters.
8893         * haifa-sched.c (queue_to_ready): Don't requeue next insn
8894         if dbg_cnt (sched_insn) reaches the limit.
8895         (choose_ready): New parameter INSN_PTR and new return value.
8896         (schedule_block): Handle dbg_cnt (sched_insn). Handle
8897         the new return value from choose_ready.
8898         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
8899         (rest_of_handle_global_alloc): New global_alloc_at_func.
8901 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
8903         PR tree-optimization/25737
8904         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
8905         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
8906         * tree-flow.h (struct fieldoff): Add new field alias_set.
8907         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
8908         argument addressable_type.  Set alias_set of fieldoff.
8909         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
8910         (create_overlap_variables_for): Pass alias_set from fieldoff to
8911         create_sft.
8912         * alias.c (get_alias_set): Use alias_set from SFT if set.
8914 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
8916         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
8917         of a variable as an unsigned HOST_WIDE_INT integer.
8919 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
8921         PR rtl-optimization/32405
8922         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
8924 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
8926         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
8928         PR middle-end/31959
8929         * builtins.c: Include diagnostic.h.
8930         (expand_builtin_expect): Make gcc_assert more permissive.
8931         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
8933         PR inline-asm/32109
8934         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
8935         and !allows_mem.
8937         PR middle-end/32285
8938         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
8939         if ACCUMULATE_OUTGOING_ARGS.
8941 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8943         * config/m68hc11/m68hc11.c: Include dataflow header file.
8944         (m68hc11_reorg): Port to dataflow.
8946 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
8948         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
8949         (struct df_problem.free_blocks_on_set_blocks): New field.
8950         (struct dataflow.optional_p): New field.
8951         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
8952         (df_live_set_all_dirty): New function.
8953         * df-scan.c (df_scan_alloc): Initialize optional_p.
8954         (problem_SCAN): Initialize free_blocks_on_set_blocks.
8955         * df-core.c (df_set_blocks): Removed use of
8956         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
8957         df_problem.free_blocks_on_set_blocks to determine which blocks are
8958         recycled.
8959         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
8960         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
8961         uses dataflow.optional_p to determine if problem should be
8962         deleted.
8963         (rest_of_handle_df_initialize): Only start live problem if 
8964         -02 or above.
8965         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
8966         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
8967         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
8968         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
8969         problem_NOTE):  Initialize free_blocks_on_set_blocks.
8970         (df_lr_bb_local_compute): Recompute luids if df_live problem is
8971         not active.
8972         (df_live_set_all_dirty, df_note_alloc): New function.
8973         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
8974         df_get_live_*.
8975         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
8976         * postreload.c (reload_combine): Ditto.
8977         * cse.c (cse_extended_basic_block): Ditto.
8978         * regmove.c (mark_flags_life_zones): Ditto.
8979         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
8980         erase_matching_seqs): Ditto.
8981         * bt-load.c (compute_defs_uses_and_gen): Ditto.
8982         * integrate (allocate_initial_values): Ditto.
8983         * combine.c (reg_dead_at_p): Ditto.
8984         * resource.c (mark_target_live_regs): Ditto.
8985         * sched-rgn.c (check_live_1, update_live_1): Ditto.
8986         * config/sh/sh.c (find_r0_life_regions): Ditto.
8987         * global.c (rest_of_handle_global_alloc): Only add back df_live
8988         for -O > 1.
8989         * local-alloc.c (rest_of_handle_local_alloc): Only remove
8990         df_live for -O > 1.
8991         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
8992         df_get_live_*.
8993         (if_convert): Make sure df_live is there at -O == 1.
8994         (pass_if_after_combine): Cleanup flags.
8995         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
8996         is there at -O == 1.
8997         
8998 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
9000         * config/arm/arm.c (arm_get_frame_offsets): Set
9001         offsets->locals_base to avoid negative stack size.
9002         (thumb1_expand_prologue): Assert on negative stack size.
9004 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
9006         PR tree-optimization/32367
9007         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
9008         of the chrec has no evolution in that loop.
9009         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
9011 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
9013         * config/xtensa/xtensa.c: Include "df.h".
9014         (xtensa_builtin_saveregs): Use adjust_address instead of
9015         change_address.
9016         (xtensa_va_start): Invoke make_tree with sizetype for
9017         expand_builtin_saveregs and then convert the result to a pointer.
9018         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
9019         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
9020         Subtract argument size from index value as integers and then use
9021         POINTER_PLUS_EXPR to add the result to the array address.
9022         
9023 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9025         PR target/32335
9026         * config/m32c/m32c.c: Include dataflow header file.
9027         (m32c_emit_prologue): Adjust for prologue insn change.
9028         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
9029         once inside a PARALLEL. Assume frame size passed in operand 0
9030         includes space to save the fb register.
9031         (prologue_enter_24): Likewise.
9032         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
9034 2007-06-19  David Daney  <ddaney@avtrex.com
9036         PR target/32313
9037         * config/mips/mips.md (cprestore): Mark $gp as used.
9039 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9041         PR target/32369
9042         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
9043         (frv_ifcvt_modify_insn): Likewise.
9045 2007-06-19  Richard Guenther  <rguenther@suse.de>
9047         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
9048         only handle positive offsets that fit in a HOST_WIDE_INT.
9050 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
9052         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
9053         result of rsqrt insn for zero input argument to avoid NaN.
9055 2007-06-19  Richard Guenther  <rguenther@suse.de>
9057         PR middle-end/31950
9058         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
9060 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
9062         PR tree-optimization/32353
9063         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
9065 2007-06-19  Nick Clifton  <nickc@redhat.com>
9067         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
9069 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
9071         PR target/32389
9072         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
9073         * config/i386/i386.c (assign_386_stack_local): Assert that
9074         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
9075         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
9076         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
9077         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
9079 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
9081         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
9083 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
9085         PR rtl-optimization/32321
9086         * gcse.c (replace_store_insn): Update the note before
9087         calling emit_insn_after.
9089 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
9091         PR middle-end/32355
9092         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
9093         cse_main.
9094         * df-problems.c (df_note_bb_compute): Fix dumping info.
9095         
9096 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
9098         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
9099         insn with emit_jump_insn.
9101 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
9103         PR tree-optimization/32383
9104         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
9105         * targhooks.h (default_builtin_reciprocal): Update prototype.
9106         * target.h (struct gcc_target): Update builtin_reciprocal.
9107         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
9108         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
9109         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
9110         when fndecl is in BUILT_IN_MD class.
9111         (execute_convert_to_rsqrt): Ditto.
9113         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
9114         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
9115         Convert BUILT_IN_SQRTF code only  when md_fn is false.
9117 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
9119         * bt-load.c (move_btr_def): Fix the order of arguments
9120         to validate_replace_rtx.
9122 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
9124         * config/m68k/m68k-devices.def: Add 54450..54455.
9126 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
9128         PR rtl-optimization/32366
9129         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
9130         FLOAT_EXTEND]: Prevent non-scalar modes from entering
9131         significand_size.
9133 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
9135         PR middle-end/32349
9136         * modulo-sched (generate_reg_moves): Added rescan parameter and if
9137         this is true, rescan insn being modified.
9138         (sms_schedule): Added rescan parameter.
9139         (rest_of_handle_sms): Moved freeing of dominance info to before
9140         getting out of cfg_layout.
9141         
9142 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
9144         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
9145         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
9146         appropriate.
9148         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
9149         FL_CF_EMAC from the entry for isac.
9151         * config/m68k/predicates.md (const_call_operand): Adjust comment.
9152         (const_sibcall_operand): New.
9153         (sibcall_operand): Use it.
9154         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
9155         (m68k_isas): ISAC does not imply FPU or EMAC.
9156         (override_options): Add ISA_C logic for symbolic jump & call.
9158 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
9160         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
9161         return mode from the builtin itself.
9162         (sparc_fold_builtin): Fix cast of zero constant.
9164 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
9166         * targhooks.c (default_builtin_reciprocal): New default target hook.
9167         * targhooks.h (default_builtin_reciprocal): Add prototype.
9168         * hooks.c (hook_tree_tree_bool_null): Remove hook.
9169         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
9170         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
9171         default_builtin_reciprocal.
9173 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
9175         PR middle-end/31723
9176         * hooks.c (hook_tree_tree_bool_null): New hook.
9177         * hooks.h (hook_tree_tree_bool_null): Add prototype.
9178         * tree-pass.h (pass_convert_to_rsqrt): Declare.
9179         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
9180         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
9181         and convert it to reciprocal a*rfunc(b).
9182         (execute_convert_to_rsqrt): New function.
9183         (gate_convert_to_rsqrt): New function.
9184         (pass_convert_to_rsqrt): New pass definition.
9185         * target.h (struct gcc_target): Add builtin_reciprocal.
9186         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
9187         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
9188         TARGET_BUILTIN_RECIPROCAL.
9189         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
9191         * config/i386/i386.h (TARGET_RECIP): New define.
9192         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
9193         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9194         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9195         and not optimizing for size.
9196         (*rcpsf2_sse): New insn pattern.
9197         (*rsqrtsf2_sse): Ditto.
9198         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
9199         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9200         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9201         and not optimizing for size.
9202         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
9203         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9204         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9205         and not optimizing for size.
9206         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
9207         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9208         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9209         and not optimizing for size.
9210         (*sse_rsqrtv4sf2): Do not export.
9211         (sqrtv4sf2): Ditto.
9212         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
9213         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
9214         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
9215         and not optimizing for size.
9216         (sqrtv4sf2): Ditto.
9217         * config/i386/i386.opt (mrecip): New option.
9218         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
9219         (ix86_emit_swsqrtsf): Ditto.
9220         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
9221         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
9222         builtin definition.
9223         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
9224         ix86_expand_unop1_builtin.
9225         (ix86_emit_swdivsf): New function.
9226         (ix86_emit_swsqrtsf): Ditto.
9227         (ix86_builtin_reciprocal): New function.
9228         (TARGET_BUILTIN_RECIPROCAL): Use it.
9229         (ix86_vectorize_builtin_conversion): Rename from
9230         ix86_builtin_conversion.
9231         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
9232         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
9233         "i386 and x86_64 Options" section.
9234         (Intel 386 and AMD x86_64 Options): Document -mrecip.
9236 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
9237             Zdenek Dvorak <dvorakz@suse.cz>
9238             Richard Guenther  <rguenther@suse.de>
9239             Kaz Kojima  <kkojima@gcc.gnu.org>
9241         * tree-vrp.c (compare_values_warnv): Convert val2 to
9242         the type of val1.
9243         (extract_range_from_assert): Create
9244         POINTER_PLUS_EXPR for pointer types.
9245         (extract_range_from_binary_expr): Handle
9246         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
9247         for pointer types.
9248         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
9249         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
9250         POINTER_PLUS_EXPR as PLUS_EXPR.
9251         (number_of_iterations_lt_to_ne):
9252         For pointer types, use sizetype when
9253         creating MINUS_EXPR/PLUS_EXPRs.
9254         (assert_loop_rolls_lt): For pointer types, use sizetype when
9255         creating MINUS_EXPR/PLUS_EXPRs.
9256         (number_of_iterations_le): Likewise.
9257         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
9258         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
9259         like PLUS_EXPR and MINUS_EXPR.
9260         * tree-pretty-print.c (dump_generic_node): Handle
9261         POINTER_PLUS_EXPR.
9262         (op_prio): Likewise.
9263         (op_symbol_1): Likewise.
9264         * optabs.c (optab_for_tree_code): Likewise.
9265         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
9266         specially.
9267         * tree-tailcall.c (process_assignment): Mention
9268         POINTER_PLUS_EXPR in a TODO comment.
9269         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
9270         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
9271         not used with a pointer and an integer type.
9272         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
9273         increment using chrec_convert_rhs instead of chrec_convert.
9274         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
9275         PLUS_EXPR except for the right hand side's type will be
9276         sizetype.
9277         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
9278         (fold_used_pointer_cast): Kill.
9279         (pointer_offset_p): Kill.
9280         (fold_used_pointer): Kill.
9281         (pointer_used_p): Kill.
9282         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
9283         call fold_used_pointer.
9284         (instantiate_parameters_1): Convert the increment
9285         using chrec_convert_rhs instead of chrec_convert.
9286         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
9287         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
9288         instead of PLUS_EXPR.
9289         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
9290         PLUS_EXPR for pointers.
9291         (std_gimplify_va_arg_expr): Likewise.
9292         (fold_builtin_memory_op): Likewise.
9293         (fold_builtin_strstr): Likewise.
9294         (fold_builtin_strchr): Likewise.
9295         (fold_builtin_strrchr): Likewise.
9296         (fold_builtin_strpbrk): Likewise.
9297         (expand_builtin_memory_chk): Likewise.
9298         (fold_builtin_memory_chk): Likewise.
9299         (std_expand_builtin_va_start): Use
9300         sizetype for the call to make_tree and then convert
9301         to the pointer type.
9302         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
9303         instead of PLUS_EXPR for adding to a pointer.
9304         (std_gimplify_va_arg_expr): Use fold_build2 for
9305         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
9306         the operands to sizetype first and then cast the BIT_AND_EXPR
9307         back to the pointer type.
9308         * fold-const.c (build_range_check): Handle pointer types
9309         specially.
9310         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
9311         of PLUS_EXPR's. Make sure the offset is converted to
9312         sizetype.
9313         (try_move_mult_to_index): Strip the NOPs from the offset.
9314         Remove code argument and replace all uses with PLUS_EXPR.
9315         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
9316         specially. Don't use a pointer type for MINUS_EXPR.
9317         (fold_unary): Handle for (T1)(X op Y),
9318         only p+ as that is the only as that can be handled for
9319         binary operators now.
9320         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
9321         POINTER_PLUS_EXPR.
9322         <case PLUS_EXPR>: Add folding of PTR+INT into
9323         PTR p+ INT.
9324         Don't call try_move_mult_to_index.
9325         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
9326         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
9327         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
9328         Don't call try_move_mult_to_index.
9329         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
9330         (tree_expr_nonzero_p): Likewise.
9331         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
9332         of PLUS_EXPR for the complex expression folding.
9333         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
9334         first chrec is a pointer type, then the second should
9335         be sizetype and not the first's type.
9336         For POINTER_PLUS_EXPR, use a different right hand side type.
9337         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
9338         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
9339         different right hand side type.
9340         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
9341         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
9342         instead of PLUS_EXPR.
9343         When either operand is zero, convert the other operand.
9344         (chrec_apply): Use chrec_convert_rhs
9345         on the argument x instead of chrec_convert.
9346         (reset_evolution_in_loop): For pointer types, the new_evol
9347         should be sizetype.
9348         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
9349         different right hand side type.
9350         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
9351         (chrec_convert_rhs): New function.
9352         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
9353         different right hand side type.
9354         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
9355         * tree-chrec.h (chrec_convert_rhs): New prototype.
9356         (build_polynomial_chrec): For pointer types, the right hand
9357         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
9358         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
9359         Remove subtraction case as it is always addition now.
9360         Make sure the offset is converted to sizetype.
9361         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
9362         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
9363         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
9364         PLUS_EXPR in pointer type.
9365         Handle POINTER_PLUS_EXPR.
9366         (tree_to_aff_combination): Likewise.
9367         (force_expr_to_var_cost): Likewise.
9368         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
9369         instead of PLUS_EXPR for pointers.
9370         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
9371         instead of PLUS_EXPR of pointer types.
9372         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
9373         as PLUS_EXPR.
9374         (check_va_list_escapes): Likewise.
9375         (check_all_va_list_escapes): Likewise.
9376         * dwarf2out.c (loc_descriptor_from_tree_1):
9377         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
9378         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
9379         (string_constant): Likewise.
9380         * tree-ssa-address.c (tree_mem_ref_addr): When adding
9381         the offset to the base, use POINTER_PLUS_EXPR.
9382         (add_to_parts): Convert the index to sizetype.
9383         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
9384         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
9385         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
9386         Offset only holds something for PLUS_EXPR.
9387         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
9388         a PLUS_EXPR.
9389         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
9390         and not PLUS_EXPR.
9391         (analyze_accesses_for_modify_stmt): Likewise.
9392         Remove comment about the type being integral type as it is
9393         wrong now.
9394         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
9395         PLUS_EXPR.
9396         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
9397         and not PLUS_EXPR.
9398         Correct the type which the artimentic is done in (is now
9399         sizetype).
9400         Reindent one loop.
9401         * tree-data-ref.c (split_constant_offset): Handle
9402         POINTER_PLUS_EXPR
9403         * tree-affine.c (tree_to_aff_combination): Likewise.
9404         * c-typeck.c (build_unary_op): For pointers create the increment
9405         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
9406         for pointers.
9407         * gimplify.c (gimplify_self_mod_expr): Create a
9408         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
9409         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
9410         * tree.def (POINTER_PLUS_EXPR): New tree code.
9411         * tree-predcom.c (ref_at_iteration): If we have a pointer
9412         type do the multiplication in sizetype.
9413         * tree-mudflap.c (mf_xform_derefs_1): Create a
9414         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
9415         * tree-ssa-forwprop.c 
9416         (forward_propagate_addr_into_variable_array_index):
9417         Don't expect there to be a cast for the index as that
9418         does not exist anymore.
9419         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
9420         instead of PLUS_EXPR.
9421         Don't check for the first operand of the POINTER_PLUS_EXPR
9422         was the index as it cannot be.
9423         Call forward_propagate_addr_into_variable_array_index with
9424         the SSA_NAME instead of the statement.
9425         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
9426         (compare_constant): Likewise.
9427         (copy_constant): Likewise.
9428         (compute_reloc_for_constant): Likewise.
9429         (output_addressed_constants): Likewise.
9430         (initializer_constant_valid_p): Likewise.
9431         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
9432         Convert the MIN/MAX of the inner type to the outer
9433         type before comparing them.
9434         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
9435         POINTER_PLUS_EXPR instead of PLUS_EXPR.
9436         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
9437         of PLUS_EXPR for pointers.
9438         * tree-inline.c (estimate_num_insns_1): Handle
9439         POINTER_PLUS_EXPR.
9440         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
9441         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
9442         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
9443         instead of PLUS_EXPR for the pointer increment statement.
9444         (vect_update_ivs_after_vectorizer): For pointer types, create
9445         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
9446         MULT_EXPR in sizetype.
9447         (vect_gen_niters_for_prolog_loop): Add a cast when creating
9448         byte_misalign.
9449         * tree-object-size.c (plus_expr_object_size): Handle
9450         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
9451         code which is trying to figure out which side is a pointer and 
9452         is the index.
9453         (check_for_plus_in_loops_1): Likewise.
9454         (check_for_plus_in_loops): Likewise.
9455         * c-common.c (pointer_int_sum): Create a
9456         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
9457         * tree-ssa-structalias.c (handle_ptr_arith): Handle
9458         only POINTER_PLUS_EXPR.  Removing all the extra
9459         code which is trying to figure out which side is a pointer and 
9460         is the index.
9461         * tree-cfg.c (verify_expr): Add extra checking for pointers and
9462         PLUS_EXPR and MINUS_EXPR.
9463         Also add checking to make sure the operands of POINTER_PLUS_EXPR
9464         are correct.
9465         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
9466         with make_tree, instead of a pointer type.
9467         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
9468         for pointers instead of PLUS_EXPR.
9469         (s390_gimplify_va_arg): Likewise.
9470         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
9471         instead of PLUS_EXPR when doing addition on pointer
9472         types.  Use sizetype for the second operand.
9473         (spu_gimplify_va_arg_expr): Likewise.
9474         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
9475         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
9476         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
9477         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
9478         for the pointer addition and also use size_int/sizetype
9479         for the offset.
9480         (ix86_gimplify_va_arg): Likewise.
9481         Perform BIT_AND_EXPR on sizetype arguments.
9482         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
9483         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
9484         for the pointer additions and also use size_int for the offsets.
9485         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
9486         additions and also use size_int for the offsets.  Perform
9487         BIT_AND_EXPR on sizetype arguments.
9488         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
9489         POINTER_PLUS_EXPR for pointers and create the
9490         BIT_AND_EXPR in sizetype.
9491         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
9492         instead of PLUS_EXPR for pointer addition.
9493         (rs6000_va_start): Likewise.
9494         Also use sizetype for the offset.
9495         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
9496         as PLUS_EXPR/MINUS_EXPR.
9497         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
9498         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
9499         Don't use BIT_AND_EXPR on a pointer type, convert the
9500         expression to sizetype first.
9501         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
9502         for pointers.
9503         (mips_gimplify_va_arg_expr): Likewise.
9504         Don't create BIT_AND_EXPR in a pointer type.
9506 2007-06-15  Eric Christopher  <echristo@apple.com>
9508         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
9509         (x86_64-*-darwin*): Ditto.
9510         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
9511         for above.
9513 2007-06-15  Matthew Wilcox <matthew@wil.cx>
9515         * doc/extend.texi: Document behavior of __attribute__((aligned))
9516         on typedefs.
9518 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
9520         * rtlanal.c (note_stores): Improve documentation.
9522 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
9524         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
9525         LOCAL_LABEL_PREFIX): Delete.
9526         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
9527         (bfin_internal_label): Delete.
9529 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
9531         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
9532         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
9533         otherwise define to LIBGCC2_TF_CEXT.
9534         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
9535         (LIBGCC_TF_CEXT): Ditto.
9536         (TF_SIZE): Ditto.
9538 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
9540         PR rtl-optimization/32339
9541         * df-scan.c (df_uses_record): Don't modify flags but just add to
9542         it for df_ref_record.
9544 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9546         * tree-mudflap.c: Fix whitespace issues.
9548 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
9550         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
9552 2007-06-14  Eric Christopher  <echristo@apple.com>
9554         * config/i386/sse.md (movdi_to_sse): Rewrite body.
9555         (movv4sf): Use gcc_unreachable instead of abort.
9557 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
9559         PR target/32268
9560         * config/i386/sfp-machine.h (CMPtype): New define.
9561         (mach stubs): Use CMPtype instead of int as a return type.
9563 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
9565         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
9566         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
9567         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
9568         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
9569         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
9570         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
9571         config/soft-fp/soft-fp.h: Update from glibc CVS.
9573 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
9575         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
9577 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9579         PR target/32341
9580         * config/v850/v850.c: Include dataflow header file.
9581         (substitute_ep_register): Fix typo.
9583 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9585         * configure.ac: Fix earlier checkin.
9586         * configure: Regenerated.
9588 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9590         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
9591         * aclocal.m4: Regenerate.
9592         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
9593         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
9594         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
9595         * configure: Regenerate.
9596         * Makefile.in (LOOSE_WARN): Subst loose_warn.
9598         * Makefile.in (quickstrap): Build libgcc too.
9600 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9602         * configure.ac: Add --enable-checking=df.  Explicitly mention that
9603         the variables are initialized as for "release".
9604         * df-core.c: Use it.
9605         * configure: Regenerate.
9606         * config.in: Regenerate.
9608 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
9610         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
9611         validate_replace_rtx instead of replace_rtx.
9612         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
9614 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
9616         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
9617         (DWARF2_UNWIND_INFO): Override default if configured with
9618         SJLJ EH disabled.
9619         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
9620         (ENDFILE_SPEC): Add crtend.o.
9621         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
9622         (ENDFILE_SPEC): Add crtend.o.
9623         (TARGET_USE_JCR_SECTION): Define.
9624         (MD_UNWIND_SUPPORT): Define for 32-bit target.
9626         * config/i386/cygming-crtbegin.c: New file.
9627         * config/i386/cygming-crtend.c: New file.
9629 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
9631         * config/i386/w32-unwind.h: New file.
9633 2007-06-13  Eric Christopher  <echristo@apple.com>
9635         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
9636         the user set a value below STACK_BOUNDARY.
9638 2007-06-13  Thiemo Seufer  <ths@networkno.de>
9640         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
9641         imply -lpthread for -pthread.
9643 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
9645         * basic-block.h: Remove the prototype for
9646         free_basic_block_vars.
9647         * cfglayout.h: Remove the prototype for
9648         insn_locators_initialize.
9649         * tree.h: Remove the prototype for emit_line_note.
9651         * tree-ssa-pre.c (mergephitemp): Remove.
9652         (init_pre): Don't use mergephitemp.
9654 2007-06-13  Eric Christopher  <echristo@apple.com>
9656         * config/i386/i386.c (override_options): If we've specified
9657         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
9659 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
9661         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
9662         is defined.
9664 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
9666         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
9667         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
9668         (eh_store_handler): New pattern.
9669         (eh_return): Emit it instead of a plain move.
9671 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
9673         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
9674         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
9675         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
9676         def_builtin_const.
9678 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
9680         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
9681         (find_next_insn_start, find_load): New functions.
9682         (bfin_reorg): Use them to deal with the fact that parallel insns are
9683         no longer represented as a SEQUENCE.
9685 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
9687         * config/sparc/sparc.c (sparc_override_options): Initialize
9688         fpu mask correctly.
9690 2007-06-13  Dave Korn  <dave.korn@artimi.com>
9692         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
9693         df_get_live_out.
9695 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
9697         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
9698         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
9699         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
9700         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
9701         tree-vect-transform.c: Fix comment typos.  Follow spelling
9702         conventions.
9704 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
9706        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
9707        to the exit block use set.
9708        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
9709        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
9710        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
9712 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
9714         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
9715         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
9716         to indicate an error.
9717         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
9718         New functions.
9719         (dbg_cnt_process_opt): Print an error on a bad argument.
9720         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
9721         * common.opt (-fdbg-cnt-list): New.
9722         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
9724 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
9726         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
9727         flag on ref-all pointers.
9729 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9731         PR middle-end/31579
9732         * expr.c (expand_expr_addr_expr_1): Call expand_expr
9733         for the offset with the modifier as EXPAND_INITIALIZER
9734         if the modifier is EXPAND_INITIALIZER.
9735         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
9736         a register if we had an overflow.
9738 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9740         * real.c (real_isfinite): New.
9741         (real_sqrt): Use it.
9742         * real.h (real_isfinite): New.
9743         * builtins.c: Use it.
9745 2007-06-12  Ian Lance Taylor  <iant@google.com>
9746             Daniel Berlin  <dberlin@dberlin.org>
9748         PR libstdc++/29286
9749         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
9750         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
9751         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
9752         (DECL_NO_TBAA_P): Define.
9753         (struct tree_decl_common): Add no_tbaa_flag field.
9754         * tree-ssa-structalias.c (struct variable_info): Add
9755         no_tbaa_pruning field.
9756         (new_var_info): Initialize no_tbaa_pruning field.
9757         (unify_nodes): Copy no_tbaa_pruning field.
9758         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
9759         (dump_solution_for_var): Print no_tbaa_pruning flag.
9760         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
9761         callers.
9762         (compute_tbaa_pruning): New static function.
9763         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
9764         Call compute_tbaa_pruning.
9765         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
9766         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
9767         * gimple-low.c (lower_stmt): Likewise.
9768         * tree-gimple.c (is_gimple_stmt): Likewise.
9769         * tree-ssa-operands.c (get_expr_operands): Likewise.
9770         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
9771         * tree-inline.c (estimate_num_insns_1): Likewise.
9772         (copy_result_decl_to_var): Likewise.
9773         * expr.c (expand_expr_real_1): Likewise.
9774         * tree-pretty-print.c (dump_generic_node): Likewise.
9775         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
9776         * omp-low.c (omp_copy_decl_2): Likewise.
9777         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
9778         * doc/c-tree.texi (Expression trees): Document
9779         CHANGE_DYNAMIC_TYPE_EXPR.
9781 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9783         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
9784         with !HONOR_NANS and !HONOR_INFINITIES.
9785         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
9787 2007-06-12  Tristan Gingold  <gingold@adacore.com>
9789         * gcov.c: Comments updated.
9790         (source_info): Add file_time field.
9791         (source_index): New variable.
9792         (mutiple_files): New variable.
9793         (generate_results): New function extracted from process_file.
9794         (process_file): Save and restore chain of functions, generate
9795         results and free structures only if not merging results.
9796         (release_structures): File names are now freed in create_file_names
9797         (create_file_names): Free previous file names.
9798         (find_source): File date is now read here and modifications in
9799         source files is checked here.
9800         (read_graph_file): Only reverse order of functions for the current
9801         object file.
9802         (make_gcov_file_name): Do not generate long names if input_name is
9803         NULL.
9804         (output_lines): If merging results do not display graph, data and
9805         runs informations.
9806         Checking source file modification is done in find_source.
9808         * doc/gcov.texi: Append an s to sourcefile.
9810 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
9812         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
9813         (forced_nop): New pattern.
9814         * config/bfin/bfin.c: Include "df.h".
9815         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
9816         (bfin_discover_loop): Use df_get_live_in instead of
9817         global_live_at_start.
9818         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
9819         df_analyze when done.
9820         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
9821         the insns.  Use QImode for the final insn in a bundle.  Call
9822         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
9823         gen_nop.
9824         (reorder_var_tracking_notes): New function.
9825         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
9826         update_life_info.  Call df_analyze after scheduling and bundle
9827         generation.  Call reorder_var_tracking_notes if generating these
9828         notes.  Call df_finish_pass at the end.
9830 2007-06-12  Dirk Mueller  <dmueller@suse.de>
9832         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
9833         a comparison, not an assignment.
9835 2007-06-12  Olivier Hainque  <hainque@adacore.com>
9837         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
9838         Request walking the subtrees only, leaving the current is_lhs/val_only
9839         untouched.
9840         (convert_non_local_reference): Likewise.
9842 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
9844         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
9846 2007-06-12  Richard Guenther  <rguenther@suse.de>
9848         PR tree-optimization/15353
9849         PR tree-optimization/31657
9850         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
9851         * timevar.def: Add TV_TREE_IFCOMBINE.
9852         * tree-pass.h (pass_tree_ifcombine): Declare.
9853         * tree-ssa-ifcombine.c: New file.
9854         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
9855         * tree-flow.h (blocks_in_phiopt_order): Declare.
9856         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
9857         (tree-ssa-ifcombine.o): New dependencies.
9859 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
9861         PR rtl-optimization/32293
9862         * combine.c (simplify_if_then_else): Truncate return from
9863         nonzero_bits() to correct mode.
9865 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
9867         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
9868         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
9870 2007-06-11  Diego Novillo  <dnovillo@google.com>
9872         * Makefile.in (reload1.o-warn): Remove.
9874 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
9876         * combine.c (subst): Use reg_overlap_mentioned_p
9877         instead of comparing register numbers directly.
9879 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
9881         * reload1.c (mark_home_live_1): Use the mode parameter.
9883 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
9885         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
9886         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
9887         word "deferred".
9888         * df-core.c: Ditto.
9890 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
9892         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
9894 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9896         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
9897         from integer registers.
9898         (FP mode splitters): Handle TFmode.
9900 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
9902         * tree-ssa-structalias.c (find_what_p_points_to): Return false
9903         for ref-all pointers that point-to anything.
9905 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
9907         * config/arm/arm.c (arm_output_dwarf_dtprel,
9908         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
9910 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9912         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
9913         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
9914         to memory moves.
9916 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
9918         * tree.c (signed_or_unsigned_type_for): New.
9919         (unsigned_type_for): Use signed_or_unsigned_type_for.
9920         (signed_type_for): Use signed_or_unsigned_type_for.
9921         * tree.h (signed_or_unsigned_type_for): New.
9922         (get_signed_or_unsigned_type): Remove.
9923         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
9924         lang_hooks.types.signed_type
9925         (size_diffop): Likewise.
9926         (all_ones_mask_p): Likewise.
9927         (build_range_check): Likewise.
9928         (fold_cond_expr_with_comparison): Likewise.
9929         (fold_cond_expr_with_comparison): Likewise.
9930         (unextend): Likewise.
9931         (extract_muldiv_1): Likewise.
9932         (fold_single_bit_test_into_sign_test): Likewise.
9933         (fold_binary): Likewise.
9934         (fold_ternary): Likewise.
9935         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
9936         instead of get_signed_or_unsigned_type.
9937         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
9938         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
9939         * expr.c (signed_or_unsigned_type_for): Use
9940         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
9941         * langhooks.c (get_signed_or_unsigned_type): Remove.
9942         (lhd_signed_or_unsigned_type): Remove.
9943         * langhooks.h (lang_hooks_for_types): Remove signed_type and
9944         signed_or_unsigned_type.
9945         (lhd_signed_or_unsigned_type): Remove.
9946         * expmed.c (make_tree): Use signed_type_for instead of
9947         lang_hooks.types.signed_type.
9948         * c-common.c (same_scalar_type_ignoring_signedness): Use
9949         c_common_signed_type instead of lang_hooks.types.signed_type.
9950         (c_common_unsigned_type): New.
9951         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
9952         (shorten_compare): Use c_common_unsigned_type instead of
9953         c_common_signed_or_unsigned_type.
9954         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
9955         unsigned_type_for.
9956         * convert.c (convert_to_integer): Use signed_type_for instead of
9957         lang_hooks.types.signed_type.
9958         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
9959         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
9960         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
9961         * c-format.c (check_format_types): Use c_common_unsigned_type
9962         instead of unsigned_type_for.
9963         * c-decl.c (groakdeclarator): Likewise.
9964         * c-typeck.c (convert_for_assignment): Likewise.
9965         * c-common.h (c_common_unsigned_type): New.
9967 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9969         PR target/32280
9970         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
9971         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
9973 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9975         PR middle-end/32279
9976         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
9977         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
9979 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
9980             Sebastian Pop  <sebpop@gmail.com>
9982         * lambda-code.c (remove_iv): New.
9983         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
9985 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
9987         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
9988         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
9989         * tree-ssa-loop-prefetch.c: Include optabs.h.
9990         (FENCE_FOLLOWING_MOVNT): New macro.
9991         (struct mem_ref): Add independent_p and storent_p fields.
9992         (record_ref): Initalize the new fields.
9993         (gather_memory_references_ref): Return true if the reference
9994         could be analysed.
9995         (gather_memory_references): Check whether all memory accesses
9996         in loop were recorded.
9997         (should_issue_prefetch_p): Return false for nontemporal stores.
9998         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
9999         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
10000         (determine_loop_nest_reuse): Detect independent memory references.
10001         (loop_prefetch_arrays): Call mark_nontemporal_stores.
10002         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
10003         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
10004         * config/i386/i386.h (x86_mfence): Declare.
10005         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
10006         * config/i386/i386.c (x86_mfence): New variable.
10007         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
10009         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
10010         * optabs.c (init_optabs): Initialize storent_optab.
10011         * optabs.h (enum optab_index): Add OTI_storent.
10012         (storent_optab): Declare.
10013         * genopinit.c (optabs): Add initialization for storent_optab.
10014         * tree.h (MOVE_NONTEMPORAL): New macro.
10015         * expr.c (expand_assignment, store_expr, store_constructor_field,
10016         store_constructor, store_field, expand_expr_real_1): Propagate
10017         nontemporality of the expanded store.
10018         (emit_storent_insn): New function.
10019         * expr.h (expand_assignment, store_expr): Declaration changed.
10020         * function.c (assign_parm_setup_reg): Pass false as nontemporality
10021         to expand_assignment.
10022         * stmt.c (expand_asm_expr): Ditto.
10023         * calls.c (initialize_argument_information): Pass false as
10024         nontemporality to store_expr.
10025         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
10026         storentsi): New.
10028 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
10030         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
10031         parameter, use it.
10032         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
10034 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
10036         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
10037         and allow DECL_P here.
10039 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
10041         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
10042         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
10043         track of the size of the expression.
10044         * cfghooks.c (merge_blocks): Remove block from loops structure only
10045         after call of the merge_blocks hook.
10047 2007-06-09  Tom Tromey  <tromey@redhat.com>
10049         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
10050         (deprecated_state): Removed.
10051         (start_decl): Update.
10052         (enum deprecated_states): Moved earlier.
10053         (groktypename): Update.
10054         (push_parm_decl): Likewise.
10055         (grokfield): Likewise.
10056         (start_function): Likewise.
10058 2007-06-09  Ian Lance Taylor  <iant@google.com>
10060         PR tree-optimization/32169
10061         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
10062         CONVERT_EXPR, check whether min and max both converted to an
10063         overflow infinity representation.
10065 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
10067         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
10068         not inserted on the edge.
10070 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
10072         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
10073         instructions if they are supported.
10074         (__divsi3, __umodsi3, __modsi3): Likewise.
10075         (__ashldi3, __ashrdi3, __lshrdi3): New.
10076         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
10078 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
10079             Tony Linthicum <tony.linthicum@amd.com>
10081         * doc/invoke.texi: Add fvect-cost-model flag.
10082         * common.opt (fvect-cost-model): New flag.
10083         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
10084         cost fields in stmt_vec_info struct for STMT.
10085         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
10086         fields in stmt_vec_info struct and access functions for the same.
10087         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
10088         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
10089         load, store and vector to scalar operation.
10090         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
10091         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
10092         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
10093         (TARG_VEC_STORE_COST): Define cost of vector store.
10094         (vect_estimate_min_profitable_iters): Define new function.
10095         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
10096         check to evaluate if loop iterations are less than minimum profitable
10097         iterations determined by cost model or minimum vect loop bound defined
10098         by user, whichever is more conservative.
10099         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
10100         run-time check to evaluate if loop iterations are less than minimum
10101         profitable iterations determined by cost model or minimum vect loop
10102         bound defined by user, whichever is more conservative.
10103         (vect_estimate_min_profitable_iterations): New function to estimate
10104         mimimimum iterartions required for vector version of loop to be
10105         profitable over scalar version.
10106         (vect_model_reduction_cost): New function.
10107         (vect_model_induction_cost): New function.
10108         (vect_model_simple_cost): New function.
10109         (vect_cost_strided_group_size): New function.
10110         (vect_model_store_cost): New function.
10111         (vect_model_load_cost): New function.
10112         (vectorizable_reduction): Call vect_model_reduction_cost during
10113         analysis phase.
10114         (vectorizable_induction): Call vect_model_induction_cost during
10115         analysis phase.
10116         (vectorizable_load): Call vect_model_load_cost during analysis phase.
10117         (vectorizable_store): Call vect_model_store_cost during analysis phase.
10118         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
10119         vectorizable_promotion, vectorizable_demotion): Call
10120         vect_model_simple_cost during analysis phase.
10122 2007-06-08  Simon Baldwin  <simonb@google.com>
10124         * reg-stack.c (get_true_reg): Readability change.  Moved default case
10125         label into direct switch statement scope.
10127 2007-06-08  Simon Baldwin  <simonb@google.com>
10129         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
10130         in gcc_assert() with '==' comparison.
10132 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
10134         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
10135         TARGET_ABM handling of x86_popcnt variable.
10137 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
10139         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
10140         __builtin_copysignq and __builtin_infq built-in functions.
10142 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
10144         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
10145         SSE4.2 section.  Correct built-in function names in SSE4A section.
10147 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
10149         PR tree-optimization/32243
10150         * tree-vect-transform.c (vectorizable_type_promotion): Move check
10151         for ncopies after ratio check between nunits_out and nunits_in.
10152         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
10154 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
10156         PR tree-optimization/32224
10157         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
10158         vectorization upon a non GIMPLE_MODIFY_STMT.
10160 2007-06-08  Christian Bruel  <christian.bruel@st.com>
10162         PR target/29953
10163         * config/sh/sh.md (doloop_end): New pattern and splitter.
10164         * loop-iv.c (simple_rhs_p): Check for hardware registers.
10166 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
10168         PR middle-end/32209
10169         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
10170         functions.
10171         (verify_dominators): Do not change dominance tree.
10173 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
10175         * config/sh/constraints.md: New file.
10176         * config/sh/sh.c: Include tm-constrs.h.
10177         (reg_class_from_letter): Remove.
10178         (prepare_cbranch_operands): Use satisfies_constraint_*
10179         function instead of macro.
10180         (andcosts, broken_move, sh_secondary_reload): Likewise.
10181         * config/sh/predicates.md (trapping_target_operand): Likewise.
10182         (and_operand, arith_operand, arith_reg_or_0_operand,
10183         cmp_operand, logical_operand, target_operand,
10184         ua_address_operand, ua_offset, xor_operand): Likewise.
10185         * config/sh/sh.md: Include constraints.md.
10186         (*movsicc_t_false): Use satisfies_constraint_* function
10187         instead of macro.
10188         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
10189         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
10190         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
10191         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
10192         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
10193         (REG_CLASS_FROM_CONSTRAINT): Remove.
10194         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
10195         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
10196         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
10197         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
10198         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
10199         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
10200         function instead of macro.
10201         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
10202         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
10203         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
10204         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
10205         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
10206         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
10207         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
10208         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
10209         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
10210         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
10211         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
10212         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
10213         EXTRA_CONSTRAINT_STR): Likewise.
10214         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
10216 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
10218         * config/i386/darwin.h (STACK_BOUNDARY): Define.
10220 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
10222         PR c++/30759
10223         * c-common.h (flag_cpp0x): Replaced by...
10224         (cxx_dialect): ... this new variable specifying the C++ dialect that
10225         is used.
10226         * c-common.c (flag_cpp0x): Removed.
10227         (cxx_dialect): Defined.
10228         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
10229         cxx_dialect.
10230         * c-opts.c (c_common_post_options): Likewise.
10231         (set_std_cxx98): Set cxx_dialect to cxx98.
10232         (set_std_cxx0x): Set cxx_dialect to cxx0x.
10234 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
10235             Hui-May Chang <hm.chang@apple.com>
10237         * doc/invoke.texi (Darwin Options): Update documentation for
10238         -mmacosx-version-min.
10239         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
10240         * config/darwin-driver.c: New file.
10241         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
10242         * config/t-darwin (darwin-driver.o): New rule.
10244         * config/darwin-c.c (version_as_macro): Ignore low digit.
10246 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
10248         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
10249         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
10250         (CSGNMODE): New mode macro.
10251         (CSGNVMODE): New mode attribute.
10252         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
10253         expander using CSGNMODE mode macro.  Handle TFmode.
10254         (copysign<mode>3_const): Rename from copysignsf3_const and
10255         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
10256         Handle TFmode.
10257         (copysign<mode>3_var): Rename from copysignsf3_var and
10258         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
10259         Handle TFmode.
10260         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
10261         mode macro.  Handle TFmode.
10262         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
10263         (iortf3, *iortf3): Ditto.
10264         (xortf3, *xortf3): Ditto.
10265         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
10266         TFmode and TImode masks.
10267         (ix86_expand_copysign): Expand TFmode copysign insn.
10268         (IX86_BUILTIN_INFQ): New.
10269         (IX86_BUILTIN_FABSQ): Ditto.
10270         (IX86_BUILTIN_COPYSIGNQ): Ditto.
10271         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
10272         [__builtin_fabsq]: Ditto.
10273         [__builtin_copysignq]: Ditto.
10274         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
10275         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
10276         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
10277         ix86_expand_binop_builtin().
10279 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
10281         * config/xtensa/lib1funcs.asm: Clean up whitespace.
10283 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
10285         PR target/31850
10286         * rtl.h (push_to_sequence2): New.
10287         * emit-rtl.c (push_to_sequence2): New.
10288         * function.c (assign_parm_data_all): Add new fields.
10289         (assign_parm_setup_block): Call push_to_sequence2 instead of
10290         push_to_sequence.
10291         (assign_parm_setup_reg): Ditto.
10292         (assign_parm_setup_stack): Ditto.
10293         (assign_parms_unsplit_complex): Ditto.
10294         (assign_parms): Change field name.
10296 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
10298         PR tree-optimization/32220
10299         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
10300         phi node is reached before defining statement.
10302 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10304         PR tree-opt/32231
10305         * tree-vect-transform.c (vectorizable_call): Call update_stmt
10306         after changing the right hand side of the assignment.
10308 2007-06-06  Eric Christopher  <echristo@apple.com>
10310         * config.gcc (i?86-*-darwin*): Remove arch parameter.
10311         (x86_64-*-darwin*): Ditto.
10312         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
10313         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
10315 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
10317         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
10318         coding conventions.
10319         (add_key): Likewise.
10320         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
10321         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
10322         variable names.
10323         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
10324         macros.
10325         (add_cost_one_coalesce): Likewise.
10326         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
10327         variable names. Rename orig to orig_name for consistency.
10328         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
10329         coding conventions.
10330         (cprop_into_successor_phis): Avoid using C++ keywords as variable
10331         names.
10332         (record_equivalences_from_stmt): Likewise.
10333         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
10334         the coding conventions.
10335         (memory_ssa_name_same): Likewise.
10336         (dse_optimize_stmt): Likewise.
10337         (dse_record_phis): Likewise.
10338         (dse_finalize_block): Likewise.
10339         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
10340         keywords as variable names.
10341         (may_move_till): Cast according to the coding conventions.
10342         (force_move_till_expr): Avoid using C++ keywords as variable names.
10343         (force_move_till): Cast according to the coding conventions.
10344         (memref_hash): Likewise.
10345         (memref_eq): Likewise.
10346         (gather_mem_refs_stmt): Likewise.
10347         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
10348         using C++ keywords as variable names.
10349         (idx_find_step): Cast according to the coding conventions.
10350         (idx_record_use): Likewise.
10351         (find_depends): Likewise.
10352         (prepare_decl_rtl): Likewise.
10353         (mbc_entry_hash): Likewise.
10354         (mbc_entry_eq): Likewise.
10355         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
10356         (simplify_replace_tree): Avoid using C++ keywords as variable names.
10357         (idx_infer_loop_bounds): Cast according to the coding conventions.
10358         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
10359         * tree-ssa-math-opts.c (occ_new ): Likwise.
10360         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
10361         macros.
10362         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
10363         variable names.
10364         (add_use_op): Likewise.
10365         (add_vop): Likewise.
10366         (add_vuse_op): Likewise.
10367         (add_vdef_op): Likewise.
10368         (get_expr_operands): Likewise.
10369         (push_stmt_changes): Use type safe memory macros.
10370         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
10371         keywords as variable names.
10372         (conditional_replacement): Likewise.
10373         (minmax_replacement): Likewise.
10374         (abs_replacement): Likewise.
10375         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
10376         coding conventions.
10377         (insert_fake_stores): Avoid using C++ keywords as variable names.
10378         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
10379         conventions.
10380         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
10381         (heapvar_insert): Use type safe memory macros.
10382         (new_var_info): Cast according to the coding conventions.
10383         (new_constraint): Likewise.
10384         (remove_preds_and_fake_succs): Use type safe memory macros.
10385         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
10386         conventions.
10387         (thread_single_edge): Likewise.
10388         (thread_through_loop_header): Likewise.
10390 2007-06-06  Eric Christopher  <echristo@apple.com>
10392         * config/i386/i386.c (override_options): Move handling
10393         of TARGET_SUBTARGET* earlier.
10395 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
10397         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
10398         use %n on printf.
10400 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
10402         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
10403         emited outside of basic block.
10404         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
10405         the created blocks.
10406         * rtl.h (delete_insn_chain): Declaration changed.
10407         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
10408         non-removed insns.
10409         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
10410         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
10411         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
10412         to delete_insn_chain.
10413         (rtl_verify_flow_info_1): Verify that the insns in header and footer
10414         do not have bb field set.
10415         (rtl_verify_flow_info): Verify that insns between basic blocks do not
10416         have bb field set.
10417         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
10418         * cfgcleanup.c (try_optimize_cfg): Ditto.
10420 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
10422         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
10423         (lambda_body_vector_new): Use type safe memory macros.
10424         (lambda_linear_expression_new): Likewise.
10425         (lambda_loopnest_new): Likewise.
10426         (lambda_lattice_new): Likewise.
10427         (replace_uses_equiv_to_x_with_y): Cast according to the coding
10428         conventions. Use type safe memory macros.
10429         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
10430         (lambda_body_vector_s): Likewise.
10431         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
10432         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
10434 2007-06-06  Richard Guenther  <rguenther@suse.de>
10436         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
10437         if we need to schedule cfg_cleanup.
10438         (tree_ssa_forward_propagate_single_use_vars): Do so.
10440 2007-06-06  Ian Lance Taylor  <iant@google.com>
10442         * fold-const.c (merge_ranges): If range_successor or
10443         range_predecessor fail, just return 0.
10445 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
10447         PR tree-optimization/32216
10448         * tree-vectorizer.c (supportable_widening_operation): Determine
10449         signedness of FIX_TRUNC_EXPR from output operand.
10450         (supportable_narrowing_operation): Ditto.
10451         * tree-vect-generic.c (expand_vector_operations_1): Determine
10452         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
10453         from input operand.
10455 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
10457         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
10458         (struct pta): ...from here. Change flags to unsigned to avoid
10459         excessive casting (as it is used as a bit mask).
10460         (override_options): Add casts according to the coding convenventions.
10461         (x86_64_elf_unique_section): Likewise.
10462         (examine_argument): Avoid using C++ keywords as variable names.
10463         (construct_container): Likewise.
10464         (legitimize_pic_address): Likewise.
10465         (get_dllimport_decl): Cast according to the coding conventions. Use
10466         type safe memory macros.
10467         (legitimize_address): Cast according to the coding conventions.
10468         (emit_i387_cw_initialization): Corrected the type of slot to enum
10469         ix86_stack_slot.
10470         (ix86_init_machine_status): Use type safe memory macros.
10471         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
10472         (bdesc_pcmpistr): Likewise.
10473         (bdesc_crc32): Likewise.
10474         (bdesc_sse_3arg): Likewise.
10475         (bdesc_2arg): Likewise.
10476         (bdesc_1arg): Likewise.
10477         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
10478         (ix86_expand_sse_pcmpistr): Likewise.
10479         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
10480         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
10481         int to match the langhook definition.
10482         (ix86_builtin_conversion): Change the type of code to unsigned init to
10483         match the langhook definition.
10484         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
10485         names.
10486         (ix86_preferred_output_reload_class): Likewise.
10487         (ix86_cannot_change_mode_class): Likewise.
10488         (ix86_memory_move_cost): Likewise.
10489         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
10490         avoid excessive casting later on.
10491         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
10493 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
10495         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
10496         as flags setting insn.
10497         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
10499 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
10501         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
10502         (UNSPEC_ROUND): New.
10503         ("sse4_1_round<mode>2"): New insn pattern.
10504         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
10505         SSE4.1 targets.
10506         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
10507         expander using SSEMODEF mode macro.  Expand using
10508         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
10509         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
10510         expander using SSEMODEF mode macro.  Expand using
10511         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
10512         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
10513         expander using SSEMODEF mode macro.  Expand using
10514         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
10515         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
10516         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
10517         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
10518         UNSPEC_ROUNDS.
10520 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
10521             Sebastian Pop  <sebpop@gmail.com>
10523         * lambda.h (build_linear_expr): New.
10524         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
10525         Use build_linear_expr, call fold and force_gimple_operand.
10526         (lambda_loopnest_to_gcc_loopnest): Check that there is
10527         something to insert.
10528         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
10530 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
10532         PR preprocessor/23479
10533         * doc/extend.texi: Document the 0b-prefixed binary integer
10534         constant extension.
10536 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10538         PR tree-optimization/32215
10539         * tree-vectorizer.c (supportable_widening_operation): Return false
10540         for unsupported FIX_TRUNC_EXPR tree code.
10541         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
10543 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
10545         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
10546         register on SPE targets.  Change documentation to reflect
10547         reality.
10548         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
10549         Change FIXED_SCRATCH to 14 and document why we're keeping r14
10550         out of the register allocation pool.
10551         (rs6000_reg_live_or_pic_offset_p): New function.
10552         (rs6000_emit_prologue): Move the actual saving of LR up to free
10553         r0 for holding r11.  Split saving of SPE 64-bit registers into
10554         its own case.  Ensure that offsets will always be in-range for
10555         'evstdd' by using r11 as a scratch register to point at the start
10556         of the SPE save area.  Save r11 if necessary, as it is the static
10557         chain register.
10558         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
10559         into its own case.  Ensure that offsets will always be in-range
10560         for 'evldd' by using r11 as a scratch register to point at the
10561         start of the SPE save area.  Also adjust r11 when restoring
10562         the stack pointer to compensate for pre-loading r11.
10564 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
10566         * cfg.c (init_flow): Use type safe memory macros.
10567         (alloc_block): Likewise.
10568         (unchecked_make_edge): Likewise.
10569         (dump_flow_info): Avoid using C++ keywords as variable names.
10570         (copy_original_table_clear): Cast according to the coding conventions.
10571         (copy_original_table_set): Likewise.
10572         * cfgexpand (label_rtx_for_bb): Likewise.
10573         (expand_gimple_basic_block): Likewise.
10574         * cfghooks.c (dump_bb): Likewise.
10575         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
10576         variable names.
10577         (lv_add_condition_to_bb): Likewise.
10578         * cfglayout (relink_block_chain): Cast according to the coding
10579         conventions.
10580         (fixup_reorder_chain): Likewise.
10581         (fixup_fallthru_exit_predecessor): Likewise.
10582         * cfgloop.c (glb_enum_p): Likewise.
10583         (get_exit_description): Likewise.
10584         (dump_recorded_exit): Likewise.
10585         * cfgloop.h (enum loop_estimation): Move out of struct scope...
10586         (struct loop): ... from here.
10587         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
10588         conventions.
10589         * cfgrtl.c (rtl_create_basic_block): Likewise.
10590         (rtl_split_block): Likewise.
10591         (rtl_dump_bb): Likewise.
10592         (cfg_layout_split_block): Likewise.
10593         (init_rtl_bb_info): Use typesafe memory macros.
10595         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
10596         * graphds.h: Updated all usages of edge to graph_edge.
10597         * graphds.c: Likewise.
10598         * cfgloopanal.c: Likewise.
10600 2007-06-05  Ian Lance Taylor  <iant@google.com>
10602         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
10603         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
10604         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
10605         expression.
10606         (test_for_singularity): Likewise.
10608 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
10610         * config/i386/constraints.md ("Y2"): Replaced by ...
10611         ("Yt"): This.
10612         * config/i386/i386.md: Likewise.
10613         * config/i386/mmx.md: Likewise.
10614         * config/i386/sse.md: Likewise.
10616 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
10618         * config/i386/constraints.md ("z"): Replaced by ...
10619         ("Y0"): This.
10620         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
10621         (sse4_1_blendvps): Likewise.
10622         (sse4_1_pblendvb): Likewise.
10623         (sse4_2_pcmpestr): Likewise.
10624         (sse4_2_pcmpestrm): Likewise.
10625         (sse4_2_pcmpestr_cconly): Likewise.
10626         (sse4_2_pcmpistr): Likewise.
10627         (sse4_2_pcmpistrm): Likewise.
10628         (sse4_2_pcmpistr_cconly): Likewise.
10630 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
10632         * matrix-reorg.c (transform_access_sites): Fix computation.
10633         (transform_allocation_sites): Same.
10635 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10637         * config/i386/i386.c (override_options): Use
10638         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
10640 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10642         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
10643         (nonimm_not_xmm0_operand): Ditto.
10644         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
10645         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
10646         as operand[2] predicate.  Require "z" class XMM register for
10647         operand[3].  Adjust asm template.
10648         ("sse4_1_blendvpd"): Ditto.
10649         ("sse4_1_pblendvb"): Ditto.
10650         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
10651         force op2 into xmm0 register for variable blend instructions.
10653 2007-06-04  Tom Tromey  <tromey@redhat.com>
10655         * c-tree.h (start_enum): Update.
10656         (build_enumerator): Likewise.
10657         * c-decl.c (enum_next_value): Removed.
10658         (enum_overflow): Likewise.
10659         (start_enum): Add c_enum_contents argument.  Don't use globals.
10660         (build_enumerator): Likewise.
10661         * c-tree.h (struct c_enum_contents): New struct.
10663 2007-06-04  Tom Tromey  <tromey@redhat.com>
10665         * c-common.c (c_common_get_alias_set): Fix indentation.
10667 2007-06-04  Ian Lance Taylor  <iant@google.com>
10669         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
10670         to overflow, reduce overflow infinity to regular infinity.
10671         (vrp_var_may_overflow): New static function.
10672         (vrp_visit_phi_node): Check vrp_var_may_overflow.
10674 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
10676         * stor-layout.c (layout_type): Remove duplicate code.
10678 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
10680         PR c/32191
10681         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
10682         before build_common_builtin_nodes ().
10684 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
10686         PR target/31733
10687         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
10689 2007-06-04  Jan Hubicka  <jh@suse.cz>
10691         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
10692         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
10693         instead of _stat version.
10695 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
10697         PR tree-optimization/32194
10698         * tree-predcom.c (determine_offset): Check that both references have
10699         the same type.
10701 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
10703         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
10704         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
10705         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
10706         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
10707         Add argument to iterate_fix_dominators call.
10708         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
10709         * gcse.c (hoist_code): Change domby to vector.
10710         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
10711         Add argument to iterate_fix_dominators call.
10712         * loop-doloop.c (doloop_modify): Changed recount_dominator to
10713         recompute_dominator.
10714         * lambda-code.c (perfect_nestify): Ditto.
10715         * cfgloopanal.c: Include graphds.h.
10716         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
10717         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
10718         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
10719         add_edge call.
10720         * graphds.c: New file.
10721         * graphds.h: New file.
10722         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
10723         (get_dominated_by, get_dominated_by_region): Change return type to
10724         vector.
10725         (verify_dominators): Recompute all dominators and compare the results.
10726         (recount_dominator): Renamed to ...
10727         (recompute_dominator): ... this.  Do not check that the block is
10728         dominated by entry.
10729         (iterate_fix_dominators): Reimplemented.
10730         (prune_bbs_to_update_dominators, root_of_dom_tree,
10731         determine_dominators_for_sons): New functions.
10732         * et-forest.c (et_root): New function.
10733         * et-forest.h (et_root): Declare.
10734         * Makefile.in (graphds.o): Add.
10735         (cfgloopanal.o): Add graphds.h dependency.
10736         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
10737         * basic-block.h (get_dominated_by, get_dominated_by_region,
10738         iterate_fix_dominators): Declaration changed.
10739         (recount_dominator): Renamed to ...
10740         (recompute_dominator): ... this.
10741         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
10742         (thread_through_all_blocks): Do not free dominance info.
10744 2007-06-03  Andreas Schwab  <schwab@suse.de>
10746         * config/m68k/m68k.c (override_options): Don't override
10747         REAL_MODE_FORMAT.
10748         * config/m68k/m68k-modes.def (SF, DF): Define to use
10749         motorola_single_format and motorola_double_format, resp.
10750         * real.c (motorola_single_format): Renamed from
10751         coldfire_single_format.
10752         (motorola_double_format): Renamed from coldfire_double_format.
10753         (encode_ieee_extended): Generate a proper canonical NaN image
10754         respecting canonical_nan_lsbs_set.
10755         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
10756         true.
10757         * real.h: Adjust declarations.
10759 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
10761         PR target/32163
10762         * config/sh/sh.md (symGOT_load): Don't schedule insns when
10763         the symbol is generated with the stack protector.
10765 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
10767         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
10768         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
10769         "interrupt".
10770         * doc/extend.texi (interrupt): Mention m68k.
10772 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
10774         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
10775         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
10776         (ix86_expand_sse_pcmpestr): Do not check operands for
10777         "register_operand", when insn operand predicate is "register_operand".
10778         (ix86_expand_sse_pcmpistr): Ditto.
10780 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
10781             Uros Bizjak  <ubizjak@gmail.com>
10783         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
10784         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
10785         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
10786         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
10787         * config/i386/constraints.md ("z"): New register constraint
10788         for members of SSE_FIRST_REG class.
10789         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
10790         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
10791         SSE_FIRST_REG class.
10792         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
10793         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
10794         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
10795         (IX86_BUILTIN_PCMPESTRM128): Likewise.
10796         (IX86_BUILTIN_PCMPESTRA128): Likewise.
10797         (IX86_BUILTIN_PCMPESTRC128): Likewise.
10798         (IX86_BUILTIN_PCMPESTRO128): Likewise.
10799         (IX86_BUILTIN_PCMPESTRS128): Likewise.
10800         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
10801         (IX86_BUILTIN_PCMPISTRI128): Likewise.
10802         (IX86_BUILTIN_PCMPISTRM128): Likewise.
10803         (IX86_BUILTIN_PCMPISTRA128): Likewise.
10804         (IX86_BUILTIN_PCMPISTRC128): Likewise.
10805         (IX86_BUILTIN_PCMPISTRO128): Likewise.
10806         (IX86_BUILTIN_PCMPISTRS128): Likewise.
10807         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
10808         (struct builtin_description): Change "flag" field to unsigned.
10809         (bdesc_pcmpestr): New builtin description table.
10810         (bdesc_pcmpistr): Likewise.
10811         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
10812         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
10813         Initialize pcmp[ei]str[im] insns for SSE4.2.
10814         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
10815         (ix86_expand_sse_pcmpistr): Likewise.
10816         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
10817         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
10818         (UNSPEC_PCMPISTR): Likewise.
10819         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
10820         (sse4_2_pcmpestri):New isns pattern.
10821         (sse4_2_pcmpestrm): Likewise.
10822         (sse4_2_pcmpestr_cconly): Likewise.
10823         (sse4_2_pcmpistr): New insn patern and splitter.
10824         (sse4_2_pcmpistri):New isns pattern.
10825         (sse4_2_pcmpistrm): Likewise.
10826         (sse4_2_pcmpistr_cconly): Likewise.
10827         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
10828         in SSE4.2.
10830 2007-06-01  David Daney  <ddaney@avtrex.com>
10832         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
10833         LOADGP_ABSOLUTE and not binds_local_p.
10835 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
10837         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
10839 2007-06-01  Ian Lance Taylor  <iant@google.com>
10841         * tree-vrp.c (compare_name_with_value): Always set
10842         used_strict_overflow if we get a result from the variable itself.
10844 2007-06-01  Ian Lance Taylor  <iant@google.com>
10846         PR rtl-optimization/31455
10847         * lower-subreg.c (find_decomposable_subregs): Don't decompose
10848         subregs which have a cast between modes which are not tieable.
10850 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
10852         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
10853         breaks after return statements.
10855 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
10857         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
10858         only after no_new_pseudos.
10860 2007-05-31  Eric Christopher  <echristo@apple.com>
10862         * expr.c (convert_move): Assert that we don't have a BLKmode
10863         operand.
10864         (store_expr): Handle BLKmode moves by calling emit_block_move.
10866 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
10868         * c-typeck.c (build_indirect_ref): Include type in error message.
10869         (build_binary_op): Pass types to binary_op_error.
10870         * c-common.c (binary_op_error): Take two type arguments, print out
10871         types with error.
10872         * c-common.h (binary_op_error): Update prototype.
10874 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
10876         * config/i386/i386.c: Correct coments on -mno-sse4.
10878 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
10880         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
10881         (x86_64-*-*): Likewise.
10882         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
10883         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
10884         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
10885         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
10886         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
10887         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
10888         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
10889         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
10890         (OPTION_MASK_ISA_SSE4): Likewise.
10891         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
10892         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
10893         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
10894         (override_options): Support SSE4.2.
10895         (ix86_build_const_vector): Support SImode and DImode.
10896         (ix86_build_signbit_mask): Likewise.
10897         (ix86_expand_int_vcond): Support V2DImode.
10898         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
10899         (IX86_BUILTIN_CRC32HI): Likewise.
10900         (IX86_BUILTIN_CRC32SI): Likewise.
10901         (IX86_BUILTIN_CRC32DI): Likewise.
10902         (IX86_BUILTIN_PCMPGTQ): Likewise.
10903         (bdesc_crc32): Likewise.
10904         (bdesc_sse_3arg): Likewise.
10905         (ix86_expand_crc32): Likewise.
10906         (ix86_init_mmx_sse_builtins): Support SSE4.2.
10907         (ix86_expand_builtin): Likewise.
10908         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
10909         __SSE4_2__ for -msse4.2.
10910         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
10911         (CRC32MODE): Likewise.
10912         (crc32modesuffix): Likewise.
10913         (crc32modeconstraint): Likewise.
10914         (sse4_2_crc32<mode>): Likewise.
10915         (sse4_2_crc32di): Likewise.
10916         * config/i386/i386.opt (msse4.2): New for SSE4.2.
10917         (msse4): Likewise.
10918         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
10919         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
10920         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
10921         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
10922         (vcondu<mode>): Likewise.
10923         * doc/extend.texi: Document SSE4.2 built-in functions.
10924         * doc/invoke.texi: Document -msse4.2/-msse4.
10926 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
10928         PR tree-optimization/32160
10929         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
10930         variable as gimple reg.
10931         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
10933 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
10935         * gcc.c (main): Don't consider linker options when issuing the
10936         warning about a linker input file not being used.
10938 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10940         * tree-vrp.c (compare_names): Initialize sop.
10942 2007-05-30  Dirk Mueller  <dmueller@suse.de>
10944         * cgraphunit.c (cgraph_analyze_function): Remove
10945         computation of inline parameters.
10947 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
10949         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
10951 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
10953         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
10954         Add vx-common.h.  Include vxworks.h between vx-common.h and
10955         arm/vxworks.h.
10956         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
10957         redefining.
10958         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
10959         (TARGET_ASM_DESTRUCTOR): Likewise.
10960         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
10961         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
10962         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
10963         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
10964         (VXWORKS_ENDIAN_SPEC): Define.
10965         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
10966         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
10967         VXWORKS_* equivalents.
10968         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
10969         (ASM_FILE_START): Delete.
10970         (TARGET_VERSION): Reformat.
10971         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
10972         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
10973         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
10974         (FPBIT, DPBIT): Define.
10975         (fp-bit.c, dp-bit.c): New rules.
10976         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
10977         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
10978         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
10979         * config/arm/arm.h: Include vxworks-dummy.h.
10980         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
10981         Mark with ATTRIBUTE_UNUSED.
10982         (arm_override_options): Do not allow VxWorks RTP PIC to be used
10983         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
10984         make it incompatible with -msingle-pic-base.
10985         (arm_function_ok_for_sibcall): Return false for calls that might
10986         go through a VxWorks PIC PLT entry.
10987         (require_pic_register): New function, split out from...
10988         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
10989         for VxWorks RTPs.
10990         (arm_load_pic_register): Handle the VxWorks RTP initialization
10991         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
10992         (arm_emit_call_insn): New function.
10993         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
10994         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
10995         (pic_offset_arm): New pattern.
10996         (call, call_value): Use arm_emit_call_insn.
10997         (call_internal, call_value_internal): New expanders.
10998         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
10999         VxWorks unless __PIC__.
11001 2007-05-30  Eric Christopher  <echristo@gmail.com>
11003         * genrecog.c: Include regs.h in generated file.
11004         * genemit.c: Ditto. Fix up formatting.
11005         * config/mn10300/constraints.md: New.
11006         * config/mn10300/mn10300.md: Include.
11007         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
11008         Fix up for removed macro.
11009         * config/mn10300/predicates.md (call_address_operand):  Ditto.
11010         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
11011         (CONST_OK_FOR_I): Ditto.
11012         (CONST_OK_FOR_J): Ditto.
11013         (CONST_OK_FOR_K): Ditto.
11014         (CONST_OK_FOR_L): Ditto.
11015         (CONST_OK_FOR_M): Ditto.
11016         (CONST_OK_FOR_N): Ditto.
11017         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
11018         (OK_FOR_Q): Ditto.
11019         (OK_FOR_R): Ditto.
11020         (OK_FOR_T): Ditto.
11021         (EXTRA_CONSTRAINT): Ditto.
11023 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
11025         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
11026         Remove defines.
11027         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
11028         OPTION_MASK_ISA_64BIT.
11029         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
11031 2007-05-30  Richard Guenther  <rguenther@suse.de>
11033         PR middle-end/32152
11034         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
11035         types for comparison.
11036         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
11037         with original typed arguments.
11038         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
11040 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
11042         PR tree-optimization/31769
11043         * except.c (duplicate_eh_regions): Clear prev_try if
11044         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
11046 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
11048         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
11049         * tree-ssa-sink.c (statement_sink_location): Return basic block and
11050         bsi of the location where statements should be inserted.
11051         (sink_code_in_bb): Take bsi from statement_sink_location.
11052         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
11053         instead of bsi_start.
11054         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
11055         bsi_insert_after.
11056         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
11057         (bsi_move_before): Document inconsistency with bsi_move_after.
11058         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
11060 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
11062         * config/i386/i386.h (TARGET_ABM): New define.
11063         (TARGET_POPCNT): Ditto.
11064         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
11065         New temporary defines to redefine from OPTION_ISA_* defines.
11066         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
11067         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
11068         (ix86_isa_flags): New extern int declaration.
11069         (TARGET_SUBTARGET_DEFAULT): New define.
11070         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
11071         (TARGET_SUBTARGET32_DEFAULT): Ditto.
11072         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
11073         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
11074         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
11075         * config/i386/darwin.h: Change TARGET_64BIT define to
11076         OPTION_ISA_64BIT.
11078         * config/i386/i386.opt (m3dnowa): Define as undocumented option
11079         using existing "ix86_isa_flags" varible.
11080         (m32, m64): Use existing "ix86_isa_flags" variable.
11081         (mmmx, m3dnow): Ditto.
11082         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
11083         (mabm): Define as non-negative option using "x86_abm" variable.
11084         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
11086         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
11087         Rewrite feature test bitmap.
11088         (ix86_isa_flags): New initialized global int varible.
11089         (ix86_isa_flags_explicit): New static int variable.
11090         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
11091         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
11092         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
11093         target_flags_explicit.
11094         (override_options): Remove "target_enable" and "target_disable" fields
11095         from "struct ptt". Update processor_target_table accordingly. Remove
11096         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
11097         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
11098         "target_flags" and "ix86_isa_flags_explicit" instead of
11099         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
11100         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
11101         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
11102         to true when either of PTA_POPCNT or PTA_ABM is set in
11103         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
11104         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
11105         processor_alias_table flags entry.  Remove handling of
11106         "target_enable" and "target_disable" fields of processor_target_table.
11107         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
11108         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
11109         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
11110         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
11111         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
11112         "target_flags".
11113         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
11115 2007-05-29  David Daney  <ddaney@avtrex.com>
11117         PR gcc/31975
11118         * config/mips/mips.c (mips_output_mi_thunk): Emit
11119         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
11121 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
11122         * config/i386/i386.c (ix86_function_regparm): Added checking of
11123         ix86_force_align_arg_pointer to determine the number of
11124         register parameters.
11126 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
11128         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
11129         (SET_DR_MISALIGNMENT): New.
11130         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
11131         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
11132         Use SET_DR_MISALIGNMENT.
11133         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
11134         pointer.
11135         * tree-data-ref.c (create_data_ref, compute_all_dependences,
11136         find_loop_nest): Export.
11137         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
11138         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
11139         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
11140         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
11141         New macros.
11142         (struct mem_ref): Add field reuse_distance.
11143         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
11144         Initialize reuse_distance field.
11145         (issue_prefetch_ref): Select temporality of prefetch according to
11146         reuse_distance.
11147         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
11148         self_reuse_distance, determine_loop_nest_reuse): New functions.
11149         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
11150         (tree_ssa_prefetch_arrays): Dump L2 cache size.
11151         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
11152         dependency.
11154 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
11156         * tree-ssa-alias.c: Add aliasing overview.
11158 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
11159             Danny Smith  <dannysmith@users.sourceforge.net>
11161         PR target/29498
11162         * config/i386/t-crtfm: Compile crtfastmath.o with
11163         -minline-all-stringops.
11164         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
11165         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
11167 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11169         * doc/md.texi: Document constraints on HP PA-RISC.
11171         * pa/constraints.md: New file.
11172         * pa.md: Include constraints.md.
11173         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
11174         (integer_store_memory_operand, ldil_cint_p): New functions.
11175         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
11176         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
11177         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
11178         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
11179         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
11181 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
11183         PR c/31339
11184         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
11185         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
11186         case POSTDECREMENT_EXPR>): Return the error_mark_node
11187         if either the real or imaginary parts would an
11188         error_mark_node.
11190 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
11192         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
11193         name when we remove it from a call.
11195 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
11197         * targhooks.c (default_narrow_bitfield): Remove.
11198         * targhooks.h: Remove the prototype for
11199         default_narrow_bitfield.
11201         * langhooks-def.h: Remove the prototype for
11202         hook_get_alias_set_0.
11203         * langhooks.c (hook_get_alias_set_0): Remove.
11205         * global.c (EXECUTE_IF_CONFLICT): Remove.
11207 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11209         PR tree-opt/32100
11210         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
11211         return true when truth_value_p is true and the type
11212         is of signed:1.
11214 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
11216         * doc/install.texi (Prerequisites): We no longer require Autoconf
11217         2.13 for the top-level.
11219 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
11221         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
11222         memory access via x86_expand_vector_move_misalign() only for
11223         TImode values on 32-bit targets.
11225 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
11227         * matrix-reorg.c: New file. Implement matrix flattening and
11228         transposing optimization.
11229         * tree-pass.h: Add matrix reorg pass.
11230         * common.opt: Add fipa-mreorg flag.
11231         * Makefile.in: Add matrix-reorg.c.
11232         * passes.c: Add matrix reorg pass.
11233         * varpool.c (add_new_static_var): New function.
11234         * cgraph.h (add_new_static_var): Declare.
11236 2007-05-27  Eric Christopher  <echristo@apple.com>
11238         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
11239         sp_offset depending on stack size. Save r12 depending
11240         on registers we're saving later.
11241         (rs6000_emit_epilogue): Update sp_offset depending only
11242         on stack size.
11244 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
11246         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
11247         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
11248         * ifcvt.c (if_convert): Ditto.
11249         * tree-ssa-threadupdate.c (thread_block): Ditto.
11250         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
11251         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
11252         verify_loop_closed_ssa): Check number_of_loops instead of
11253         current_loops.
11254         * predict.c (tree_estimate_probability): Ditto.
11255         * tree-if-conv.c (main_tree_if_conversion): Ditto.
11256         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
11257         * modulo-sched.c (sms_schedule): Ditto.
11258         * tree-scalar-evolution.c (scev_const_prop): Ditto.
11259         (scev_finalize): Do not do anything if scev analysis was not
11260         initialized.
11261         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
11262         current_loops == NULL.
11263         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
11264         * loop-init.c (loop_optimizer_init): Do not free current_loops when
11265         there are no loops.
11266         (loop_optimizer_finalize): Assert that loops were analyzed.
11267         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
11268         rtl_doloop): Check number_of_loops instead of current_loops.
11269         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
11270         current_loops == NULL.
11271         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
11272         gate_tree_vectorize tree_linear_transform, check_data_deps,
11273         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
11274         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
11275         Check number_of_loops instead of current_loops.
11276         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
11277         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
11278         free loops if available.
11279         (execute_pre): Do not pass do_fre to fini_pre.
11281 2007-05-27  Tobias Burnus  <burnus@net-b.de>
11283         PR middle-end/32083
11284         * real.c (mpfr_from_real): Fix sign of -Inf.
11286 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
11288         * tree-vect-transform.c (vectorizable_conversion): Initialize
11289         tree_code variables to ERROR_MARK.
11290         (vectorizable_type_demotion): Likewise.
11291         (vectorizable_type_promotion): Likewise.
11293 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
11295         PR target/32065
11296         * config/i386/i386.md (movti): Handle push operands via
11297         ix86_expand_push().
11299 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
11301         * basic-block.h: Remove the prototype for merge_seq_blocks.
11302         * cfgcleanup.c (merge_seq_blocks): Remove.
11304         * tree-flow.h: Remove the prototype for is_aliased_with.
11305         * tree-ssa-alias.c (is_aliased_with): Remove.
11307 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
11309         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
11311         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
11313         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
11314         ix86_expand_sse4_unpack if SSE4.1 is enabled.
11315         (vec_unpacks_hi_v16qi): Likewise.
11316         (vec_unpacku_lo_v16qi): Likewise.
11317         (vec_unpacks_lo_v16qi): Likewise.
11318         (vec_unpacku_hi_v8hi): Likewise.
11319         (vec_unpacks_hi_v8hi): Likewise.
11320         (vec_unpacku_lo_v8hi): Likewise.
11321         (vec_unpacks_lo_v8hi): Likewise.
11322         (vec_unpacku_hi_v4si): Likewise.
11323         (vec_unpacks_hi_v4si): Likewise.
11324         (vec_unpacku_lo_v4si): Likewise.
11325         (vec_unpacks_lo_v4si): Likewise.
11327 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
11329         * c-typeck.c, config/arm/arm.c, config/darwin.c,
11330         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
11331         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
11332         follow spelling conventions in various
11333         warning/error/diagnostic messages.
11335         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
11336         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
11337         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
11338         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
11339         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
11340         * doc/tm.texi: Follow spelling conventions.
11342 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11344         PR tree-opt/32090
11345         * tree-ssa-forwprop.c
11346         (forward_propagate_addr_into_variable_array_index): Remove
11347         the lhs argument.  Use the type of def_rhs instead of lhs.
11348         (forward_propagate_addr_expr_1): Update use of
11349         forward_propagate_addr_into_variable_array_index.
11351 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
11352             Nigel Stephens  <nigel@mips.com>
11354         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
11355         function attributes, "far" being an alias for "long_call".
11356         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
11357         (mips_near_type_p, mips_far_type_p): New.
11358         (mips_comp_type_attributes): New function to check that attributes
11359         attached to a function type are compatible.
11360         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
11361         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
11362         to the target function of the thunk.
11363         (mips_encode_section_info): Check for "near" and "far" function
11364         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
11366         * config/mips/predicates.md (const_call_insn_operand): Test only
11367         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
11369         * doc/extend.texi (Function Attributes): Document MIPS "near" and
11370         "far" attributes.
11372         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
11373         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
11374         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
11375         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
11377 2007-05-25  Eric Christopher  <echristo@apple.com>
11379         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
11380         to x86-darwin configurations.
11381         * config/i386/t-darwin: Add softfp support.
11382         * config/i386/t-darwin64: Ditto.
11383         * config/i386/sfp-machine.h: If mach then don't use
11384         aliasing, emit a stub to call.
11386 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
11388         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
11389         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
11390         tree-predcom.c, tree-ssa-alias-warnings.c,
11391         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
11392         comment typos.  Follow spelling conventions.
11393         * doc/cpp.texi, doc/invoke.texi: Fix typos.
11395 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
11397         PR target/32065
11398         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
11399         constants into memory.  Expand unaligned memory references for
11400         SSE modes via x86_expand_vector_move_misalign() function.
11402 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
11404         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
11405         "memory" attribute for "sseishft" type insn without operands[2].
11407 2007-05-25  Dirk Mueller  <dmueller@suse.de>
11408             Marcus Meissner <meissner@suse.de>
11410         * doc/extend.texi (alloc_size): New attribute.
11411         * c-common.c (handle_alloc_size_attribute): New.
11412         * tree-object-size.c (alloc_object_size): Use alloc_size
11413         attribute, if available.
11415 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
11417         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
11418         with MASK_SSE2.
11419         (__builtin_ia32_vec_ext_v2di): Likewise.
11420         (__builtin_ia32_vec_ext_v4si): Likewise.
11421         (__builtin_ia32_vec_ext_v8hi): Likewise.
11422         (__builtin_ia32_vec_ext_v16qi): Likewise.
11423         (__builtin_ia32_vec_set_v8hi): Likewise.
11425 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
11427         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
11429 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
11431         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
11432         (arm_is_longcall_p): Rename to...
11433         (arm_is_long_call_p): ...this.  Take a single tree argument and
11434         return a bool.
11435         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
11436         (CUMULATIVE_ARGS): Remove call_cookie.
11437         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
11438         (ENCODED_LONG_CALL_ATTR_P): Delete.
11439         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
11440         LONG_CALL_FLAG_CHAR cases.
11441         (ARM_DECLARE_FUNCTION_SIZE): Delete.
11442         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
11443         ARM_DECLARE_FUNCTION_SIZE.
11444         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
11445         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
11446         (arm_encode_call_attribute, current_file_function_operand): Delete.
11447         (arm_function_in_section_p): New function.
11448         (arm_is_longcall_p): Rename to...
11449         (arm_is_long_call_p): ...this.  Take the target function as a single
11450         argument and return a bool.  Do not rely on call cookies.  Check
11451         whether the target symbol is in the same section as the current
11452         function, not just the same compilation unit.
11453         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
11454         (arm_encode_section_info): Don't encode a call type.
11455         * config/arm/arm.md (call, call_value): Update calls to
11456         arm_is_long(_)call_p.  Simplify logic.
11457         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
11458         Update calls to arm_is_long(_)call_p.
11460 2007-05-25  Richard Guenther  <rguenther@suse.de>
11462         PR tree-optimization/31982
11463         * tree-ssa-forwprop.c
11464         (forward_propagate_addr_into_variable_array_index): Handle arrays
11465         with element size one.
11467 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11469         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
11470         (umulsi3_highpart): Likewise.
11472 2007-05-24  Ian Lance Taylor  <iant@google.com>
11474         PR rtl-optimization/32069
11475         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
11476         is NULL.
11478 2007-05-24  Ollie Wild  <aaw@google.com>
11480         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
11481         description.
11483 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
11485         * postreload-gcse.c (reg_changed_after_insn_p): New function.
11486         (oprs_unchanged_p): Use it to check all registers in a REG.
11487         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
11488         (reg_set_between_after_reload_p): Delete.
11489         (reg_used_between_after_reload_p): Likewise.
11490         (reg_set_or_used_since_bb_start): Likewise.
11491         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
11492         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
11493         Use reg_set_between_p instead of reg_set_between_after_reload_p.
11494         * rtlanal.c (reg_set_p): Check whether REG overlaps
11495         regs_invalidated_by_call, rather than just checking the
11496         membership of REGNO (REG).
11498 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
11500         * doc/passes.texi: Document predictive commoning.
11501         * doc/invoke.texi (-fpredictive-commoning): Document.
11502         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
11503         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
11504         adding indices to the generated name.
11505         (schedule_sm): Pass 0 to get_lsm_tmp_name.
11506         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
11507         * tree-pretty-print.c (op_symbol_1): Renamed to ...
11508         (op_symbol_code): ... and exported.
11509         (dump_omp_clause, op_symbol): Use op_symbol_code
11510         instead of op_symbol_1.
11511         * tree-pass.h (pass_predcom): Declare.
11512         * timevar.def (TV_PREDCOM): New timevar.
11513         * tree-ssa-loop.c (run_tree_predictive_commoning,
11514         gate_tree_predictive_commoning, pass_predcom): New.
11515         * tree-data-ref.c (find_data_references_in_loop): Find the
11516         references in dominance order.
11517         (canonicalize_base_object_address): Ensure that the result has
11518         pointer type.
11519         (dr_analyze_innermost): Export.
11520         (create_data_ref): Code to fail for references with invariant
11521         address moved ...
11522         (find_data_references_in_stmt): ... here.
11523         * tree-data-ref.h (dr_analyze_innermost): Declare.
11524         * tree-affine.c: Include tree-gimple.h and hashtab.h.
11525         (aff_combination_find_elt, name_expansion_hash,
11526         name_expansion_eq, tree_to_aff_combination_expand,
11527         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
11528         New functions.
11529         * tree-affine.h (aff_combination_constant_multiple_p,
11530         tree_to_aff_combination_expand): Declare.
11531         * tree-predcom.c: New file.
11532         * common.opt (fpredictive-commoning): New option.
11533         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
11534         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
11535         * Makefile.in (tree-predcom.o): Add.
11536         (tree-affine.o): Add TREE_GIMPLE_H dependency.
11537         * passes.c (init_optimization_passes):  Add dceloop after
11538         copy propagation in loop optimizer.  Add predictive commoning
11539         to loop optimizer passes.
11541 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11543         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
11544         default hook.
11546 2007-05-24  Jan Hubicka  <jh@suse.cz>
11548         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
11549         statistics.
11550         (genheader): Include statistics.h.
11552         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
11553         notes are gone.
11554         * print-rtl.c (flag_dump_unnumbered): Update comments.
11555         (print_rtl): Fix my previous change.
11556         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
11557         specific data.
11559 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
11561         PR middle-end/32018
11562         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
11563         set_loop_copy.
11564         (thread_through_all_blocks): Call initialize_original_copy_tables
11565         and free_original_copy_tables.
11566         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
11567         Use set_loop_copy.
11568         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
11569         * cfghooks.c (duplicate_block): Use get_loop_copy.
11570         * cfg.c: Include cfgloop.h.
11571         (loop_copy): New hash table.
11572         (initialize_original_copy_tables): Initialize loop_copy table.
11573         (free_original_copy_tables): Free loop_copy table.
11574         (copy_original_table_clear, copy_original_table_set,
11575         set_loop_copy, get_loop_copy): New functions.
11576         (set_bb_original, set_bb_copy): Use copy_original_table_set.
11577         * cfgloop.h (struct loop): Remove copy field.
11578         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
11579         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
11581 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11583         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
11584         -msse/-msse2/-msse3.
11586 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11588         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
11589         __builtin_ia32_vec_set_v2di with MASK_64BIT.
11591 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
11593         PR target/27067
11594         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
11595         * targhooks.h (default_mangle_decl_assembler_name): Declare
11596         default hook.
11597         * targhooks.c (default_mangle_decl_assembler_name): Define
11598         default hook.
11599         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
11600         default hook.
11601         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
11602         * langhooks.c (lhd_set_decl_assembler_name): Call
11603         targetm.mangle_decl_assembler_name for names with global scope.
11605         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
11606         default.
11607         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
11608         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
11609         Declare.
11610         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
11611         New. Factored out of i386_pe_encode_section_info.
11612         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
11613         Move check for prior decoration of stdcall
11614         symbols to i386_pe_encode_section_info.
11615         (i386_pe_encode_section_info): Adjust call to
11616         gen_stdcall_or_fastcall_suffix.  Use
11617         i386_pe_maybe_mangle_decl_assembler_name, if needed.
11618         (i386_pe_mangle_decl_assembler_name): New. Wrap
11619         i386_pe_maybe_mangle_decl_assembler_name.
11621 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
11623         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
11624         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
11625         * langhooks.c (get_signed_or_unsigned_type): Don't check for
11626         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
11627         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
11628         TYPE_UNSIGNED.
11630 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
11631             Nigel Stephens  <nigel@mips.com>
11632             Richard Sandiford  <richard@codesourcery.com>
11634         Fix up MIPS16 hard float and add support for complex.
11636         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
11637         (TARGET_SOFT_FLOAT_ABI): New.
11638         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
11639         __mips_soft_float to reflect the ABI in use, not whether the
11640         FPU is directly accessible (e.g., in MIPS16 mode).
11641         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
11642         (UNITS_PER_FPVALUE): Likewise.
11644         * config/mips/mips.c (mips_expand_call): Remove redundant
11645         TARGET_MIPS16 check.
11646         (mips_arg_regno): New.
11647         (function_arg_advance): When setting bits in cum->fp_code for
11648         MIPS16, don't subtract 1 from cum->arg_number, since it is now
11649         zero-based.
11650         (function_arg): Use mips_arg_regno.
11651         (mips_return_mode_in_fpr_p): New.
11652         (mips16_call_stub_mode_suffix): New.
11653         (mips16_cfun_returns_in_fpr_p): New.
11654         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
11655         (mips_output_function_prologue): Test mips16_hard_float, not
11656         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
11657         (mips_expand_epilogue): Call MIPS16 helper routines to copy
11658         return value into a floating-point register.
11659         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
11660         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
11661         (mips16_fp_args): Handle MIPS32r2 ISA which supports
11662         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
11663         word of double arguments from or to the high bits of 64-bit
11664         floating point registers.
11665         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
11666         (mips16_fpret_double): New helper function.
11667         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
11668         support for complex modes.  Fill in DECL_RESULT for stubdecl.
11669         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
11671         * config/mips/mips16.S
11672         (RET, ARG1, ARG2): New.
11673         (MERGE_GPRf, MERGE_GPRt): New.
11674         (DELAYt, DELAYf): New.
11675         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
11676         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
11677         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
11678         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
11679         (SFOP): Renamed to...
11680         (OPSF3): This, and macro-ified.  Updated all uses.
11681         (SFOP2): Renamed to...
11682         (OPSF2): This, and macro-ified.  Updated all uses.
11683         (SFCMP): Renamed to...
11684         (CMPSF): This, and macro-ified.  Updated all uses.
11685         (SFREVCMP): Renamed to...
11686         (REVCMPSF): This, and macro-ified.  Updated all uses.
11687         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
11688         (LDDBL1, LDDBL2, RETDBL): Deleted.
11689         (DFOP): Renamed to...
11690         (OPDF3): This, and macro-ified.  Updated all uses.
11691         (DFOP2): Renamed to...
11692         (OPDF2): This, and macro-ified.  Updated all uses.
11693         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
11694         (DFCMP): Renamed to...
11695         (CMPDF): This, and macro-ified.  Updated all uses.
11696         (DFREVCMP): Renamed to...
11697         (REVCMPDF): This, and macro-ified.  Updated all uses.
11698         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
11699         (RET_FUNCTION): New.
11700         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
11701         (__mips16_ret_sc, __mips16_ret_dc): New.
11702         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
11703         STUB_ARGS_6, STUB_ARGS_10): New.
11704         (CALL_STUB_NO_RET): New.
11705         (__mips16_call_stub_1): Macro-ified.
11706         (__mips16_call_stub_5): Macro-ified.
11707         (__mips16_call_stub_2): Macro-ified.
11708         (__mips16_call_stub_6): Macro-ified.
11709         (__mips16_call_stub_9): Macro-ified.
11710         (__mips16_call_stub_10): Macro-ified.
11711         (CALL_STUB_RET): New.
11712         (__mips16_call_stub_sf_0): Macro-ified.
11713         (__mips16_call_stub_sf_1): Macro-ified.
11714         (__mips16_call_stub_sf_5): Macro-ified.
11715         (__mips16_call_stub_sf_2): Macro-ified.
11716         (__mips16_call_stub_sf_6): Macro-ified.
11717         (__mips16_call_stub_sf_9): Macro-ified.
11718         (__mips16_call_stub_sf_10): Macro-ified.
11719         (__mips16_call_stub_df_0): Macro-ified.
11720         (__mips16_call_stub_df_1): Macro-ified.
11721         (__mips16_call_stub_df_5): Macro-ified.
11722         (__mips16_call_stub_df_2): Macro-ified.
11723         (__mips16_call_stub_df_6): Macro-ified.
11724         (__mips16_call_stub_df_9): Macro-ified.
11725         (__mips16_call_stub_df_10): Macro-ified.
11726         (__mips16_call_stub_sc_0): New.
11727         (__mips16_call_stub_sc_1): New.
11728         (__mips16_call_stub_sc_5): New.
11729         (__mips16_call_stub_sc_2): New.
11730         (__mips16_call_stub_sc_6): New.
11731         (__mips16_call_stub_sc_9): New.
11732         (__mips16_call_stub_sc_10): New.
11733         (__mips16_call_stub_dc_0): New.
11734         (__mips16_call_stub_dc_1): New.
11735         (__mips16_call_stub_dc_5): New.
11736         (__mips16_call_stub_dc_2): New.
11737         (__mips16_call_stub_dc_6): New.
11738         (__mips16_call_stub_dc_9): New.
11739         (__mips16_call_stub_dc_10): New.
11741         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
11742         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
11743         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
11745 2007-05-23  Ian Lance Taylor  <iant@google.com>
11747         * doc/invoke.texi (Invoking GCC): Document that the order of the
11748         -l option matters.
11750 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
11752         PR target/30987
11753         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
11754         * config/score/predicate.md (const_pow2, const_npow2): Remove.
11755         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
11756         undef.
11758         PR target/30474
11759         * config/score/score.c (score_print_operand): Make sure that only
11760         lower bits are used.
11762 2007-05-22  Ian Lance Taylor  <iant@google.com>
11764         * tree-vrp.c (avoid_overflow_infinity): New static function,
11765         broken out of set_value_range_to_value.
11766         (set_value_range_to_value): Call avoid_overflow_infinity.
11767         (extract_range_from_assert): Likewise.
11769 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11771         PR middle-end/31095
11772          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
11773         change the type before looking for a COMPOUND_EXPR.
11775 2007-05-22  Ian Lance Taylor  <iant@google.com>
11777         * lower-subreg.c (decompose_multiword_subregs): If we change an
11778         insn, call remove_retval_note on it.
11780 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
11782         * regs.h (end_hard_regno): New function.
11783         (END_HARD_REGNO, END_REGNO): New macros.
11784         (add_to_hard_reg_set): New function.
11785         (remove_from_hard_reg_set): Likewise.
11786         (in_hard_reg_set_p): Likewise.
11787         (overlaps_hard_reg_set_p): Likewise.
11788         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
11789         (note_btr_set): Use END_HARD_REGNO.
11790         * caller-save.c (setup_save_areas): Use end_hard_regno.
11791         (mark_set_regs): Use END_HARD_REGNO.
11792         (add_stored_regs): Use end_hard_regno.
11793         (mark_referenced_regs): Use add_to_hard_reg_set.
11794         * combine.c (update_table_tick): Use END_REGNO.
11795         (record_value_for_reg): Likewise.
11796         (record_dead_and_set_regs): Likewise.
11797         (get_last_value_validate): Likewise.
11798         (use_crosses_set_p): Likewise.
11799         (reg_dead_at_p_1): Likewise.
11800         (reg_dead_at_p): Likewise.
11801         (mark_used_regs_combine): Use add_to_hard_reg_set.
11802         (move_deaths): Use END_HARD_REGNO.
11803         (reg_bitfield_target_p): Use end_hard_regno.
11804         (distribute_notes): Use END_HARD_REGNO.
11805         * cse.c (mention_regs): Use END_REGNO.
11806         (insert): Use add_to_hard_reg_set.
11807         (invalidate): Use END_HARD_REGNO.
11808         (invalidate_for_call): Likewise.
11809         (exp_equiv_p): Use END_REGNO.
11810         (cse_insn): Likewise.
11811         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
11812         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
11813         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
11814         * function.c (keep_stack_depressed): Use end_hard_regno.
11815         * global.c (global_alloc): Use end_hard_regno.
11816         (global_conflicts): Use add_to_hard_reg_set instead of
11817         mark_reg_live_nc.
11818         (find_reg): Likewise.
11819         (mark_reg_store): Likewise.
11820         (mark_reg_conflicts): Likewise.
11821         (mark_reg_death): Use remove_from_hard_reg_set.
11822         (mark_reg_live_nc): Delete.
11823         (set_preference): Use end_hard_regno.
11824         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
11825         remove_from_hard_reg_set.
11826         (post_mark_life): Use add_to_hard_reg_set.
11827         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
11828         (reg_becomes_live): Use add_to_hard_reg_set.
11829         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
11830         (peep2_find_free_register): Use add_to_hard_reg_set.
11831         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
11832         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
11833         * regrename.c (note_sets): Use add_to_hard_reg_set.
11834         (clear_dead_regs): Use remove_from_hard_reg_set.
11835         (regrename_optimize): Use add_to_hard_reg_set.
11836         (find_oldest_value_reg): Use in_hard_reg_set_p.
11837         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
11838         (hard_reg_set_here_p): Use end_hard_regno.
11839         (decompose): Likewise.
11840         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
11841         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
11842         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
11843         (mark_home_live): Use end_hard_regno.
11844         (spill_hard_reg): Likewise.
11845         (clear_reload_reg_in_use): Likewise.
11846         * reorg.c (delete_prior_computation): Use END_REGNO.
11847         * resource.c (update_live_status): Use END_HARD_REGNO.
11848         (mark_referenced_resources): Use add_to_hard_reg_set.
11849         (mark_set_resources): Likewise.
11850         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
11851         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
11852         (reg_overlap_mentioned_p): Likewise.
11853         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
11854         (covers_regno_no_parallel_p): Use END_REGNO.
11855         (find_regno_note): Likewise.
11856         (find_reg_fusage): Use END_HARD_REGNO.
11857         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
11858         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
11860 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
11862         * mode-switching.c (reg_dies): Change type of second argument to
11863         "HARD_REG_SET *".
11864         (optimize_mode_switching): Update accordingly.
11866 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
11868         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
11869         in favor of...
11870         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
11871         (hard_reg_set_empty_p): ...these new functions.
11872         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
11873         GO_IF_HARD_REG_SUBSET.
11874         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
11875         instead of GO_IF_HARD_REG_EQUAL.
11876         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
11877         instead of GO_IF_HARD_REG_EQUAL.
11878         * global.c (find_reg): Use hard_reg_set_empty_p instead of
11879         GO_IF_HARD_REG_SUBSET.
11880         (modify_reg_pav): Use hard_reg_set_empty_p instead of
11881         GO_IF_HARD_REG_EQUAL.
11882         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
11883         of GO_IF_HARD_REG_SUBSET.
11884         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
11885         instead of GO_IF_HARD_REG_EQUAL.
11886         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
11887         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
11888         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
11889         of GO_IF_HARD_REG_SUBSET,
11890         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
11891         GO_IF_HARD_REG_SUBSET.
11892         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
11893         instead of GO_IF_HARD_REG_EQUAL.
11894         * config/sh/sh.c (push_regs, calc_live_regs): Use
11895         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
11896         (hard_regs_intersect_p): Delete.
11898 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
11900         * doc/sourcebuild.texi (Test Directives) Add dg-message.
11902 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
11903             Richard Henderson  <rth@redhat.com>
11905         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
11906         extra_headers.
11907         (x86_64-*-*): Likewise.
11909         * i386/i386-modes.def (V2QI): New.
11911         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
11912         SSE4A.
11913         (override_options): Support SSE4.1.
11914         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
11915         (IX86_BUILTIN_BLENDPS): Likewise.
11916         (IX86_BUILTIN_BLENDVPD): Likewise.
11917         (IX86_BUILTIN_BLENDVPS): Likewise.
11918         (IX86_BUILTIN_PBLENDVB128): Likewise.
11919         (IX86_BUILTIN_PBLENDW128): Likewise.
11920         (IX86_BUILTIN_DPPD): Likewise.
11921         (IX86_BUILTIN_DPPS): Likewise.
11922         (IX86_BUILTIN_INSERTPS128): Likewise.
11923         (IX86_BUILTIN_MOVNTDQA): Likewise.
11924         (IX86_BUILTIN_MPSADBW128): Likewise.
11925         (IX86_BUILTIN_PACKUSDW128): Likewise.
11926         (IX86_BUILTIN_PCMPEQQ): Likewise.
11927         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
11928         (IX86_BUILTIN_PMAXSB128): Likewise.
11929         (IX86_BUILTIN_PMAXSD128): Likewise.
11930         (IX86_BUILTIN_PMAXUD128): Likewise.
11931         (IX86_BUILTIN_PMAXUW128): Likewise.
11932         (IX86_BUILTIN_PMINSB128): Likewise.
11933         (IX86_BUILTIN_PMINSD128): Likewise.
11934         (IX86_BUILTIN_PMINUD128): Likewise.
11935         (IX86_BUILTIN_PMINUW128): Likewise.
11936         (IX86_BUILTIN_PMOVSXBW128): Likewise.
11937         (IX86_BUILTIN_PMOVSXBD128): Likewise.
11938         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
11939         (IX86_BUILTIN_PMOVSXWD128): Likewise.
11940         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
11941         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
11942         (IX86_BUILTIN_PMOVZXBW128): Likewise.
11943         (IX86_BUILTIN_PMOVZXBD128): Likewise.
11944         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
11945         (IX86_BUILTIN_PMOVZXWD128): Likewise.
11946         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
11947         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
11948         (IX86_BUILTIN_PMULDQ128): Likewise.
11949         (IX86_BUILTIN_PMULLD128): Likewise.
11950         (IX86_BUILTIN_ROUNDPD): Likewise.
11951         (IX86_BUILTIN_ROUNDPS): Likewise.
11952         (IX86_BUILTIN_ROUNDSD): Likewise.
11953         (IX86_BUILTIN_ROUNDSS): Likewise.
11954         (IX86_BUILTIN_PTESTZ): Likewise.
11955         (IX86_BUILTIN_PTESTC): Likewise.
11956         (IX86_BUILTIN_PTESTNZC): Likewise.
11957         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
11958         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
11959         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
11960         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
11961         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
11962         (bdesc_ptest): New.
11963         (bdesc_sse_3arg): Likewise.
11964         (bdesc_2arg): Likewise.
11965         (bdesc_1arg): Likewise.
11966         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
11967         with 3 args.
11968         (ix86_expand_sse_4_operands_builtin): New.
11969         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
11970         smaller than 8 bits as the 2nd arg.
11971         (ix86_expand_sse_ptest): New.
11972         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
11973         (ix86_expand_vector_set): Support SSE4.1.
11974         (ix86_expand_vector_extract): Likewise.
11976         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
11977         __SSE4_1__ for -msse4.1.
11979         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
11980         (UNSPEC_INSERTPS): Likewise.
11981         (UNSPEC_DP): Likewise.
11982         (UNSPEC_MOVNTDQA): Likewise.
11983         (UNSPEC_MPSADBW): Likewise.
11984         (UNSPEC_PHMINPOSUW): Likewise.
11985         (UNSPEC_PTEST): Likewise.
11986         (UNSPEC_ROUNDP): Likewise.
11987         (UNSPEC_ROUNDS): Likewise.
11989         * config/i386/i386.opt (msse4.1): New for SSE4.1.
11991         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
11992         (const_pow2_1_to_32768_operand): Likewise.
11994         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
11995         file.
11997         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
11998         SSE4.1.
11999         (sse4_1_insertps): Likewise.
12000         (*sse4_1_extractps): Likewise.
12001         (sse4_1_ptest): Likewise.
12002         (sse4_1_mulv2siv2di3): Likewise.
12003         (*sse4_1_mulv4si3): Likewise.
12004         (*sse4_1_smax<mode>3): Likewise.
12005         (*sse4_1_umax<mode>3): Likewise.
12006         (*sse4_1_smin<mode>3): Likewise.
12007         (*sse4_1_umin<mode>3): Likewise.
12008         (sse4_1_eqv2di3): Likewise.
12009         (*sse4_1_pinsrb): Likewise.
12010         (*sse4_1_pinsrd): Likewise.
12011         (*sse4_1_pinsrq): Likewise.
12012         (*sse4_1_pextrb): Likewise.
12013         (*sse4_1_pextrb_memory): Likewise.
12014         (*sse4_1_pextrw_memory): Likewise.
12015         (*sse4_1_pextrq): Likewise.
12016         (sse4_1_blendpd): Likewise.
12017         (sse4_1_blendps): Likewise.
12018         (sse4_1_blendvpd): Likewise.
12019         (sse4_1_blendvps): Likewise.
12020         (sse4_1_dppd): Likewise.
12021         (sse4_1_dpps): Likewise.
12022         (sse4_1_movntdqa): Likewise.
12023         (sse4_1_mpsadbw): Likewise.
12024         (sse4_1_packusdw): Likewise.
12025         (sse4_1_pblendvb): Likewise.
12026         (sse4_1_pblendw): Likewise.
12027         (sse4_1_phminposuw): Likewise.
12028         (sse4_1_extendv8qiv8hi2): Likewise.
12029         (*sse4_1_extendv8qiv8hi2): Likewise.
12030         (sse4_1_extendv4qiv4si2): Likewise.
12031         (*sse4_1_extendv4qiv4si2): Likewise.
12032         (sse4_1_extendv2qiv2di2): Likewise.
12033         (*sse4_1_extendv2qiv2di2): Likewise.
12034         (sse4_1_extendv4hiv4si2): Likewise.
12035         (*sse4_1_extendv4hiv4si2): Likewise.
12036         (sse4_1_extendv2hiv2di2): Likewise.
12037         (*sse4_1_extendv2hiv2di2): Likewise.
12038         (sse4_1_extendv2siv2di2): Likewise.
12039         (*sse4_1_extendv2siv2di2): Likewise.
12040         (sse4_1_zero_extendv8qiv8hi2): Likewise.
12041         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
12042         (sse4_1_zero_extendv4qiv4si2): Likewise.
12043         (*sse4_1_zero_extendv4qiv4si2): Likewise.
12044         (sse4_1_zero_extendv2qiv2di2): Likewise.
12045         (*sse4_1_zero_extendv2qiv2di2): Likewise.
12046         (sse4_1_zero_extendv4hiv4si2): Likewise.
12047         (*sse4_1_zero_extendv4hiv4si2): Likewise.
12048         (sse4_1_zero_extendv2hiv2di2): Likewise.
12049         (*sse4_1_zero_extendv2hiv2di2): Likewise.
12050         (sse4_1_zero_extendv2siv2di2): Likewise.
12051         (*sse4_1_zero_extendv2siv2di2): Likewise.
12052         (sse4_1_roundpd): Likewise.
12053         (sse4_1_roundps): Likewise.
12054         (sse4_1_roundsd): Likewise.
12055         (sse4_1_roundss): Likewise.
12056         (mulv4si3): Don't expand for SSE4.1.
12057         (smax<mode>3): Likewise.
12058         (umaxv4si3): Likewise.
12059         (uminv16qi3): Likewise.
12060         (umin<mode>3): Likewise.
12061         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
12063         * doc/extend.texi: Document SSE4.1 built-in functions.
12065         * doc/invoke.texi: Document -msse4.1.
12067 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
12069         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
12070         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
12071         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
12072         (ASM_SPEC): Add asm_pcrel_spec.
12073         (EXTRA_SPECS): Add asm_pcrel_spec.
12075 2007-05-21  David Daney  <ddaney@avtrex.com>
12077         * doc/install.texi (Building a cross compiler): Add requirements
12078         for Java cross compiler.
12080 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12082         PR middle-end/31995
12083         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
12084         Add loopno argument.  Use evolution_function_is_invariant_rec_p
12085         instead of evolution_function_is_constant_p.
12086         Update calls to evolution_function_is_affine_multivariate_p.
12087         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
12088         Add loopno argument.
12089         * tree-scalar-evolution.c (gather_chrec_stats): Call
12090         evolution_function_is_affine_multivariate_p with a loop
12091         number of 0.
12092         * tree-data-ref.c (analyze_miv_subscript): Likewise.
12093         (analyze_overlapping_iterations): Likewise.
12094         (access_functions_are_affine_or_constant_p): Likewise.
12095         (build_classic_dist_vector_1): If the access functions
12096         are equal, don't do anything.
12098 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
12099             Paolo Carlini  <pcarlini@suse.de>
12100             Uros Bizjak  <ubizjak@gmail.com>
12102         * c-cppbuiltin.c (c_cpp_builtins): Define
12103         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
12104         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
12105         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
12106         * doc/cpp.texi ([Standard Predefined Macros]): Document.
12108 2007-05-21  Mike Stump  <mrs@apple.com>
12110         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
12111         handling as well.
12112         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
12114 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
12116         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
12117         implementation if __OPTIMIZE__ is not defined.
12118         (_mm_alignr_pi8): Ditto.
12119         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
12120         (_mm_inserti_si64): Ditto.
12121         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
12122         (_mm_slli_epi16): Ditto.
12123         (_mm_slli_epi32): Ditto.
12124         (_mm_slli_epi64): Ditto.
12125         (_mm_srai_epi16): Ditto.
12126         (_mm_srai_epi32): Ditto.
12127         (_mm_srli_si128): Ditto.
12128         (_mm_slli_si128): Ditto.
12129         (_mm_srli_epi16): Ditto.
12130         (_mm_srli_epi32): Ditto.
12131         (_mm_srli_epi64): Ditto.
12132         (_mm_extract_epi16): Ditto.
12133         (_mm_insert_epi16): Ditto.
12134         (_mm_shufflehi_epi16): Ditto.
12135         (_mm_shufflelo_epi16): Ditto.
12136         (_mm_shuffle_epi32): Ditto.
12137         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
12138         (_m_pextrw): Ditto.
12139         (_mm_insert_pi16): Ditto.
12140         (_m_pinsrw): Ditto.
12141         (_mm_shuffle_pi16): Ditto.
12142         (_m_pshufw): Ditto.
12143         (_mm_shufle_ps): Ditto.
12144         (_mm_prefetch): Ditto.
12146 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
12148         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
12149         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
12150         * real.c (encode_i370_single, decode_i370_single,
12151         encode_i370_double, decode_i370_double): Functions removed.
12152         (i370_single_format, i370_double_format): Initializations removed.
12153         (real_maxval, round_for_format, exact_real_truncate, significand_size):
12154         Consider the log2_b field to always be one.
12155         (ieee_single_format, mips_single_format, coldfire_single_format,
12156         ieee_double_format, mips_double_format, coldfire_double_format,
12157         ieee_extended_motorola_format, ieee_extended_intel_96_format,
12158         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
12159         ibm_extended_format, mips_extended_format, ieee_quad_format,
12160         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
12161         decimal_single_format, decimal_double_format, decimal_quad_format,
12162         c4x_single_format, c4x_extended_format, real_internal_format): Remove
12163         initialization of log2_b.
12164         * real.h (i370_single_format, i370_double_format): Declarations
12165         removed.
12166         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
12167         field to always be one.
12169 2007-05-21  Andreas Schwab  <schwab@suse.de>
12171         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
12172         NOTE_INSN_BASIC_BLOCK_P.
12173         (process_for_unwind_directive): Likewise.
12175 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
12177         * builtins.c (expand_builtin_setjmp_setup): Update comment.
12178         * function.h (struct function): Move va_list_gpr_size,
12179         va_list_fpr_size, function_frequency to front of bitfields.  Add
12180         calls_unwind_init.
12181         (current_function_calls_unwind_init): New.
12182         * except.c (expand_builtin_unwind_init): Set
12183         current_function_calls_unwind_init not
12184         current_function_has_nonlocal_label.
12185         * reload1.c (has_nonexceptional_receiver): New.
12186         (reload): Use it and current_function_calls_unwind_init to
12187         determine whether call-saved regs must be saved.
12189 2007-05-20  Jan Hubicka  <jh@suse.cz>
12191         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
12192         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
12193         * ddg.c (create_ddg): LIkewise.
12194         * final.c (final): Remove hunk moving line number notes around since
12195         they are no longer present at this stage.
12196         (final_scan_insn): Use NOTE_KIND instead of
12197         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
12198         (output_asm_label): Likewise.
12199         * reorg.c (dbr_schedule): Likewise.
12200         * haifa-sched.c (unlink_other_notes): Likewise.
12201         * mode-switching.c (optimize_mode_switching): Likewise.
12202         * graph.c (start_bb): Likewise.
12203         * rtl.def (NOTE): Update description.
12204         * jump.c (squeeze_notes): Delete.
12205         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
12206         NOTE_INSN_BASIC_BLOCK_P when possible.
12207         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
12208         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
12209         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
12210         (dwarf2out_var_location): Likewise.
12211         * cfgbuild.c (make_edges): Likewise.
12212         (find_basic_blocks_1): Likewise.
12213         * function.c (reorder_blocks_1): Likewise.
12214         (epilogue_done): Likewise.
12215         (reposition_prologue_and_epilogue_notes): Likewise.
12216         * print-rtl.c (print_rtx): Likewise; drop code for printing
12217         line number notes.
12218         (print_rtl): Likewise.
12219         (print_rtl_single): Likewise.
12220         * gcse.c (insert_insn_start_bb): Likewise.
12221         * alias.c (init_alias_analysis): Likewise.
12222         * calls.c (fixup_tail_calls): Likewise.
12223         * except.c (sjlj_emit_function_enter): Likewise.
12224         * emit-rtl.c (add_insn_after): Likeiwse.
12225         (emit_label_before): Likewise.
12226         (emit_label_after): Likewise.
12227         (emit_note_before, emit_note_after, emit_note): Update
12228         parameter to be enum insn_note; do not deal with source
12229         files.
12230         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
12231         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
12232         when possible.
12233         (merge_blocks_move_successor_nojumps): Simplify now when
12234         we don't have BLOCK notes.
12235         (try_optimize_cfg): Likewise.
12236         * cfglayout.c (skip_insns_after_block): Likewise.
12237         (record_effective_endpoints): Likewise.
12238         (duplicate_insn_chain): Likewise.
12239         * varasm.c (output_constant_pool_1): Likewise.
12240         * sched-deps.c (sched_analyze): Likewise.
12241         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
12242         Exterminate.
12243         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
12244         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
12245         (SET_INSN_DELETED): Simplify.
12246         (NOTE_LINE_NUMBER): Exterminate.
12247         (NOTE_LINE_KIND): New.
12248         (NOTE_INSN_BASIC_BLOCK_P): Update.
12249         (enum insn_note): Simplify.
12250         (GET_NOTE_INSN_NAME) Simplify.
12251         (emit_note_before, emit_note_after, emit_note): Update prototype.
12252         (squeeze_notes): Remove.
12253         * sched-int.h (NOTE_NOT_BB_P): Update.
12254         * resource.c (mark_target_live_regs): Update.
12255         * sched-rgn.c (debug_dependencies): Update.
12256         * sched-vis.c (print_insn): Update.
12257         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
12258         * config/i386/i386.c (ix86_output_function_epilogue): Update.
12259         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
12260         (TARGET_ADJUST_UNROLL_MAX): Likewise.
12261         (split_branches): Update.
12262         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
12263         4.0.0.
12264         (sh_adjust_unroll_max): Exterminate.
12265         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
12266         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
12267         (m68hc11_reorg): Likewise.
12268         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
12269         (emit_predicate_relation_info): Update.
12270         (process_for_unwind_directive): Update.
12271         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
12272         (output_call): Update.
12273         * config/pa/pa.c (output_lbranch): Update.
12274         (output_millicode_call): Update.
12275         (output_call): Update.
12276         (pa_combine_instructions): Update.
12277         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
12278         * config/bfin/bfin.c (gen_one_bundle): Update.
12279         * cfgrtl.c (can_delete_note_p): Update.
12280         (delete_insn): Update.
12281         (rtl_merge_blocks): Update.
12282         (commit_one_edge_insertion): Update.
12283         (rtl_verify_flow_info): Update.
12284         * stmt.c (expand_case): Do not call squeeze_notes.
12286 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12288         PR middle-end/7651
12289         PR c++/11856
12290         PR c/12963
12291         PR c/23587
12292         PR other/29694
12293         * c.opt (Wtype-limits): New.
12294         * doc/invoke.texi (Wtype-limits): Document it.
12295         (Wextra): Enabled by -Wextra.
12296         * c-opts.c (c_common_post_options): Enabled by -Wextra.
12297         * c-common.c (shorten_compare): Warn with Wtype-limits.
12299 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
12301         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
12302         inlined function, not as a macro.
12303         (_mm_alignr_pi8): Ditto.
12304         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
12305         (_mm_inserti_si64): Ditto.
12306         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
12307         (_mm_extract_epi16): Ditto.
12308         (_mm_insert_epi16): Ditto.
12309         (_mm_shufflehi_epi16): Ditto.
12310         (_mm_shufflelo_epi16): Ditto.
12311         (_mm_shuffle_epi32): Ditto.
12312         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
12313         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
12314         all functions.
12315         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
12316         float constant.
12317         (_m_to_float): Use C89 compatible assignment.
12319 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
12321         PR target/32007
12322         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
12324 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12326         PR middle-end/7651
12327         * doc/invoke.texi (Wreturn-type): Complete description.
12328         (Wextra): Delete item about return-type warning.
12329         * c-decl.c: Delete redundant Wextra warning.
12331 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
12333         PR target/31585
12334         * config/i386/pmmintrin.h: Do not include xmmintrin.h
12335         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
12336         inlined function, not as a macro.
12337         (_mm_prefetch): Ditto.
12338         (_m_pextrw): Ditto.
12339         (_mm_insert_pi16): Ditto.
12340         (_m_pinsrw): Ditto.
12341         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
12342         (_m_pshufw): Ditto. Add const to __N argument.
12343         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
12344         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
12345         (_mm_slli_epi32): Ditto.
12346         (_mm_srli_si128): Implement as always inlined function, not as a
12347         macro.  Add __inline to function declaration.
12348         (_mm_slli_si128): Ditto.
12350 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
12352         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
12353         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
12354         New constants.
12355         (struct fenv): New structure.
12356         (FP_HANDLE_EXCEPTIONS): New define.
12357         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
12358         (_FP_DECL_EXP): New define.
12359         (FP_INIT_ROUNDMODE): New define.
12360         (FP_ROUNDMODE): New define.
12362 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12364         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
12365         (Wconversion): Update description.
12366         (Wconversion-sign): New.
12367         * c.opt (Wconversion-sign): New.
12368         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
12369         means disabled for C++. Otherwise, take the status of Wconversion.
12370         * c-common.c (conversion_warning): Warn with either Wconversion or
12371         Wconversion-sign.
12372         (warnings_for_convert_and_check): Conditions are already checked by
12373         conversion_warning.
12374         (convert_and_check): Don't check warnings if the conversion failed.
12376 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
12377            Anatoly Sokolov <aesok@dol.ru>
12379         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
12380         avr_epilogue_uses) : Add declaration.
12381         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
12382         * config/avr/constraints.md (R): New constraint.
12383         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
12384         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
12385         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
12386         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
12387         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
12388         call_prologue_saves, epilogue_restores, return_from_epilogue,
12389         return_from_main_epilogue, return_from_interrupt_epilogue,
12390         return_from_naked_epilogue, prologue, epilogue): New patterns.
12391         (jump): Handle symbol reference.
12392         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
12393         avr_output_function_prologue, avr_output_function_epilogue): Remove
12394         functions.
12395         (avr_init_machine_status, expand_prologue, expand_epilogue,
12396         avr_asm_function_end_prologue, avr_epilogue_uses,
12397         avr_asm_function_begin_epilogue): New functions.
12398         (prologue_size, epilogue_size, jump_tables_size): Remove global
12399         variables.
12400         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
12401         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
12402         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
12403         (avr_override_options): Initialise init_machine_status.
12404         (output_movhi): Handle all stack pointer loads.
12405         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
12406         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
12407         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
12408         (EPILOGUE_USES) Redefine.
12409         (machine_function) Declare.
12411 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
12413         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
12414         Use a single return statement.
12416 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12418         PR middle-end/30250
12419         * builtins.c (do_mpfr_lgamma_r): New.
12420         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
12421         * tree.h (CASE_FLT_FN_REENT): New.
12423 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
12425         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
12426         (output_die): Use 'unsigned long' with %x.
12427         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
12428         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
12429         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
12431         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
12433 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
12435         PR target/31989
12436         PR target/31681
12437         PR target/31666
12438         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
12439         true if function has no argument.
12441 2007-05-18  DJ Delorie  <dj@redhat.com>
12443         * config/mips/mips.c (mips_offset_within_alignment_p): New.
12444         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
12446 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
12448         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
12449         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
12450         count_trailing_zeros.
12451         (__i386__): Implement count_leading_zeros using __builtin_clz().
12452         Implement count_trailing_zeros usign __builtin_ctz().
12454 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
12456         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
12458 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
12460         PR middle-end/31344
12461         * expr.c (emit_move_change_mode): Change mode of push operands here.
12463 2007-05-17  Ian Lance Taylor  <iant@google.com>
12465         PR tree-optimization/31953
12466         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
12467         Change all callers.
12468         (set_value_range_to_null): Call set_value_range_to_value.
12469         (extract_range_from_comparison): Likewise.
12471 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12473         * toplev.c (print_version): Output GMP/MPFR version info.
12475         * builtins.c (CASE_MATHFN_REENT): New macro.
12476         (mathfn_built_in): Use it.
12477         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
12478         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
12479         BUILT_IN_LGAMMAL_R): New.
12480         * doc/extend.texi: Document new builtins.
12482         PR middle-end/31796
12483         * builtins.c (do_mpfr_remquo): New.
12484         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
12485         (fold_builtin_3): Handle BUILT_IN_REMQUO.
12487         PR middle-end/30251
12488         * builtins.c (fold_builtin_1): Handle y0, y1.
12489         (fold_builtin_2): Handle yn.
12491         PR middle-end/30251
12492         * builtins.c (do_mpfr_bessel_n): New.
12493         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
12494         (fold_builtin_2): Handle BUILT_IN_JN.
12496 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
12498         PR target/31965
12499         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
12500         TYPE_PRECISION (intmax_type_node).
12502 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
12504         PR target/31850
12505         * reload.c (subst_reloads): Remove checking.
12507 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
12509         PR rtl-optimization/31691
12510         * combine.c (simplify_set): Build a new src pattern instead of
12511         substituting its operands in the COMPARE case.
12513 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
12515         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
12516         (execute_vrp): Preserve loops through jump threading.
12517         * tree-ssa-threadupdate.c (thread_single_edge,
12518         dbds_continue_enumeration_p, determine_bb_domination_status,
12519         thread_through_loop_header): New functions.
12520         (create_edge_and_update_destination_phis,
12521         create_edge_and_update_destination_phis): Set loops for the new blocks.
12522         (prune_undesirable_thread_requests): Removed.
12523         (redirect_edges): Do not pretend that redirect_edge_and_branch can
12524         create new blocks.
12525         (thread_block): Do not call prune_undesirable_thread_requests.
12526         Update loops.
12527         (mark_threaded_blocks): Select edges to thread here.
12528         (thread_through_all_blocks): Take may_peel_loop_headers argument.
12529         Thread edges through loop headers independently.
12530         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
12531         * tree-pass.h (TODO_mark_first_instance): New.
12532         (first_pass_instance): Declare.
12533         * cfghooks.c (duplicate_block): Put the block to the original loop
12534         if copy is not specified.
12535         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
12536         jump threading.  Pass may_peel_loop_headers to
12537         thread_through_all_blocks according to first_pass_instance.
12538         * cfgloop.h (create_preheader): Declare.
12539         * tree-flow.h (thread_through_all_blocks): Declaration changed.
12540         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
12541         * passes.c (first_pass_instance): New variable.
12542         (next_pass_1): Set TODO_mark_first_instance.
12543         (execute_todo): Set first_pass_instance.
12545 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
12547         PR tree-optimization/24659
12548         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
12549         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
12550         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
12551         OTI_vec_pack_ufix_trunc.
12552         (vec_unpacks_float_hi_optab): Define new macro.
12553         (vec_unpacks_float_lo_optab): Ditto.
12554         (vec_unpacku_float_hi_optab): Ditto.
12555         (vec_unpacku_float_lo_optab): Ditto.
12556         (vec_pack_sfix_trunc_optab): Ditto.
12557         (vec_pack_ufix_trunc_optab): Ditto.
12558         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
12559         and vec_pack_[s|u]fix_trunc_optab using
12560         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
12561         * tree-vectorizer.c (supportable_widening_operation): Handle
12562         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
12563         (supportable_narrowing_operation): New function.
12564         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
12565         * tree-vect-transform.c (vectorizable_conversion): Handle
12566         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
12567         (vect_gen_widened_results_half): Move before vectorizable_conversion.
12568         (vectorizable_type_demotion): Call supportable_narrowing_operation()
12569         to check for target support.
12570         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
12571         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
12572         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
12573         for VEC_PACK_FIX_TRUNC_EXPR.
12574         (expand_binop): Special case mode of the result for
12575         vec_pack_[u|s]fix_trunc_optab.
12576         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
12577         vec_pack_[u|s]fix_trunc_optab.
12579         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
12580         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
12581         * tree-pretty-print.c (dump_generic_node): Handle
12582         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
12583         VEC_PACK_FIX_TRUNC_EXPR.
12584         (op_prio): Ditto.
12585         * expr.c (expand_expr_real_1): Ditto.
12586         * tree-inline.c (estimate_num_insns_1): Ditto.
12587         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
12589         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
12590         (vec_unpacks_float_lo_v8hi): Ditto.
12591         (vec_unpacku_float_hi_v8hi): Ditto.
12592         (vec_unpacku_float_lo_v8hi): Ditto.
12593         (vec_unpacks_float_hi_v4si): Ditto.
12594         (vec_unpacks_float_lo_v4si): Ditto.
12595         (vec_pack_sfix_trunc_v2df): Ditto.
12597         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
12598         Document.
12599         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
12600         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
12601         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
12602         [vec_pack_ufix_trunc]: Ditto.
12603         [vec_unpacks_float_hi]: Ditto.
12604         [vec_unpacks_float_lo]: Ditto.
12605         [vec_unpacku_float_hi]: Ditto.
12606         [vec_unpacku_float_lo]: Ditto.
12608 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
12610         * soft-fp/README: Update for new files.
12611         * soft-fp/floattisf.c: New file.
12612         * soft-fp/floattidf.c: New file.
12613         * soft-fp/floattitf.c: New file.
12614         * soft-fp/floatuntisf.c: New file.
12615         * soft-fp/floatuntidf.c: New file.
12616         * soft-fp/floatuntitf.c: New file.
12617         * soft-fp/fixsfti.c: New file.
12618         * soft-fp/fixdfti.c: New file.
12619         * soft-fp/fixtfti.c: New file.
12620         * soft-fp/fixunssfti.c: New file.
12621         * soft-fp/fixunsdfti.c: New file.
12622         * soft-fp/fixunstfti.c: New file.
12623         * soft-fp/extendxftf.c: New file.
12624         * soft-fp/trunctfxf.c: New file.
12626         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
12627         (__trunctfxf2): Ditto.
12629         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
12630         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
12631         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
12632         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
12633         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
12634         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
12636         * config/i386/t-fprules-softfp64: New file.
12637         * config/i386/sfp-machine.h: New file.
12638         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
12639         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
12640         and soft-fp/t-softfp to tmake_file.
12641         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
12642         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
12644         * config/i386/t-linux64 (softfp_wrap_start): New.
12645         (softfp_wrap_end): New.
12646         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
12647         supported for TARGET_64BIT.
12649 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
12651         * c-common.c (c_common_signed_or_unsigned_type): Emulate
12652         c_common_unsigned_type behavior.
12654 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
12656         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
12657         calls as pure.
12659 2007-05-16  Eric Christopher  <echristo@apple.com>
12661         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
12662         saving after stack push. Set sp_offset whenever we push.
12663         (rs6000_emit_epilogue): Move altivec register restore before
12664         stack push.
12666 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
12668         * configure.ac: Allow sysroots to be relocated under $prefix as
12669         well as $exec_prefix.
12670         * configure: Regenerate.
12672 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
12674         Revert:
12676         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
12678         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12679         (gcc_tooldir): Likewise.
12680         * configure: Regenerate.
12681         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12682         old configure.ac gcc_tooldir setting.
12683         (prefix_to_exec_prefix): New variable.
12684         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12685         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12687 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
12689         * c-typeck.c (build_binary_op): Return early for error.
12691 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
12693         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
12694         struct nb_iter_bound.
12695         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
12696         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
12697         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
12698         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
12699         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
12700         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
12701         (del_scev_info): Use ggc_free.
12702         (scev_initialize): Allocate scalar_evolution_info in gc memory.
12703         * loop-init.c: Include ggc.h.
12704         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
12705         (loop_optimizer_finalize): Use ggc_free.
12706         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
12707         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
12708         pass_iv_optimize): Add TODO_ggc_collect.
12709         * function.h (struct function): Remove skip marker from
12710         x_current_loops.
12711         * cfgloop.c: Include ggc.h.
12712         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
12713         memory.
12714         (establish_preds): Vector superloops is gc allocated.
12715         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
12716         loop->exits list.
12717         (flow_loops_find): Vector larray is gc allocated.
12718         (loop_exit_free): Use ggc_free.
12719         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
12720         that head of exits list is now not a part of struct loop.
12721         (record_loop_exits): Allocate exits table in gc memory.
12722         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
12723         that head of exits list is now not a part of struct loop.
12724         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
12725         struct loop_exit): Add GTY marker.
12726         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
12727         Add skip marker to aux field.  Make head of exits list a separate
12728         object.
12729         (struct loops): Add GTY marker.  Make larray vector gc allocated.
12730         Add param marker to exits table.
12731         (get_loops): Type changed.
12732         * Makefile.in (tree-scalar-evolution.o): Add
12733         gt-tree-scalar-evolution.h dependency.
12734         (cfgloop.o, loop-init.o): Add ggc.h dependency.
12735         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
12736         * basic-block.h (struct basic_block_def): Remove skip marker from
12737         loop_father field.
12739 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
12741         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
12742         of 0 in the call to expand_expr().
12743         (expand_builtin_mathfn_3): Ditto.
12744         (expand_builtin_interclass_mathfn): Ditto.
12745         (expand_builtin_cexpi): Ditto.
12746         (expand_builtin_int_roundingfn): Ditto.
12747         (expand_builtin_int_roundingfn_2): Ditto.
12748         (expand_builtin_pow): Ditto.
12749         (expand_builtin_powi): Ditto.
12750         (expand_builtin_bswap): Ditto.
12751         (expand_builtin_unop): Ditto.
12752         (expand_builtin_fabs): Ditto.
12753         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
12754         the call to expand_expr().
12755         (expand_builtin_sync_operation): Ditto.
12756         (expand_builtin_compare_and_swap): Ditto.
12757         (expand_builtin_lock_test_and_set): Ditto.
12758         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
12759         instead of 0 in the call to expand_expr().
12760         (expand_builtin_extract_return_addr): Ditto.
12761         (expand_builtin_eh_return): Ditto.
12762         (expand_eh_return): Ditto.
12763         * explow.c (expr_size): Ditto.
12764         * expr.c (optimize_bitfield_assignment_op): Ditto.
12765         (expand_assignement): Ditto.
12766         (store_expr): Ditto.
12767         (store_field): Ditto.
12768         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
12769         the call to expand_expr().
12770         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
12771         in the call to expand_expr().
12772         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
12773         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
12774         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
12775         of expand_expr().
12776         * optabs.c (expand_vec_shift_expr): Ditto.
12777         (expand_vec_cond_expr): Ditto.
12778         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
12779         call to expand_expr().
12780         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
12781         in the call to expand_expr().
12783 2007-05-14  Dave Korn  <dave.korn@artimi.com>
12785         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
12787 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
12789         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
12790         instead of c_common_unsigned_type.
12791         (c_common_unsigned_type): Remove.
12792         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
12793         c_common_unsigned_type.
12794         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
12795         c_common_unsigned_type.
12796         * c-common.h (c_common_unsigned_type): Remove.
12797         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
12798         c_common_unsigned_type.
12799         * c-format.c (check_format_types): Use unsigned_type_for instead of
12800         c_common_unsigned_type.
12801         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
12802         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
12803         of c_common_unsigned_type.
12804         * convert.c (convert_to_integer): Use unsigned_type_for instead of
12805         lang_hooks.types.unsigned_type.
12806         * expmed.c (make_tree): Use unsigned_type_for instead of
12807         lang_hooks.types.unsigned_type.
12808         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
12809         lang_hooks.types.unsigned_type.
12810         (build_range_check): Likewise.
12811         (fold_unary): Likewise.
12812         (fold_binary): Likewise.
12813         (fold_ternary): Likewise.
12814         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
12815         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
12816         * tree.c (get_unsigned_type): New.
12817         (unsigned_type_for): Use get_unsigned_type instead of
12818         lang_hooks.types.unsigned_type.
12820 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
12822         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
12823         to m68k_get_function_kind.  Update its prototype.
12824         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
12825         interrupt_thread.
12826         (m68k_interrupt_function_p): Return enum m68k_function_type
12827         instead of bool.  Rename to m68k_get_function_kind.
12828         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
12829         target is not fido.
12830         (m68k_compute_frame_layout): Don't mark any register for save
12831         if an interrupt_thread attribute is specified.
12832         (m68k_hard_regno_rename_ok): Update a use of
12833         m68k_interrupt_function_p.
12834         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
12835         m68k_interrupt_function_p.
12836         (m68k_function_type): New.
12837         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
12838         for a function with an interrupt_thread attribute.
12839         * doc/extend.texi: Document the interrupt_thread attribute.
12841 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
12843         Fix PR tree-optimization/31911
12844         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
12845         if they didn't change the expression.
12847 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
12849         * tree-scalar-evolution.c (resolve_mixers): Exported.
12850         * tree-scalar-evolution.h (resolve_mixers): Declare.
12851         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
12852         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
12853         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
12854         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
12855         init_array_ref, init_pointer_ref, analyze_indirect_ref,
12856         strip_conversion, analyze_offset_expr, address_analysis,
12857         object_analysis, analyze_offset): Removed.
12858         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
12859         split_constant_offset, canonicalize_base_object_address,
12860         object_address_invariant_in_loop_p, disjoint_objects_p,
12861         dr_may_alias_p, dr_address_invariant_p): New functions.
12862         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
12863         and dr_analyze_alias.
12864         (initialize_data_dependence_relation): Use dr_may_alias_p
12865         and object_address_invariant_in_loop_p.
12866         (compute_self_dependence): Handle the case when
12867         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
12868         (find_data_references_in_stmt): Restrict the analysis of data
12869         references to the given loop nest.
12870         (find_data_references_in_loop): Made static.  Pass loop nest to
12871         find_data_references_in_stmt.
12872         (compute_data_dependences_for_loop): Use DR_VOPS.
12873         (free_data_ref): Free DR_VOPS.
12874         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
12875         (struct innermost_loop_behavior): ... new.
12876         (struct base_object_info): Replaced by ...
12877         (struct indices): ... new.
12878         (struct dr_alias): New.
12879         (enum data_ref_type): Removed.
12880         (struct data_reference): Consist of struct innermost_loop_behavior,
12881         struct indices and struct dr_alias.
12882         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
12883         (DR_MEMTAG): Renamed to ...
12884         (DR_SYMBOL_TAG): ... this.
12885         (find_data_references_in_loop): Declaration removed.
12886         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
12887         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
12888         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
12889         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
12891 2007-05-13  Revital Eres  <eres@il.ibm.com>
12893         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
12894         which walks virtual def-use chains to find redundant stores.
12895         (dse_optimize_stmt): Call it.
12897 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
12899         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
12900         * passes.c (init_optimization_passes): Move pass_jump_bypass
12901         after loop2.
12903         * basic-block.h (bb_has_eh_pred): Fix style issue.
12905 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
12907         PR rtl-optimization/31848
12908         * loop-invariant.c (move_invariant_reg): If we move an insn
12909         with a REG_EQUAL note, and that insn is not always executed,
12910         remove the REG_EQUAL note.
12912 2007-05-12  Richard Guenther  <rguenther@suse.de>
12914         PR tree-optimization/31797
12915         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
12916         propagate into a stmt that has volatile ops.
12918 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
12920         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12921         (gcc_tooldir): Likewise.
12922         * configure: Regenerate.
12923         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12924         old configure.ac gcc_tooldir setting.
12925         (prefix_to_exec_prefix): New variable.
12926         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12927         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12929 2007-05-11  Silvius Rus  <rus@google.com>
12931         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
12932         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
12933         * c-common.h (strict_aliasing_warning): Change return type.
12934         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
12935         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
12936         (build_c_cast): Condition call to strict_aliasing_warning.
12937         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
12938         * flags.h (set_Wstrict_aliasing): Declare.
12939         * opts.c (set_Wstrict_alising): Define, add call to.
12940         * tree-flow.h (strict_aliasing_warning_backend): Declare.
12941         * tree-ssa-alias-warnings.c: New file.
12942         * tree-ssa-alias.c (compute_may_aliases): Add call to
12943         strict_aliasing_warning_backend.
12945 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
12947         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
12948         Use loop_depth and loop_outer accessor functions.
12949         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
12950         determine_invariantness_stmt, move_computations_stmt): Ditto.
12951         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
12952         add_loop, loopify, unloop, fix_loop_structure): Ditto.
12953         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
12954         * tree-scalar-evolution.c (interpret_loop_phi,
12955         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
12956         instantiate_parameters_1, scev_const_prop): Ditto.
12957         * cfghooks.c (make_forwarder_block): Ditto.
12958         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
12959         * modulo-sched.c (loop_canon_p): Ditto.
12960         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
12961         slpeel_can_duplicate_loop_p): Ditto.
12962         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
12963         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
12964         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
12965         cancel_loop, verify_loop_structure): Ditto.
12966         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
12967         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
12968         superloops vector instead of "pred" array.
12969         (establish_preds): Take father loop as an argument.  Initialize the
12970         superloops vector.
12971         (flow_loop_tree_node_add): Pass father loop to establish_preds.
12972         Do not initialize loop->outer.
12973         (flow_loop_tree_node_remove): Truncate the superloops vector.
12974         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
12975         "pred" merged to "superloops" vector.
12976         (loop_depth, loop_outer): New.
12977         (fel_init): Use loop_outer.
12979 2007-05-11  Jan Hubicka  <jh@suse.cz>
12981         * cgraphunit.c: Include gt-cgraphunit.h
12982         (static_ctors, static_dtors): New static vars.
12983         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
12984         based on implementation in c-common.c
12985         (cgraph_finalize_function): Call record_cdtor_fn.
12986         (cgraph_optimize): Call cgraph_build_cdtor_fns.
12987         * decl.c (finish_function): Do not call c_record_cdtor_fn.
12988         (c_write_global_declarations): Do not call c_build_cdtor_fns.
12989         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
12990         build_cdtor, c_build_cdtor_fns): Remove.
12991         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
12992         c_build_cdtor_fns): Remove prototype.
12994 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
12996         PR other/31852
12997         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
12998         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
12999         * builtins.c (fold_builtin_memchr): New.
13000         (expand_builtin_memchr): Call the latter.
13001         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
13002         * doc/extend.texi ([Other built-in functions provided by GCC]):
13003         Document memchr.
13005 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
13007         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
13008         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
13009         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
13010         PFPO_OP1_TYPE_SHIFT): Constants added.
13011         (DFP_ALL): Mode macro defined.
13012         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
13013         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
13014         Insn definitions added.
13015         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
13016         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
13017         Expanders added.
13019 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
13021         PR tree-optimization/31885
13022         * tree-chrec.c (chrec_contains_undetermined): Do not consider
13023         NULL_TREE to be undetermined.
13024         (automatically_generated_chrec_p): Return false for NULL.
13026 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
13028         * config/bfin/bfin.h (MOVE_RATIO): Define.
13030 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
13032         * config.gcc (sparc-wrs-vxworks): New target.
13033         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
13034         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
13035         * config/sparc/sparc.h: Include vxworks-dummy.h.
13036         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
13037         include LABEL_REFs too.
13038         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
13039         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
13040         VxWorks.
13041         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
13042         on VxWorks.
13043         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
13044         (sparc_emit_call_insn): New function.
13045         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
13046         functions when generating VxWorks PIC.
13047         * config/sparc/sparc.md (vxworks_load_got): New pattern.
13048         (call, call_value): Use sparc_emit_call_insn instead of
13049         emit_call_insn.
13051 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
13053         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
13055 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
13057         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
13058         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
13059         split_double instead of operand_subword.
13061 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
13063         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
13064         * config/bfin/bfin.c (bfin_local_alignment): New function.
13065         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
13067 2007-05-08  Chao-ying Fu  <fu@mips.com>
13069         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
13070         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
13071         (smsub_widen_optab, umsub_widen_optab): Define.
13072         * optabs.c (init_optabs): Initialize smsub_widen_optab and
13073         umsub_widen_optab.
13074         * genopinit.c (optabs): Fill in smsub_widen_optab and
13075         umsub_widen_optab.
13076         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
13077         and umsub_widen_optab to implement multiply-subtract sequences.
13078         * config/mips/mips.md (*msac<u>_di): Rename to...
13079         (<u>msubsidi4): ...this.  Extend condition to include
13080         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
13081         of operand 0 to "ka" and use the three-operand form of msub<u>
13082         for TARGET_DSPR2.
13083         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
13084         to define_expands.
13086 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
13088         PR rtl-optimization/28011
13089         * reload.c (push_reload): Set dont_share if IN appears in OUT
13090         also when IN is a PLUS rtx.
13091         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
13092         are same PLUS rtx.
13094 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
13096         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
13097         call unshare_all_decls.
13098         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
13099         (unshare_all_decls): Remove.
13101 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
13103         PR 31847
13104         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
13105         dumps.
13107 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
13108             Nigel Stephens  <nigel@mips.com>
13110         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
13111         Update comments and all uses.
13112         (MIN_FPRS_PER_FMT): Define.
13113         * config/mips/mips.c (function_arg): Fix to correctly handle
13114         the -mips32r2 -mfp64 -mabi=32 case.
13115         (override_options): Enable use of odd-numbered registers for
13116         SFmode values on MIPS32.
13117         (mips_save_reg_p): Save whole floating-point register pair if
13118         either half is used.
13119         (compute_frame_size): Fix comment.
13121 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
13123         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
13124         argument of type bool.
13125         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
13126         argument. Safely select temporary P register according to it.
13127         (do_link): Change call site of add_to_reg accordingly.
13128         (do_unlink): Add epilogue_p as a fourth argument and pass it
13129         to add_to_reg.
13130         (expand_interrupt_handler_epilogue): Change call of do_unlink
13131         accordingly.
13132         (bfin_expand_prologue): Add a third argument sibcall_p.
13133         * config/bfin/bfin.md (epilogue): Change call of
13134         bfin_expand_epilogue accordingly.
13135         (sibcall_epilogue): Likewise.
13136         (eh_return_internal): Likewise.
13138         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
13139         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
13140         * config/bfin/bfin.c (bfin_handle_option): Handle
13141         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
13142         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
13143         Support bf534, bf536 and bf561.
13144         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
13146 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
13148         PR target/31854
13149         * config/i386/i386.c (ix86_function_regparm): Process local
13150         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
13152 2007-05-07  Mike Stump  <mrs@apple.com>
13154         * doc/invoke.texi (Warning Options): Document that -Wempty-body
13155         also checks for and while statements in C++.
13157 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
13159         * gcc.c (at_file_supplied): New variable.
13160         (main): Set it if we expanded argv.
13161         (do_spec_1): Pass an @-file to the linker if we were called with
13162         an @-file argument and HAVE_GNU_LD.
13163         * collect2.c (at_file_supplied): New variable.
13164         (response_file): New variable.
13165         (collect_exit): Unlink response_file if necessary.
13166         (handler): Likewise.
13167         (do_wait): Likewise.
13168         (main): Set at_file_supplied if we expanded argv.
13169         (collect_execute): Pass an @-file to subprocesses if we were called
13170         with an @-file argument.
13171         * configure.ac: Add define for HAVE_GNU_LD.
13172         * configure: Regenerate.
13173         * config.in: Regenerate.
13175 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
13177         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
13178         operand to HI mode.
13179         (mulsi3): New.
13180         (divsi3): New.
13181         (udivsi3): New.
13183 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
13185         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
13186         (TARGET_ENCODE_SECTION_INFO): Re-define.
13187         (m32c_encode_section_info): New
13188         (function_vector_handler): New
13189         (current_function_special_page_vector): New
13190         (m32c_special_page_vector_p): New.
13191         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
13192         Prototype.
13193         * config/m32c/jump.md: Added instruction JSRS for functions
13194         with attribute "function_vector".
13195         * doc/extend.texi (function_vector): Added description
13196         for M16C, M32C targets.
13198 2007-05-07  DJ Delorie  <dj@redhat.com>
13200         PR 31794
13201         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
13202         ashrpsi3, lshrpsi3): Update shift count constraint.
13204 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
13205             Nathan Froyd  <froydnj@codesourcery.com>
13207         PR 22133
13208         * c-incpath.c (add_path): Strip trailing path separators.
13210 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
13212         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
13213         Free dominance info before purging EH edges.
13214         (eliminate_degenerate_phis): Likewise.
13215         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
13217 2007-05-07  Jan Hubicka  <jh@suse.cz>
13219         * gimplify.c (gimplify_expr): Do not crash when folding
13220         (void *)(int)&a + 4.
13222 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
13224         PR driver/31694
13225         * c-opts.c (lang_fortran): Make it non static.
13226         * c-common.h (lang_fortran): New prototype.
13227         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
13228         -lang-fortran option was passed by the driver.
13230 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
13232         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
13233         of ASSERT_CHECKING.  Tweak message.
13235 2007-05-06  Revital Eres  <eres@il.ibm.com>
13237         PR 30957
13238         * loop-unroll.c (insert_var_expansion_initialization):
13239         Initialize the expansions with -zero instead of +zero.
13241 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
13243         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
13244         into pic and non-pic versions. Mark r19 as used for
13245         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
13246         for tgd_load, tld_load and tie_load .
13247         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
13248         version of tgd_load, tld_load and tie_load depending on the
13249         value of flag_pic.
13251 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
13252             Jakub Jelinek  <jakub@redhat.com>
13254         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
13255         (__do_global_dtors_aux): Use more paranoid loop to run
13256         destructors if HIDDEN_DTOR_LIST_END.
13257         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
13259 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
13261         * varasm.c (align_variable): Don't increase alignment for
13262         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
13263         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
13265 2007-05-04  Josh Conner  <jconner@apple.com>
13267         * basic-block.h (cdi_direction): Assign values to all enumeration
13268         constants.
13269         (dom_computed): Remove.
13270         (dom_info_state): New.
13271         (set_dom_info_availability): New.
13272         * tree-ssa-loop-im.c (determine_invariantness): Initialize
13273         walk_data.dom_direction.
13274         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
13275         instead of dom_computed[].
13276         (split_edge): Likewise.
13277         (create_basic_block): Likewise.
13278         (merge_blocks): Likewise.
13279         * ifcvt.c (find_if_header): Likewise.
13280         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
13281         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
13282         * tree-ssa.c (verify_ssa): Likewise.
13283         * tree-cfg.c (tree_verify_flow_info): Likewise.
13284         (remove_edge_and_dominated_blocks): Likewise.
13285         * dominance.c (dom_computed): Make static.
13286         (calc_dfs_tree_nonrec): Change third param to a bool.
13287         (calc_dfs_tree): Change second param to a bool.
13288         (calc_idioms): Change second param to a bool.  Use
13289         dom_convert_dir_to_idx.
13290         (init_dom_info): Validate dir before using.
13291         (dom_convert_dir_to_idx): New.
13292         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
13293         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
13294         (free_dominance_info): Use dom_convert_dir_to_idx.
13295         (get_immediate_dominator): Likewise.
13296         (set_immediate_dominator): Likewise.
13297         (get_dominated_by): Likewise.
13298         (redirect_immediate_dominators): Likewise.
13299         (nearest_common_denominator): Likewise.
13300         (dominated_by_p): Likewise.
13301         (bb_dom_dfs_in): Likewise.
13302         (bb_dom_dfs_out): Likewise.
13303         (recount_dominator): Likewise.
13304         (iterate_fix_dominators): Likewise.
13305         (add_to_dominance_info): Likewise.
13306         (delete_from_dominance_info): Likewise.
13307         (first_dom_son): Likewise.
13308         (next_dom_son): Likewise.
13309         (dom_info_available_p): Likewise.
13310         (dom_info_state): New.
13311         (set_dom_info_availability): New.
13313 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
13315         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
13316         Expander removed.
13317         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
13319 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
13321         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
13322         (subdi3, subdi_carry): Delete.
13324 2007-05-04  Jan Hubicka  <jh@suse.cz>
13325             Richard Guenther  <rguenther@suse.de>
13327         * opts.c (decode_options): Do not fiddle with inlining
13328         parameters in case of optimizing for size.
13329         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
13330         for size do nothing.
13331         (cgraph_decide_inlining_of_small_function): When optimizing for
13332         size never inline functions increasing caller size.
13333         (cgraph_early_inlining): Inline for size when optimizing for size.
13335 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
13337         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
13338         logical operations piecewise.
13339         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
13340         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
13341         subdi_sesidi_di): Delete.
13342         (add_with_carry): Produce carry in CC instead of a DREG to shorten
13343         the generated sequence.  Allow three-reg add in constraints.  Rewrite
13344         the rtl expression for carry to avoid zero_extend of a constant.
13345         (sub_with_carry): New pattern.
13346         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
13347         different sequence not involving jumps.
13348         (notbi): Now a named pattern.
13350 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
13352         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
13353         Add the note about a significant loss of accuracy of some
13354         mathematical routines when these options are used.
13356 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13358         * haifa-sched.c (rtx_vec_t): New typedef.
13359         (contributes_to_priority_p): Extract piece of priority () into new
13360         static function.
13361         (priority): Use the function.  Add assertion.
13362         (rank_for_schedule, set_priorities): Add assertion to check that
13363         insn's priority is initialized.
13364         (clear_priorities, calc_priorities): Change signature.  Make it update
13365         all relevant insns.  Update all callers ('add_to_speculative_block ()'
13366         and 'create_block_check_twin ()').
13367         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
13368         Add new field 'priority_status'.
13369         (INSN_PRIORITY_STATUS): New macro.
13370         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
13372 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13374         * sched-ebb.c (debug_ebb_dependencies): New static function.
13375         (init_ready_list): Use it.
13377         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
13378         with changed signature and 'debug_rgn_dependencies ()'.
13379         (debug_rgn_dependencies): New static function.
13380         (init_ready_list): Use it.
13382         * sched-int.h (debug_dependencies): Declare.
13384 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
13386         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
13388 2007-05-04  Dirk Mueller  <dmueller@suse.de>
13390         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
13392 2007-05-03  Jan Hubicka  <jh@suse.cz>
13394         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
13395         ((T1)X op (T1)Y), for pointer type in more cases than before.
13397         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
13399         * tree-object-size.c (plus_expr_object_size): When operand size is
13400         unknown, return unknown.
13402 2007-05-03  Dirk Mueller  <dmueller@suse.de>
13404         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
13406         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
13407         options.
13409         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
13411 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
13413         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
13415 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
13417         * config/soft-fp/double.h, config/soft-fp/extended.h,
13418         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
13419         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
13420         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
13421         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
13422         glibc CVS.
13424 2007-05-03  Ian Lance Taylor  <iant@google.com>
13426         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
13427         MASK_PPC_GFXOPT for 8540 or 8548.
13429 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
13431         * tree-vect-transform.c (vect_update_inits_of_drs): Use
13432         vect_print_dump_info() to output debug information.
13434 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
13436         PR target/31768
13437         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
13438         operands of size 2 when operand is not MEM_P.
13440 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
13442         PR tree-optimization/30565
13443         * lambda-code.c (perfect_nestify): Fix updating of dominators.
13445 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
13447         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
13448         (umulsi3_highpart): Use them.
13449         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
13450         for final accumulator to D regisster tranfser.
13452 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
13454         PR tree-optimization/31699
13455         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
13456         wrong code.
13457         (vect_enhance_data_refs_alignment): Compute peel amount using
13458         TYPE_VECTOR_SUBPARTS instead of vf.
13459         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
13461 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
13463         PR bootstrap/31776
13464         * system.h: Remove inclusion of double-int.h
13465         * tree.h: Include double-int.h
13466         * gengtype.c: Likewise
13467         * cfgloop.h: Likewise
13468         * Makefile.in: Adjust dependencies on double-int.h
13470 2007-05-02  Eric Christopher  <echristo@apple.com>
13472         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
13473         -shared to -Zdynamiclib.
13475 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
13477         PR c++/31663
13478         * c-common.c (strip_pointer_or_array_types): New function.
13479         * c-common.h (strip_pointer_or_array_types): New function declaration.
13481 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
13483         PR tree-optimization/31771
13484         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
13486 2007-05-02  Paul Brook  <paul@codesourcery.com>
13488         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
13490 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13492         PR middle-end/29715
13493         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
13494         transformation.
13496 2007-05-02  Nick Clifton  <nickc@redhat.com>
13498         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
13500 2007-05-02  Richard Guenther  <rguenther@suse.de>
13502         PR tree-optimization/31146
13503         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
13504         argument, single_use_p.  If we have a single use that is
13505         a conversion to the definition rhs type, propagate that rhs.
13506         (forward_propagate_addr_expr): Pass single_use_p argument
13507         to forward_propagate_addr_expr_1.
13509 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
13511         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
13512         variable.
13514 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
13516         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
13517         'AMD Family 10 core'.
13519 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
13521         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
13522         and athlon64-sse3 as improved versions of k8, opteron and athlon64
13523         with SSE3 instruction set support.
13524         * doc/invoke.texi: Likewise.
13526 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
13528         * config/i386/i386.c (override_options): Tuning 32-byte loop
13529         alignment for amdfam10 architecture. Increasing the max loop
13530         alignment to 24 bytes.
13532 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
13534         * config/m68k/constraints.md: New.
13535         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
13536         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
13537         EXTRA_CONSTRAINT): Remove.
13538         * config/m68k/m68k.md: Include constraints.md.
13539         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
13541 2007-05-01  Ian Lance Taylor  <iant@google.com>
13543         PR tree-optimization/31739
13544         * tree-vrp.c (vrp_val_is_max): New static function.
13545         (vrp_val_is_min): New static function.
13546         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
13547         copying the node.
13548         (set_value_range): Use vrp_val_is_{max,min}.
13549         (extract_range_from_assert): Likewise.
13550         (extract_range_from_binary_expr): Likewise.
13551         (extract_range_from_unary_expr): Likewise.
13552         (dump_value_range, vrp_meet): Likewise.
13553         (vrp_visit_phi_node): Likewise.
13554         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
13556 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
13558         * config/i386/gmon-sol2.c (size_t): New type.
13559         (intptr_t): Likewise.
13560         (s_textsize): Declare as size_t.
13561         (sbrk): Declare.
13562         (monstartup): Use size_t for sizes.
13563         (_mcount): Save and restore registers.
13564         (internal_mcount): Pass 0 as the first argument to monstartup
13565         in 64-bit mode.
13566         (moncontrol): Convert pointer to appropriately sized integer
13567         before passing to profil.
13569 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
13571         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
13572         __NO_FPRS__, not just if _SOFT_DOUBLE.
13573         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
13574         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
13575         also for E500 double.
13576         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
13577         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
13578         && !TARGET_FPRS).
13580 2007-05-01  Richard Guenther  <rguenther@suse.de>
13582         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
13583         is NULL.
13585 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
13587         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
13589 2007-05-01  Jan Hubicka  <jh@suse.cz>
13591         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
13592         invariant.
13594 2007-05-01  Jan Hubicka  <jh@suse.cz>
13596         * tree.h (maybe_fold_offset_to_component_ref): Remove.
13597         (maybe_fold_offset_to_reference): Declare.
13598         * fold-const.c (fold_unary): Do not fold
13599         (type *)&A into &A->field_of_type_and_offset_0
13600         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
13601         size is unknown, give up.
13602         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
13603         offsets.
13604         (maybe_fold_offset_to_reference): New.
13605         (maybe_fold_stmt_indirect): Use it.
13606         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
13607         * gimplify.c (gimplify_conversion): Canonicalize conversions to
13608         field references.
13609         (gimplify_expr): Likewise for plus_expr.
13611 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
13613         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
13614         bsi_after_labels.  Always insert statements before bsi.
13615         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
13616         * predict.c (apply_return_prediction): Check for empty blocks.
13617         * cfgexpand.c (lab_rtx_for_bb): New variable.
13618         (label_rtx_for_bb): Do not create new tree labels.
13619         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
13620         (tree_expand_cfg): Initialize lab_rtx_for_bb.
13621         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
13622         creating edges.
13623         (label_for_bb): Add field used.
13624         (update_eh_label, main_block_label): Mark the label used.
13625         (cleanup_dead_labels): Remove unused labels.
13627 2007-05-01  Richard Guenther  <rguenther@suse.de>
13629         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
13630         if it is not about to be set.
13631         (get_value_range): Do not pre-allocate equiv bitmap.
13632         (update_value_range): No need to clear equiv field.
13633         (add_equivalence): Change prototype to get bitmap pointer.
13634         Allocate bitmap here if it is not already.
13635         (extract_range_from_assert): Do not allocate bitmap here.
13636         Update callers to add_equivalence.
13637         (extract_range_from_ssa_name): Likewise.
13638         (get_vr_for_comparison): New static helper.
13639         (compare_name_with_value): Handle NULL equiv bitmap by
13640         peeling the first iteration of the comparison loop.
13641         Use get_vr_for_comparison.
13642         (compare_names): Handle NULL equiv bitmaps by using fake
13643         ones.  Use get_vr_for_comparison.
13645 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
13647         * double-int.c (mpz_set_double_int): Moved from
13648         tree-ssa-loop-niter.c.
13649         (mpz_get_double_int): Likewise; also, add option to wrap
13650         out-of-range integers.
13651         * double-int.h: New prototypes for above.
13652         * tree.c (get_static_type_bounds): Moved from
13653         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
13654         TYPE_MAX_VALUE if they exist..
13655         * tree.h: New prototype for above.
13656         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
13657         get_type_bounds calls.
13658         (mpz_set_double_int): Move to double-int.c.
13659         (get_type_bounds): Move to tree.c, rename to
13660         get_static_type_bounds.
13661         (mpz_to_double_int): Move to double-int.c, rename to
13662         mpz_get_double_int.
13664 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
13666         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
13667         DIV0 exception can fall through to a normal return.
13669 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
13671         PR middle-end/22156
13672         Temporarily revert:
13673         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
13674         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
13675         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
13676         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
13677         initialize align to silence bogus warning.
13678         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
13679         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
13680         all_no_warning.
13681         (struct sra_walk_fns): Remove use_all parameter from use.
13682         (sra_hash_tree): Handle BIT_FIELD_REFs.
13683         (sra_elt_hash): Don't hash bitfld blocks.
13684         (sra_elt_eq): Skip them in parent compares as well.  Handle
13685         BIT_FIELD_REFs.
13686         (sra_walk_expr): Don't maintain or pass down use_all_p.
13687         (scan_use): Remove use_all parameter.
13688         (scalarize_use): Likewise.  Re-expand assignment to
13689         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
13690         output, and re-scalarize after output.  Don't mark anything
13691         for no warning.
13692         (scalarize_ldst): Adjust.
13693         (scalarize_walk_gimple_modify_statement): Likewise.
13694         (build_element_name_1): Handle BIT_FIELD_REFs.
13695         (instantiate_element): Don't warn for any element whose parent
13696         is used as a whole.
13697         (instantiate_missing_elements_1): Return the sra_elt.
13698         (canon_type_for_field): New.
13699         (try_instantiate_multiple_fields): New.
13700         (instantiate_missing_elemnts): Use them.
13701         (mark_no_warning): Removed.
13702         (generate_one_element_ref): Handle BIT_FIELD_REFs.
13703         (REPLDUP, sra_build_elt_assignment): New.
13704         (generate_copy_inout): Use them.
13705         (generate_element_copy): Likewise.  Handle bitfld differences.
13706         (generate_element_zero): Don't recurse for blocks.  Use
13707         sra_build_elt_assignment.
13708         (generate_one_element_int): Take elt instead of var.  Use
13709         sra_build_elt_assignment.
13710         (generate_element_init_1): Adjust.
13711         (scalarize_use, scalarize_copy): Use REPLDUP.
13712         (scalarize_ldst): Move assert before dereference.
13713         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
13715 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13717         PR C++/31721
13718         * tree.c (reconstruct_complex_type): Reconstruct a reference
13719         correctly.
13720         Also use the same mode for the pointer as the old pointer type.
13722 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
13724         * doc/trouble.texi (Interoperation): Remove note about Ultrix
13725         Fortran compiler.
13727 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
13729         PR rtl-optimization/31676
13730         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
13731         (df_refs_record): Call it.
13733 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
13735         * rtl.def (SS_ABS): New code.
13736         * config/bfin/bfin.c (print_operand): New modifier 'v'.
13737         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
13738         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
13739         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
13740         (bfin_init_builtins): Define them.
13741         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
13742         (bfin_expand_builtin): ... and handle the others here.
13743         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
13744         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
13745         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
13746         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
13747         operand is only HImode.
13749 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
13751         * regclass.c (scan_one_insn): Remove splitting of
13752         two address insns.
13754 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
13755             Nigel Stephens  <nigel@mips.com>
13757         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
13759 2007-04-28  Jan Hubicka  <jh@suse.cz>
13761         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
13762         insn_locators_alloc instead of insn_locators_initialize;
13763         call reset_block_changes.
13764         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
13765         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
13766         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
13767         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
13768         * config/score/score.c (th_output_mi_thunk): Likewise.
13769         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
13770         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
13771         tolerate uninitialized locator info.
13773         Re-apply:
13774         * function.c (init_function_start): Don't init line number info.
13775         (expand_function_end): Update.
13776         (reset_block_changes, record_block_change, finalize_block_changes,
13777         check_block_change, free_block_changes): Kill.
13778         * function.h (reset_block_changes, record_block_change,
13779         finalize_block_changes, check_block_change, free_block_changes):
13780         Remove prototypes.
13781         (struct function): Remove ib_boundaries_block.
13782         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13783         Use curr_insn_locator to initialize locator.
13784         (emit_line_note): Remove.
13785         * cfgexpand.c (expand_gimple_cond_expr): Update.
13786         (construct_exit_block): Likewise.
13787         (tree_expand_cfg): Initialize/finalize locators.
13788         * expr.c (expand_expr_real): Update.
13789         * cfglayout.c (line_locators_locs, line_locators_lines,
13790         file_locators_locs, file_locators_files): Remove.
13791         (set_block_levels): Move to cfgexpand.c.
13792         (insn_locators_initialize): Remove.
13793         (pass_insn_locators_initialize): Remove.
13794         (locations_locators_locs, locations_locators_vals): New static vars.
13795         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13796         Likewise.
13797         (insn_locators_alloc, insn_locators_finalize,
13798         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13799         New functions.
13800         (locator_location): New.
13801         (locator_line, locator_file): Rewrite.
13802         * rtl.h (emit_line_note): Kill.
13803         (insn_locators_alloc, insn_locators_finalize,
13804         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13805         Declare.
13806         * tree-inline.c (initialize_cfun): Do not initialize
13807         ib_boundaries_block.
13808         * passes.c (pass_insn_locators_initialize): Remove.
13810 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
13812         * tree-cfg.c (move_block_to_fn): Release bb from dominance
13813         info.  Update last_basic_block correctly.
13815 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
13817         PR target/31701
13818         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
13819         register itself to hold the offset constant.  Tell flow the use
13820         of r4 and r5 when they are used.
13822 2007-04-27  Richard Guenther  <rguenther@suse.de>
13824         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
13825         if we simplified anything.
13826         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
13827         warnings until we did a simplification and the stmt was not
13828         marked as TREE_NO_WARNING.
13830 2007-04-27  Mike Stump  <mrs@apple.com>
13832         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
13834 2007-04-27  Ian Lance Taylor  <iant@google.com>
13836         PR middle-end/31710
13837         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
13838         TYPE_MAX_VALUE exist, convert them to the new type.
13840 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13842         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
13843         if it claims to be available.
13844         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
13845         edge is redirected.
13846         (perform_tree_ssa_dce): Always free postdominators.
13848 2007-04-27  Richard Henderson  <rth@redhat.com>
13850         * config/alpha/predicates.md (aligned_memory_operand): Mark
13851         as define_special_predicate.
13852         (unaligned_memory_operand, normal_memory_operand): Likewise.
13853         (reg_or_unaligned_mem_operand): Remove.
13854         (any_memory_operand): Match the documentation and check for
13855         non-renumbered pseudos during reload.
13856         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
13857         alpha_secondary_reload_class, update to new interface, make static.
13858         Handle CQImode like HImode.  Remove FP subreg check.
13859         (alpha_expand_mov): Use replace_equiv_address.
13860         (alpha_expand_mov_nobwx): Use any_memory_operand.
13861         (TARGET_SECONDARY_RELOAD): New.
13862         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
13863         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
13864         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
13865         * config/alpha/alpha.md: ... here.
13866         (RELOAD12, reloadmode): New.
13867         (movcqi): New.
13868         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
13869         Don't handle the aligned case here.
13870         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
13871         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
13872         reload_inhi_help.  Don't expect a scratch register.
13873         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
13874         reload_outhi_help.
13875         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
13877 2007-04-27  Richard Guenther  <rguenther@suse.de>
13879         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
13881 2007-04-27  Richard Guenther  <rguenther@suse.de>
13883         PR tree-optimization/30965
13884         PR tree-optimization/30978
13885         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
13886         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
13887         (find_equivalent_equality_comparison): Likewise.
13888         (simplify_cond): Likewise.
13889         (get_prop_source_stmt): New helper.
13890         (get_prop_dest_stmt): Likewise.
13891         (can_propagate_from): Likewise.
13892         (remove_prop_source_from_use): Likewise.
13893         (combine_cond_expr_cond): Likewise.
13894         (forward_propagate_comparison): New function.
13895         (forward_propagate_into_cond): Rewrite to use fold for
13896         tree combining.
13897         (tree_ssa_forward_propagate_single_use_vars): Call
13898         forward_propagate_comparison to propagate comparisons.
13900 2007-04-27  Richard Guenther  <rguenther@suse.de>
13902         PR tree-optimization/31715
13903         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
13904         sure to do computation on the offset in an appropriate
13905         signed type.
13907 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
13909         * reload.h (elimination_target_reg_p): Declare.
13910         * reload.c (find_reloads): Don't apply the reg_rtx move
13911         optimization if the SET_DEST satisfies elimination_target_reg_p.
13912         * reload1.c (elimination_target_reg_p): New function.
13913         (gen_reload): In the move/add2 fallback, make sure that op0
13914         does not overlap the destination register.
13916 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13918         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
13919         transform only GIMPLE_MODIFY_STMTs.
13920         * tree-complex.c (expand_complex_operations_1): Ditto.
13921         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
13922         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
13923         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
13924         branches.
13925         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
13926         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
13927         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
13928         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
13929         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
13930         slpeel_add_loop_guard): Ditto.
13931         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
13932         * lambda-code.c (perfect_nestify): Ditto.
13933         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
13934         before the first statement.
13935         * tree-optimize.c (execute_free_datastructures): Fix comments.
13936         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
13937         * tree-flow.h (disband_implicit_edges): Declaration removed.
13938         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
13939         branches.
13940         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
13941         COND_EXPRs without gotos.
13942         (disband_implicit_edges, has_label_p): Removed.
13943         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
13944         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
13945         branches.
13946         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
13947         side effects.
13948         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
13949         also for COND_EXPRs.
13950         * cfgexpand.c (label_rtx_for_bb): New function.
13951         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
13952         Use label_rtx_for_bb to find the labels.
13953         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
13954         last block.  Detect fallthru edges.
13956 2007-04-26  Ian Lance Taylor  <iant@google.com>
13958         PR target/28675
13959         * reload.c (find_reloads_subreg_address): If the address was valid
13960         in the original mode but not in the new mode, reload the whole
13961         address.
13963 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13965         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
13966         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
13967         (cleanup_control_expr_graph): Do not invalidate dominance info.
13968         Record altered blocks.
13969         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
13970         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
13971         cleanup_tree_cfg_bb): New functions.
13972         (remove_forwarder_block): Do not maintain the worklist of blocks.
13973         Record altered blocks.
13974         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
13975         not over whole cfg.
13976         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
13977         delete_unreachable_blocks if dominators are not available.
13978         * tree-inline.c (optimize_inline_calls): Free dominance information
13979         earlier.
13980         * tree-flow.h (remove_edge_and_dominated_blocks,
13981         cfgcleanup_altered_bbs): Altered.
13982         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
13983         blocks.
13984         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
13985         functions.
13986         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
13987         do not invalidate dominators.
13989 2007-04-26  Anatoly Sokolov <aesok@post.ru>
13991         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
13992         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
13993         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
13994         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13996 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
13998         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
14000 2007-04-26  Richard Guenther  <rguenther@suse.de>
14002         PR tree-optimization/31703
14003         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
14004         the right type for the target of the bittest.
14006 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
14008         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
14009         ix86_sol10_return_in_memory.
14011 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
14013         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
14014         variables.
14016 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
14018         PR c++/31598
14019         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
14021         PR tree-optimization/30558
14022         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
14023         clear this_state.prev_try.
14025 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
14026             Mark Mitchell  <mark@codesourcery.com>
14028         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
14029         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
14030         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
14032 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
14034         PR driver/31107
14035         * doc/invoke.texi (%:print-asm-header): Document.
14036         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
14037         and -ftarget-help.
14038         (static_spec_functions): Add print-asm-header.
14039         (main): Print a banner before the --target-help linker options.
14040         (print_asm_header_spec_function): New function.
14042 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
14044         PR target/31403
14045         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
14046         (movsf_ie): Likewise.
14048 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
14050         * doc/extend.texi ([Type Traits]): Adjust per N2255.
14052 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
14054         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
14055         exception for divide-by-zero.
14056         (__umodsi3, __modsi3): Likewise.
14058 2007-04-25  Dirk Mueller  <dmueller@suse.de>
14060         * c-typeck.c (build_compound_expr): Annotate warning()
14061         call with OPT_Wunused_value.
14062         * tree-ssa.c (warn_uninit): Annotate warning with
14063         OPT_Wunintialized.
14064         * c-common.c (handle_sentinel_attribute): Annotate warning
14065         call with OPT_Wattributes.
14067 2007-04-25  Thiemo Seufer  <ths@mips.com>
14069         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
14070         (mips16): Fix typo.
14071         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
14072         on to the assembler.  Improve handling of -mno-mips16.  Add handling
14073         of -mno-mips3d, -mno-dsp, -mno-dspr2.
14074         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
14075         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
14076         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
14078 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
14080         PR target/31680
14081         * config/i386/winnt.c (i386_pe_file_end): Strip only
14082         USER_LABEL_PREFIX when writing export name.
14084 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
14086         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
14087         sh/elf.h, vx-common.h and vxworks.h.
14088         * config/sh/sh.h: Include config/vxworks-dummy.h.
14089         (SUBTARGET_OVERRIDE_OPTIONS): Define.
14090         (OVERRIDE_OPTIONS): Use it.
14091         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
14092         (vxworks_picreg): New pattern.
14093         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
14094         VXWORKS_OS_CPP_BUILTINS.
14095         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
14096         to their VXWORKS_* equivalents.
14097         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
14098         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
14099         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
14100         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
14101         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
14102         -mrtp/-fPIC multilibs.
14103         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
14104         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
14105         (MULTILIB_OSDIRNAMES): Delete.
14107 2007-04-25  Anatoly Sokolov <aesok@post.ru>
14109         PR target/18989
14110         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
14112 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
14114         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
14115         rounding mode to be specified by the caller.
14116         (real_to_mpfr) Likewise.
14117         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
14118         include new arguments.
14119         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
14121 2007-04-24  Ian Lance Taylor  <iant@google.com>
14123         PR tree-optimization/31605
14124         * tree-vrp.c (set_value_range): Check that min and max are not
14125         both overflow infinities.
14126         (set_value_range_to_value): New static function.
14127         (extract_range_from_binary_expr): Call set_value_range_to_value.
14128         (extract_range_from_cond_expr): Likewise.
14129         (extract_range_from_expr): Likewise.
14130         (extract_range_from_unary_expr): Likewise.  Don't create a range
14131         which overflows on both sides.
14132         (vrp_meet): Check for a useless range.
14133         (vrp_visit_phi_node): If we see a constant which looks like an
14134         overflow infinity, turn off the TREE_OVERFLOW flag.
14136 2007-04-24  Ian Lance Taylor  <iant@google.com>
14138         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
14140 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
14142         PR diagnostic/25923
14143         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
14144         diagnostic message is being built.
14145         * tree-pretty-print.c (dump_generic_node): Only write the
14146         formatted text into BUFFER's stream if we are not building a
14147         diagnostic message.
14148         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
14149         dump_generic_node.
14150         * Makefile.in (toplev.o): Depend on tree-pass.h.
14152 2007-04-24  Ian Lance Taylor  <iant@google.com>
14154         PR tree-optimization/31602
14155         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
14156         conditionals in the copied loop header.
14157         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
14158         warnings if TREE_NO_WARNING is set.
14159         * doc/invoke.texi (Warning Options): Clarify that
14160         -Wstrict-overflow does not warn about loops.
14162 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
14164         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
14165         expand on the comment about _Decimal128 arguments and check the
14166         integer result of the modulus operation; for 64-bit ELF ABI, ensure
14167         that _Decimal128 argument uses even/odd register pair.
14168         (function_arg): Ditto.
14170 2007-04-24  Hui-May Chang <hm.chang@apple.com>
14172         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
14173         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
14175 2007-04-24  Richard Guenther  <rguenther@suse.de>
14176             Olga Golovanevsky  <olga@il.ibm.com>
14178         * fold-const.c (multiple_of_p): Check for bottom
14179         to be zero.
14181 2007-04-24  Richard Henderson  <rth@redhat.com>
14183         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
14184         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
14185         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
14186         looking for non-zero bits shifted out.  Avoid a recursive call
14187         when constructing the scalar.
14188         (__floatundisf): Likewise.
14190 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
14192         * dwarf2out.c (field_byte_offset): Move the existing logic
14193         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
14194         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
14196 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14198         PR target/31641
14199         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
14200         length argument of 0 for memset.
14201         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
14202         unsigned shift instead of the signed variant.
14204 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14206         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
14207         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
14208         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
14209         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
14210         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
14211         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
14212         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
14213         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
14214         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
14215         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
14216         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
14217         "mul<mode>3", "div<mode>3"): Insn definitions added.
14218         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
14219         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
14220         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
14221         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
14222         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
14223         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
14224         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
14225         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
14226         TARGET_FLOAT_FORMAT): Macro definitions removed.
14227         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
14228         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
14229         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
14230         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
14231         (s390_gen_rtx_const_DI): Function removed.
14232         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
14234 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
14236         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
14237         over an external ffs function.
14239 2007-04-24  Chao-ying Fu  <fu@mips.com>
14240             Richard Sandiford  <richard@nildram.co.uk>
14242         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
14243         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
14244         (smadd_widen_optab, umadd_widen_optab): Define.
14245         * optabs.c (init_optabs): Initialize smadd_widen_optab and
14246         umadd_widen_optab.
14247         * genopinit.c (optabs): Fill in smadd_widen_optab and
14248         umadd_widen_optab.
14249         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
14250         and umadd_widen_optab to implement multiply-add sequences.
14251         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
14252         (<u>maddsidi4): ...this.  Extend condition to include
14253         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
14254         of operand 0 to "ka" and use the three-operand form of madd<u>
14255         for TARGET_DSPR2.
14256         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
14257         to define_expands.
14258         * config/mips/constraints.md (ka): New register constraint.
14260 2007-04-24  Jan Hubicka  <j@suse.cz>
14262         Revert:
14264         2007-04-23  Jan Hubicka  <jh@suse.cz>
14265         * function.c (init_function_start): Don't init line number info.
14266         (expand_function_end): Update.
14267         (reset_block_changes, record_block_change, finalize_block_changes,
14268         check_block_change, free_block_changes): Kill.
14269         * function.h (reset_block_changes, record_block_change,
14270         finalize_block_changes, check_block_change, free_block_changes):
14271         Remove prototypes.
14272         (struct function): Remove ib_boundaries_block.
14273         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
14274         Use curr_insn_locator to initialize locator.
14275         (emit_line_note): Remove.
14276         * cfgexpand.c (expand_gimple_cond_expr): Update.
14277         (construct_exit_block): Likewise.
14278         (tree_expand_cfg): Initialize/finalize locators.
14279         * expr.c (expand_expr_real): Update.
14280         * cfglayout.c (line_locators_locs, line_locators_lines,
14281         file_locators_locs, file_locators_files): Remove.
14282         (set_block_levels): Move to cfgexpand.c.
14283         (insn_locators_initialize): Remove.
14284         (pass_insn_locators_initialize): Remove.
14285         (locations_locators_locs, locations_locators_vals): New static vars.
14286         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
14287         Likewise.
14288         (insn_locators_alloc, insn_locators_finalize,
14289         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
14290         New functions.
14291         (locator_location): New.
14292         (locator_line, locator_file): Rewrite.
14293         * rtl.h (emit_line_note): Kill.
14294         (insn_locators_alloc, insn_locators_finalize,
14295         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
14296         Declare.
14297         * tree-inline.c (initialize_cfun): Do not initialize
14298         ib_boundaries_block.
14299         * passes.c (pass_insn_locators_initialize): Remove.
14301 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
14303         * doc/invoke.texi: Removed leading '-' from option index entries.
14305 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
14307         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
14308         Use phi_nodes_ptr.
14309         (create_phi_node): Use set_phi_nodes.
14310         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
14311         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
14312         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
14313         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
14314         (bsi_start, bsi_last): Use bb_stmt_list.
14315         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
14316         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
14317         Traverse the statements using tsi iterator.
14318         * basic-block.h (struct basic_block_def): Fields stmt_list
14319         and phi_nodes moved to ...
14320         (struct tree_bb_info): ... new structure.
14321         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
14322         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
14323         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
14324         (tree_verify_flow_info): Verify that il.tree is not set for
14325         entry and exit block.
14326         (tree_split_block): Use set_bb_stmt_list.
14328 2007-04-23  Mike Stump  <mrs@apple.com>
14330         * config/i386/i386.c (ix86_tune_features
14331         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
14332         nocona and core2.
14334 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
14336         * config/i386/i386.md (prefix_extra): New attribute.
14337         (length): Add prefix_extra.
14339         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
14340         (sse2_movntv2di): Likewise.
14341         (sse2_cvtps2dq): Likewise.
14342         (sse2_cvtpd2pi): Likewise.
14343         (sse2_cvttpd2pi): Likewise.
14344         (*sse2_cvtpd2ps): Likewise.
14345         (*add<mode>3): Likewise.
14346         (sse2_ssadd<mode>3): Likewise.
14347         (sse2_usadd<mode>3): Likewise.
14348         (*sub<mode>3): Likewise.
14349         (sse2_sssub<mode>3): Likewise.
14350         (sse2_ussub<mode>3): Likewise.
14351         (*mulv8hi3): Likewise.
14352         (*smulv8hi3_highpart): Likewise.
14353         (*umulv8hi3_highpart): Likewise.
14354         (sse2_umulv2siv2di3): Likewise.
14355         (sse2_pmaddwd): Likewise.
14356         (ashr<mode>3): Likewise.
14357         (lshr<mode>3): Likewise.
14358         (ashl<mode>3): Likewise.
14359         (sse2_ashlti3): Likewise.
14360         (sse2_lshrti3): Likewise.
14361         (*umaxv16qi3): Likewise.
14362         (*smaxv8hi3): Likewise.
14363         (*uminv16qi3): Likewise.
14364         (*sminv8hi3): Likewise.
14365         (sse2_eq<mode>3): Likewise.
14366         (sse2_gt<mode>3): Likewise.
14367         (*and<mode>3): Likewise.
14368         (sse2_nand<mode>3): Likewise.
14369         (*ior<mode>3): Likewise.
14370         (*xor<mode>3): Likewise.
14371         (sse2_packsswb): Likewise.
14372         (sse2_packssdw): Likewise.
14373         (sse2_packuswb): Likewise.
14374         (sse2_punpckhbw): Likewise.
14375         (sse2_punpcklbw): Likewise.
14376         (sse2_punpckhwd): Likewise.
14377         (sse2_punpcklwd): Likewise.
14378         (sse2_punpckhdq): Likewise.
14379         (sse2_punpckldq): Likewise.
14380         (sse2_punpckhqdq): Likewise.
14381         (sse2_punpcklqdq): Likewise.
14382         (*sse2_pinsrw): Likewise.
14383         (*sse2_pextrw): Likewise.
14384         (sse2_pshufd_1): Likewise.
14385         (sse2_uavgv16qi3): Likewise.
14386         (sse2_uavgv8hi3): Likewise.
14387         (sse2_psadbw): Likewise.
14388         (sse2_pmovmskb): Likewise.
14389         (*sse2_maskmovdqu): Likewise.
14390         (*sse2_maskmovdqu_rex64): Likewise.
14391         (sse4a_extrqi): Likewise.
14392         (sse4a_extrq): Likewise.
14393         (sse3_lddqu): Set prefix_rep.
14394         (sse3_addsubv4sf3): Likewise.
14395         (sse3_haddv4sf3): Likewise.
14396         (sse3_hsubv4sf3): Likewise.
14397         (sse_cvtss2si): Likewise.
14398         (sse_cvtss2si_2): Likewise.
14399         (sse_cvtss2siq): Likewise.
14400         (sse_cvtss2siq_2): Likewise.
14401         (sse_cvttss2si): Likewise.
14402         (sse_cvttss2siq): Likewise.
14403         (sse2_cvttps2dq): Likewise.
14404         (sse3_movshdup): Likewise.
14405         (sse3_movsldup): Likewise.
14406         (sse2_cvtsd2si): Likewise.
14407         (sse2_cvtsd2si_2): Likewise.
14408         (sse2_cvtsd2siq): Likewise.
14409         (sse2_cvtsd2siq_2): Likewise.
14410         (sse2_cvttsd2si): Likewise.
14411         (sse2_cvttsd2siq): Likewise.
14412         (*sse2_cvtpd2dq): Likewise.
14413         (*sse2_cvttpd2dq): Likewise.
14414         (sse2_pshuflw_1): Likewise.
14415         (sse2_pshufhw_1): Likewise.
14416         (sse4a_insertqi): Likewise.
14417         (sse4a_insertq): Likewise.
14418         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
14419         (ssse3_phadddv4si3): Likewise.
14420         (ssse3_phaddswv8hi3): Likewise.
14421         (ssse3_phsubwv8hi3): Likewise.
14422         (ssse3_phsubdv4si3): Likewise.
14423         (ssse3_phsubswv8hi3): Likewise.
14424         (ssse3_pmaddubswv8hi3): Likewise.
14425         (ssse3_pmulhrswv8hi3): Likewise.
14426         (ssse3_pshufbv16qi3): Likewise.
14427         (ssse3_psign<mode>3): Likewise.
14428         (ssse3_palignrti): Likewise.
14429         (abs<mode>2): Likewise.
14430         (ssse3_phaddwv4hi3): Set prefix_extra.
14431         (ssse3_phadddv2si3): Likewise.
14432         (ssse3_phaddswv4hi3): Likewise.
14433         (ssse3_phsubwv4hi3): Likewise.
14434         (ssse3_phsubdv2si3): Likewise.
14435         (ssse3_phsubswv4hi3): Likewise.
14436         (ssse3_pmaddubswv4hi3): Likewise.
14437         (ssse3_pmulhrswv4hi3): Likewise.
14438         (ssse3_pshufbv8qi3): Likewise.
14439         (ssse3_psign<mode>3): Likewise.
14440         (ssse3_palignrdi): Likewise.
14441         (abs<mode>2): Likewise.
14442         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
14443         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
14444         (sse2_pmovmskb): Set mode to SI instead of V2DF.
14446 2007-04-23  Nick Clifton  <nickc@redhat.com>
14448         * params.def: Fix formatting of emacs local variables.
14450 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
14452         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
14453         move if inter-unit move isn't allowed.
14454         Don't split moving the first element of V2DI to DI to inter-unit
14455         move if inter-unit move isn't allowed.
14457 2007-04-23  Richard Guenther  <rguenther@suse.de>
14459         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
14460         and CDI_POST_DOMINATORS separately.
14462 2007-04-23  Nick Clifton  <nickc@redhat.com>
14464         * c.opt (Wformat-contains-nul): Add warning attribute.
14466 2007-04-23  Jan Hubicka  <jh@suse.cz>
14468         * function.c (init_function_start): Don't init line number info.
14469         (expand_function_end): Update.
14470         (reset_block_changes, record_block_change, finalize_block_changes,
14471         check_block_change, free_block_changes): Kill.
14472         * function.h (reset_block_changes, record_block_change,
14473         finalize_block_changes, check_block_change, free_block_changes):
14474         Remove prototypes.
14475         (struct function): Remove ib_boundaries_block.
14476         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
14477         Use curr_insn_locator to initialize locator.
14478         (emit_line_note): Remove.
14479         * cfgexpand.c (expand_gimple_cond_expr): Update.
14480         (construct_exit_block): Likewise.
14481         (tree_expand_cfg): Initialize/finalize locators.
14482         * expr.c (expand_expr_real): Update.
14483         * cfglayout.c (line_locators_locs, line_locators_lines,
14484         file_locators_locs, file_locators_files): Remove.
14485         (set_block_levels): Move to cfgexpand.c.
14486         (insn_locators_initialize): Remove.
14487         (pass_insn_locators_initialize): Remove.
14488         (locations_locators_locs, locations_locators_vals): New static vars.
14489         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
14490         Likewise.
14491         (insn_locators_alloc, insn_locators_finalize,
14492         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
14493         New functions.
14494         (locator_location): New.
14495         (locator_line, locator_file): Rewrite.
14496         * rtl.h (emit_line_note): Kill.
14497         (insn_locators_alloc, insn_locators_finalize,
14498         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
14499         Declare.
14500         * tree-inline.c (initialize_cfun): Do not initialize
14501         ib_boundaries_block.
14502         * passes.c (pass_insn_locators_initialize): Remove.
14504 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14506         PR middle-end/31448
14507         * expr.c (reduce_to_bit_field_precision): Handle
14508         CONST_INT rtx's.
14510 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
14512         PR tree-optimization/24659
14513         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
14514         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
14515         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
14516         * genopinit.c (optabs): Rename vec_pack_mod_optab
14517         to vec_pack_trunc_optab.
14518         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
14519         early for scalar floating point operands for NOP_EXPR.
14520         (vectorizable_type_promotion): Ditto.
14521         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
14522         vec_pack_trunc_optab.
14523         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
14525         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
14526         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
14527         Rename from VEC_PACK_MOD_EXPR.
14528         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
14529         * expr.c (expand_expr_real_1): Ditto.
14530         * tree-inline.c (estimate_num_insns_1): Ditto.
14531         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
14533         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
14534         (vec_unpacks_lo_v4sf): Ditto.
14535         (vec_pack_trunc_v2df): Ditto.
14536         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
14537         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
14538         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
14540         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
14541         vec_pack_mod_v8hi.
14542         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
14544         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
14545         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
14546         packing of floating point operands.
14547         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
14548         represent unpacking of floating point operands.
14549         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
14550         [vec_unpacks_hi]: Ditto.
14551         [vec_unpacks_lo]: Ditto.
14553 2007-04-22  Jan Hubicka  <jh@suse.cz>
14555         * final.c (rest_of_handle_final): Call
14556         targetm.asm_out.constructor/targetm.asm_out.destructor
14557         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
14558         proper priority via decl_*_priority_insert.
14559         * c-common.c (c_expand_body): Likewise.
14561 2007-04-22  Richard Guenther  <rguenther@suse.de>
14563         PR tree-optimization/29789
14564         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
14565         (rewrite_reciprocal): New helper split out from
14566         determine_invariantness_stmt.
14567         (rewrite_bittest): Likewise.
14568         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
14569         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
14570         is not.
14572 2007-04-22  Revital Eres  <eres@il.ibm.com>
14574         * loop-unroll.c (var_to_expand): New field to support also
14575         insns of the form x = something + x.
14576         (analyze_insn_to_expand_var): Use it.
14577         (expand_var_during_unrolling): Likewise.
14579 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
14581         * predict.c: Include pointer-set.h.
14582         (bb_predictions): New variable.
14583         (tree_predicted_by_p, tree_predict_edge,
14584         remove_predictions_associated_with_edge): Use bb_predictions map
14585         instead of bb->predictions.
14586         (clear_bb_predictions, assert_is_empty): New functions.
14587         (combine_predictions_for_bb): Use bb_predictions map.  Call
14588         clear_bb_predictions.
14589         (tree_estimate_probability): Create and free bb_predictions map.
14590         * Makefile.in (predict.o): Add pointer-set.h dependency.
14591         * basic-block.h (struct basic_block_def): Remove predictions
14592         field.
14593         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
14595 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14597         PR target/31480
14598         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
14599         is null.
14601 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14603         * timevar.c (timevar_print): Change reference of --disable-checking to
14604         --enable-checking=release.  Also warn if assert checking is disabled.
14606 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14608         PR C/30265
14609         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
14610         decl as addressable if the compound literal was marked as
14611         addressable.
14612         Mark the decl as a gimple register if it is a complex or
14613         vector decl and does not live in memory.
14615 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14617         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
14618         (GENERIC_NEXT): New function macro.
14619         (PHI_CHAIN): Use phi_node's new chain variable.
14620         (tree_phi_node): Change tree_common to tree_base
14621         and add the chain field.
14622         * tree-phinodes.c (make_phi_node): Don't set
14623         TREE_TYPE on the new node.
14624         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
14625         instead of checking GIMPLE_TUPLE_P in chain_next.
14626         * tree-vect-transform.c
14627         (get_initial_def_for_induction): Look at
14628         PHI_RESULT_TREE for the type of the phi node.
14629         (update_vuses_to_preheader): Use PHI_CHAIN
14630         instead of TREE_CHAIN on the phi node.
14631         * tree-ssa-structalias.c (compute_points_to_sets):
14632         Likewise.
14633         (ipa_pta_execute): Likewise.
14635 2007-04-21  Richard Guenther  <rguenther@suse.de>
14637         PR middle-end/31136
14638         * fold-const.c (fold_unary): Call fold_convert_const on the
14639         original tree.
14641 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
14643         * gcse.c (store_killed_in_insn): Handle PARALLELs.
14644         (store_killed_in_pat): New.
14646 2007-04-20  Richard Henderson  <rth@redhat.com>
14648         PR target/31628
14649         * config/i386/i386.c (type_has_variadic_args_p): Look for any
14650         TREE_LIST with a void_type_node value, not void_list_node exactly.
14652 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
14654         * doc/standards.texi: Re-arrange into language-specific
14655         subsections. Add a C++ section, documenting which standards we
14656         support.
14658 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
14660         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
14661         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
14663 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
14665         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
14666         ecrti.o and crtbegin.o.
14667         (LIB_DEFAULT_SPEC): Include -lc.
14668         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
14670 2007-04-20  Richard Henderson  <rth@redhat.com>
14672         PR target/28623
14673         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
14674         argument; update all callers.
14675         (get_unaligned_offset): New.
14676         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
14677         get_unaligned_address, just pass on the address directly.
14678         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
14679         the subreg in the helper patterns.
14680         (unaligned_extendqidi_le): Use get_unaligned_offset.
14681         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
14682         (unaligned_extendhidi_be): Likewise.
14683         (unaligned_extendhidi): Tidy.
14684         * config/alpha/alpha-protos.h: Update.
14686 2007-04-20  Richard Henderson  <rth@redhat.com>
14688         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
14689         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
14690         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
14691         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14692         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14693         (CPP_SPEC): Don't include %(cpp_subtarget).
14694         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
14695         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14696         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
14698 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
14700         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
14701         for __builtin_ia32_cmpordss.
14703         PR tree-optimization/31632
14704         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
14705         and arg1 for optimizations of comparison against min/max values.
14706         Fold arg0 to arg1's type for optimizations of comparison against
14707         min+1 and max-1 values.
14709 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
14711         * reload.c (combine_reloads): When trying to use a dying register,
14712         check whether it's uninitialized and don't use if so.
14714 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
14716         * fold-const.c: Remove prototypes for native_encode_expr and
14717         native_interpret_expr.
14718         (native_encode_expr): Make non-static.
14719         (native_interpret_expr): Likewise.
14720         * tree.h: Add prototypes for the above.
14722 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
14724         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
14725         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
14726         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
14727         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
14728         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
14729         Add length attributes.
14731 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
14733         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
14734         not that it is 1.
14736         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
14737         __STDC_WANT_DEC_FP__.
14739 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
14741         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
14742         for long double compatibility.
14743         * configure: Regenerate.
14745 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
14747         PR rtl-optimization/29841
14748         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
14749         trap instructions.
14750         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
14751         that may cause control flow transfer from being moved.
14753 2007-04-18  Jan Hubicka  <jh@suse.cz>
14755         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
14756         types.
14758 2007-04-18  Eric Christopher  <echristo@apple.com>
14760         * config/rs6000/darwin.md (load_macho_picbase): Use link register
14761         only. Update operands.
14762         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
14763         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
14764         link register to pic register.
14766 2007-04-18  Dirk Mueller  <dmueller@suse.de>
14768         PR diagnostic/31227
14769         * tree-vrp.c (search_for_addr_array): New.
14770         (check_array_bounds): Suppress warning about
14771         address taken of array refs if its not de-referenced.
14773 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14775         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
14776         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
14778         * tree-vectorizer.h (NITERS_KNOWN_P): New.
14779         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
14780         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
14782         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
14783         dump print.
14784         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
14785         print message.
14786         (vect_analyze_scalar_cycles): Fix indentation.
14787         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
14788         (vect_mark_relevant): Include phis in relevance analysis.
14790         * tree-vect-transform.c (vect_transform_loop): Add an assert.
14792 2007-04-18  Anatoly Sokolov <aesok@post.ru>
14794         * config/avr/avr.c (ptrreg_to_str): Replace error() with
14795         output_operand_lossage().
14797 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14799         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
14800         the unused code for reduction without adjust-in-epilog to simplify the
14801         function.
14803 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
14805         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
14806         (S390_TDC_NEGATIVE_ZERO): New constant.
14807         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
14808         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
14809         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
14810         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
14811         (S390_TDC_POSITIVE_INFINITY): New constant.
14812         (S390_TDC_NEGATIVE_INFINITY): New constant.
14813         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
14814         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
14815         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
14816         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
14817         (S390_TDC_INFINITY): New constant.
14818         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
14819         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
14820         optimization for UNSPEC_CCZ_TO_INT.
14821         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
14822         ("*ccz_to_int"): New insn.
14823         ("isinf<mode>2"): New insn.
14824         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
14825         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
14826         (UNSPEC_CCZ_TO_INT): New constant.
14828 2007-04-18  Richard Guenther  <rguenther@suse.de>
14830         PR tree-optimization/19431
14831         PR tree-optimization/21463
14832         * tree-pass.h (pass_phiprop): Declare.
14833         * passes.c (init_optimization_passes): New phiprop pass.
14834         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
14835         (phivn_valid_p): New helper function.
14836         (phiprop_insert_phi): Likewise.
14837         (propagate_with_phi): Likewise.
14838         (tree_ssa_phiprop): New propagator propagating loads
14839         through phi nodes if profitable.
14841 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14843         * tree-vect-analyze.c (process_use): New function.
14844         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
14845         Check phis in all bbs.
14846         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
14847         assert.
14849 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
14851         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
14852         we use REG_EQUAL.
14854 2007-04-17  Anatoly Sokolov <aesok@post.ru>
14856         PR target/30483
14857         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
14858         error().
14860 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
14862         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
14863         on "0".
14864         (sse_vmmulv4sf3): Likewise.
14865         (sse2_vmaddv2df3): Likewise.
14866         (sse2_vmmulv2df3): Likewise.
14868 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
14870         PR rtl-optimization/31360
14871         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
14872         (target_reg_cost): New.
14873         (init_set_costs): Initialize target_reg_cost.  Add comments
14874         regarding the rationale of the costs.
14875         (global_cost_for_size): Renamed to...
14876         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
14877         of register pressure.
14878         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
14879         estimate_reg_pressure_cost.  Add number of ivs.
14880         (determine_set_costs): Dump target_reg_cost.
14881         * loop-invariant.c (gain_for_invariant):  Use
14882         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
14883         (best_gain_for_invariant, find_invariants_to_move): Remove
14884         n_inv_uses.
14885         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
14886         (target_reg_cost): Declare.
14887         (global_cost_for_size): Declaration removed.
14888         (estimate_reg_pressure_cost): Declare.
14890 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
14892         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
14893         regnos into even/odd register pairs.
14894         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
14895         TDmode similar to the other floating point modes.
14896         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
14897         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
14898         define_expand's.
14899         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
14900         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
14901         (movdd_hardfloat64): Use TARGET_MFPGPR.
14903 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
14905         * reload1.c (delete_output_reload): Don't count output in n_inherited.
14907         Revert
14908         2005-01-05  Richard Henderson  <rth@redhat.com>
14909         PR rtl-opt/10692
14910         * reload1.c (do_input_reload): Restrict the optimization deleteing
14911         a previous output reload to RELOAD_FOR_INPUT.
14913 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
14915         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
14916         induc_vec_info_type.
14917         (vectorizable_induction): New function declaration.
14918         * tree-vect-transform.c (get_initial_def_for_induction): No need to
14919         check if already vectorized.  Find first place in BB where new stmts
14920         can be inserted.  Takes only one argument.
14921         (vectorizable_induction): New function.
14922         (vect_transform_stmt): Add case for induc_vec_info_type to call
14923         vectorizable_induction.
14924         (vect_transform_loop): Consider phis for vectorization.
14925         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
14926         condition.
14927         (analyze_operations): Call vectorizable_induction when analyzing phis.
14928         Fix comment.
14929         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
14930         (vect_mark_relevant): Include phis in relevance analysis.
14931         (vect_mark_stmts_to_be_vectorize): Likewise.
14932         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
14934 2007-04-16  Lawrence Crowl  <crowl@google.com>
14936         * doc/invoke.texi (Debugging Options): Add documentation for the
14937         -femit-struct-debug options -femit-struct-debug-baseonly,
14938         -femit-struct-debug-reduced, and
14939         -femit-struct-debug-detailed[=...].
14941         * c-opts.c (c_common_handle_option): Add
14942         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
14943         and OPT_femit_struct_debug_detailed_.
14944         * c.opt: Add specifications for
14945         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
14946         and -femit-struct-debug-detailed[=...].
14947         * opts.c (set_struct_debug_option): Parse the
14948         -femit-struct-debug-... options.
14949         * opts.c (matches_main_base, main_input_basename,
14950         main_input_baselength, base_of_path, matches_main_base): Add
14951         variables and functions to compare header base name to compilation
14952         unit base name.
14953         * opts.c (should_emit_struct_debug): Add to determine to emit a
14954         structure based on the option.
14955         (dump_struct_debug) Also disabled function to debug this
14956         function.
14957         * opts.c (handle_options): Save the base name of the
14958         compilation unit.
14960         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
14961         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
14962         This hook indicates if a type is generic.  Set it by default
14963         to "never generic".
14964         * langhooks.h (struct lang_hooks_for_types): Add a new hook
14965         to determine if a struct type is generic or not.
14966         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
14967         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
14968         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
14969         with live C++ hook.
14971         * flags.h (enum debug_info_usage): Add an enumeration to describe
14972         a program's use of a structure type.
14973         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
14974         to indicate the program's usage of the type.  Filter structs based
14975         on the -femit-struct-debug-... specification.
14976         (gen_type_die): Split into two routines, gen_type_die and
14977         gen_type_die_with_usage.  gen_type_die is now a wrapper
14978         that assumes direct usage.
14979         (gen_type_die_with_usage): Replace calls to gen_type_die
14980         with gen_type_die_with_usage adding the program usage of
14981         the referenced type.
14982         (dwarf2out_imported_module_or_decl): Suppress struct debug
14983         information using should_emit_struct_debug when appropriate.
14985 2007-04-16  Ian Lance Taylor  <iant@google.com>
14987         PR tree-optimization/31522
14988         * tree-vrp.c (vr_phi_edge_counts): New static variable.
14989         (vrp_initialize): Allocate vr_phi_edge_counts.
14990         (vrp_visit_phi_node): Don't push to infinity if we saw a new
14991         executable edge.  Drop test for all constants.
14992         (vrp_finalize): Free vrp_phi_edge_counts.
14994         * doc/cpp.texi (Common Predefined Macros): Clarify description of
14995         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
14997         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
14998         predecessors at head rather than tail.
15000 2007-04-16  Matthias Klose  <doko@debian.org>
15002         * config/alpha/linux.h (CPP_SPEC): Define.
15003         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
15005 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
15007         * function.h: Remove sequence_stack extern declaration.
15009 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
15011         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
15012         TARGET_FIDOA.
15013         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
15014         defined.
15016 2007-04-16  Anatoly Sokolov <aesok@post.ru>
15018         * config/avr/avr.c (avr_arch_types): Rearranging  array.
15019         (enum avr_arch): Add.
15020         (avr_mcu_types): Use avr_arch enumeration constants instead of
15021         numbers.
15022         * config/avr/avr.h (LINK_SPEC): Simplify.
15024 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
15026         * config/m68k/m68k.c (m68k_libcall_value,
15027         m68k_function_value): Use macros for register names more.
15029         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
15030         instead.
15031         (M68K_REGNAME): Use A6_REG.
15032         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
15034 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
15036         PR middle-end/28071
15037         * sched-int.h (struct deps): Split field 'pending_lists_length' into
15038         'pending_read_list_length' and 'pending_write_list_length'.  Update
15039         comment.
15040         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
15041         to handle two length counters instead of one.  Update all uses.
15042         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
15043         two length counters instead of one.
15044         * sched-rgn.c (propagate_deps): Update to handle two length counters
15045         instead of one.
15047 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
15049         PR target/31582
15050         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
15051         copy of source, pass it to ix86_expand_vector_set and return
15052         it as target.
15054 2007-04-16  David Ung  <davidu@mips.com>
15055             Joseph Myers  <joseph@codesourcery.com>
15057         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
15058         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
15059         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
15060         Add 74K processor information.
15061         * config/mips/mips.md: Include 74k.md.
15062         (cpu): Add 74kc,74kf,74kx.
15063         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
15064         * config/mips/74k.md: New.
15065         * doc/invoke.texi (MIPS Options): Document 74K support.
15067 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
15069         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
15070         vectorizable_* functions.
15071         * tree-vect-transform.c (vectorizable_call): Add check for
15072         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
15073         (vectorizable_store): likewise.
15074         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
15075         Add comments.
15076         (vectorizable_operation, vectorizable_type_demotion): Likewise.
15077         (vectorizable_type_promotion, vectorizable_load): Likewise.
15078         (vectorizable_live_operation, vectorizable_condition): Likewise.
15079         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
15080         STMT_VINFO_LIVE_P.
15081         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
15083 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
15085         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
15086         register numbers more.
15087         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
15088         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
15089         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
15090         FUNCTION_VALUE_REGNO_P): Likewise.
15091         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
15092         STATIC_CHAIN_REGNUM): Likewise.
15093         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
15094         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
15095         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
15096         * config/m68k/m68k.md (FP_REG): New.
15098 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
15100         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
15101         alignment on fido.
15103 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
15105         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
15106         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
15107         comment typos.
15109 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
15111         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
15112         cold loops.
15114 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15116         PR c/31520
15117         * c-decl.c (finish_decl): Grab the type of the decl after the call
15118         to store_init_value.
15120 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
15122         * common.opt (fforward-propagate): Fix "Optimization" annotation.
15124 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
15126         PR c++/25874
15127         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
15128         dominators, post dominators and cleanup cfg before returning.
15130 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
15132         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
15133         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
15135 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
15137         * config.gcc: Recognize fido.
15138         * config/m68k/m68k-devices.def (fidoa): New.
15139         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
15140         __mfido__.
15141         (FL_FIDOA, TARGET_FIDOA): New.
15142         * config/m68k/m68k.opt (mfidoa): New.
15144 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15146         PR middle-end/31322
15147         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
15148         when a personality function is used.
15150 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
15152         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
15154 2007-04-13  Mike Stump  <mrs@apple.com>
15156         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
15157         we can...
15158         * config/darwin.opt (fapple-kext): Make C++ only.
15159         * config/darwin.c (darwin_override_options): Remove code to ensure
15160         -fapple-kext is given for C++ only.
15162 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
15164         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
15165         * config/mips/mips.c (override_options): Call
15166         SUBTARGET_OVERRIDE_OPTIONS, if defined.
15168 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
15170         * config/i386/i386.opt (msvr3-shlib): Removed.
15172         * doc/invoke.texi: Remove -msvr3-shlib.
15174 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
15176         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
15177         with "popcnt" instruction.
15179 2007-04-13  Richard Guenther  <rguenther@suse.de>
15181         PR tree-optimization/21258
15182         * tree-vrp.c (compare_case_labels): New helper.
15183         (find_switch_asserts): New function.
15184         (find_assert_locations): Call it for SWITCH_EXPRs.
15186 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
15188         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
15189         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
15190         check is now implied in X87_FLOAT_MODE_P.
15191         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
15192         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
15193         (fix_trunc<mode>_i386_fisttp): Ditto.
15194         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
15195         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
15196         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
15197         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
15198         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
15199         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
15200         (unnamed_splitters): Ditto.
15201         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
15202         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
15203         FIRST_SSE_REG for local functions when SSE math is enabled or
15204         for functions with sseregparm attribute.
15205         (standard_80387_constant_p): Return -1 if mode is not
15206         X87_FLOAT_MODE_P.
15207         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
15208         (ix86_expand_compare): Ditto.
15209         (ix86_expand_carry_flag_compare): Ditto.
15210         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
15211         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
15212         DECIMAL_FLOAT_MODE_P.
15213         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
15214         of SCALAR_FLOAT_MODE_P.
15215         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
15216         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
15217         checks before FLOAT_MODE_P.
15218         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
15219         before FLOAT_MODE_P.
15220         [DIV]: Ditto.
15221         [NEG]: Ditto.
15222         [ABS]: Ditto.
15223         [SQRT]: Ditto.
15224         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
15226 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
15227             Charles Wilson  <libtool@cwilson.fastmail.fm>
15229         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
15230         (libgcc.mvars): Don't depend on them.
15231         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
15232         * exec-tool.in: New.
15234 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
15236         * doc/invoke.text (--help): Document --help=common.
15238 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
15240         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
15242 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15244         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
15245         * genemit.c (main): Emit #include "integrate.h".
15246         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
15247         (LOADGP_RTP): New mips_loadgp_style.
15248         * config/mips/mips.h: Include config/vxworks-dummy.h.
15249         (TARGET_RTP_PIC): New macro.
15250         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
15251         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
15252         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
15253         for TARGET_RTP_PIC.
15254         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
15255         -mvxworks-pic when using -mrtp and a PIC option.
15256         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
15257         for RTP PIC.
15258         (mips_symbolic_constant_p, mips_symbolic_address_p)
15259         (mips_symbol_insns): Handle SYMBOL_HALF.
15260         (override_options): Warn about -G and -mrtp being used together.
15261         Initialize mips_lo_relocs[SYMBOL_HALF].
15262         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
15263         (mips_emit_loadgp): Handle LOADGP_RTP.
15264         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
15265         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
15266         (tablejump): Handle function-relative case table entries if
15267         TARGET_RTP_PIC.
15268         * config/mips/predicates.md (symbol_ref_operand): New predicate.
15270 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15272         * config/mips/mips.md (load_call<mode>): Allow any general register.
15273         destination.
15274         (sibcall_value_internal, sibcall_value_multiple_internal)
15275         (call_value_internal, call_value_split, call_value_multiple_internal)
15276         (call_value_multiple_split): Remove constraints from operand 0.
15278 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15280         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
15281         rather than loadgp_noshared.
15282         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
15283         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
15284         gen_loadgp.
15285         * config/mips/mips.md (loadgp): Rename to...
15286         (loadgp_newabi): ...this.
15287         (loadgp_noshared): Rename to...
15288         (loadgp_absolute): ...this.
15290 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15292         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
15293         false for locally-binding symbols.
15294         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
15296 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15298         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
15299         (SYMBOL_GOT_PAGE_OFST): ...this.
15300         (SYMBOL_GOT_GLOBAL): Rename to...
15301         (SYMBOL_GOT_DISP): ...this.
15302         (SYMBOL_GOTOFF_GLOBAL): Rename to...
15303         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
15304         * config/mips/mips.c (mips_global_symbol_p): New function.
15305         (mips_symbol_binds_local_p): Likewise.
15306         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
15307         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
15308         mips_global_symbol_p and mips_symbol_binds_local_p.
15309         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
15310         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
15311         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
15312         SYMBOL_GOTOFF_DISP.
15313         (mips_ok_for_lazy_binding_p): New function.
15314         (mips_load_call_address, mips_expand_call): Use it.
15315         (mips_dangerous_for_la25_p): Likewise.
15316         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
15317         (*got_disp<mode>): Use got_disp_operand instead of
15318         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
15319         SYMBOL_GOTOFF_GLOBAL.
15320         (*got_page<mode>): Use got_page_ofst_operand instead of
15321         local_got_operand.
15322         * config/mips/predicates.md (const_call_insn_operand): Use
15323         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
15324         (global_got_operand): Rename to...
15325         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
15326         SYMBOL_GOT_GLOBAL.
15327         (local_got_operand): Rename to...
15328         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
15329         of SYMBOL_GOT_LOCAL.
15331 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15333         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
15334         TARGET_CALL_CLOBBERED_GP.
15335         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
15336         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
15337         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
15338         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
15339         of TARGET_ABICALLS && !TARGET_NEWABI.
15340         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
15341         * config/mips/mips.c (mips_load_call_address): Check
15342         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
15343         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
15344         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
15345         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
15346         TARGET_ABICALLS && TARGET_NEWABI.
15347         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
15348         TARGET_ABICALLS.
15349         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
15350         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
15351         TARGET_ABICALLS && TARGET_NEWABI.
15352         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
15353         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
15354         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
15355         whether indirect calls must use $25.
15356         (mips_extra_live_on_entry): Check TARGET_GOT instead of
15357         TARGET_ABICALLS.
15358         * config/mips/mips.md (jal_macro): Check flag_pic and
15359         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
15360         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
15361         instead of TARGET_ABICALLS.
15362         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
15363         TARGET_ABICALLS && TARGET_OLDABI.
15364         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
15365         (sibcall): In the comment above the define_insn, mention
15366         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
15367         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
15368         instead of TARGET_ABICALLS.
15370 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
15372         * doc/md.texi (Blackfin family constraints): Document PA and PB.
15373         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
15374         (MACFLAGS_MATCH_P): New macro.
15375         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
15376         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
15377         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
15378         the other MACFLAG constants.
15379         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
15380         (flag_machi): Tighten constraints.  Renumber some of the operands.
15381         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
15382         output template.
15383         (flag_machi_parts_acconly): New pattern.
15384         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
15385         used.
15386         (flag_macinit1hi): Tighten constraints.
15387         (flag_mul_macv2hi_parts_acconly): New pattern.
15389         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
15390         Use a more efficient implementation.
15391         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
15392         inline sequences when not optimizing for size.
15394         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
15395         movhi_high2low): Delete, merge functionality into...
15396         (packv2hi): ... this pattern.
15398         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
15399         * config/bfin/bfin.opt (msim): New option.
15400         (mcpu=): New option.
15401         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
15402         (bfin_cpu_t): Typedef of enum bfin_cpu.
15403         (bfin_cpu_type): New declaration.
15404         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
15405         -msim and -mcpu= options.
15406         (LIB_SPEC): Likewise.
15407         * config/bfin/bfin.c (bfin_cpu_type): Define.
15408         (bfin_handle_option): Handle -mcpu= option.
15409         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
15410         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
15411         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
15413 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15415         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
15416         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
15417         (powerpc-wrs-vxworksae): Use ${tm_file}.
15418         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
15419         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
15420         * config/i386/vx-common.h: New file.
15422 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
15424         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
15425         of crt0.o%s.
15427 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
15429         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
15430         ldxtr.
15432 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
15434         PR c++/31078
15435         PR c++/31103
15436         * c-common.c (c_build_qualified_type): Set canonical type
15437         appropriately.
15439 2007-04-12  Richard Guenther  <rguenther@suse.de>
15441         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
15442         lower bound and element size if lower bound is not zero
15443         or either of the ARRAY_REF operands is set.
15445 2007-04-12  Richard Guenther  <rguenther@suse.de>
15447         PR tree-optimization/24689
15448         PR tree-optimization/31307
15449         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
15450         indices by value.
15451         * gimplify.c (canonicalize_addr_expr): To be consistent with
15452         gimplify_compound_lval only set operands two and three of
15453         ARRAY_REFs if they are not gimple_min_invariant.  This makes
15454         it never at this place.
15455         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
15457 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15459         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
15460         null before emitting a .nsubspa directive.
15462 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
15464         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
15465         need_to_partition_p if there are no memory statements in the
15466         function.
15468 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
15470         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
15471         (gcd_of_steps_may_divide_p): New function.
15472         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
15474 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15476         * reload.c (find_reloads_toplev, find_reloads_address,
15477         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
15478         not a pointer equality test, to decide if we need to call
15479         push_reg_equiv_alt_mem.
15481 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
15483         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
15484         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
15485         New.
15486         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
15488 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
15490         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
15491         vector to be positive.
15493 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
15495         PR 30735
15496         PR 31090
15497         * doc/invoke.texi: Document --params max-aliased-vops and
15498         avg-aliased-vops.
15499         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
15500         debug_memory_partitions): Move to tree-flow.h
15501         * params.h (AVG_ALIASED_VOPS): Define.
15502         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
15503         users.
15504         (mp_info_t): Likewise.
15505         (get_mem_sym_stats_for): New.
15506         (set_memory_partition): Move from tree-flow-inline.h.
15507         (mark_non_addressable): Only clear the set of symbols for the
15508         partition if it exists.
15509         (dump_memory_partitions): Move from tree-ssa-operands.c
15510         (debug_memory_partitions): Likewise.
15511         (need_to_partition_p): New.
15512         (dump_mem_ref_stats): New.
15513         (debug_mem_ref_stats): New.
15514         (dump_mem_sym_stats): New.
15515         (debug_mem_sym_stats): New.
15516         (update_mem_sym_stats_from_stmt): New.
15517         (compare_mp_info_entries): New.
15518         (mp_info_cmp): Call it.
15519         (sort_mp_info): Change argument to a list of mem_sym_stats_t
15520         objects.
15521         (get_mpt_for): Move from tree-ssa-operands.c.
15522         (find_partition_for): New.
15523         (create_partition_for): Remove.
15524         (estimate_vop_reduction): New.
15525         (update_reference_counts): New.
15526         (build_mp_info): New.
15527         (compute_memory_partitions): Refactor.
15528         Document new heuristic.
15529         Call build_mp_info, update_reference_counts,
15530         find_partition_for and estimate_vop_reduction.
15531         (compute_may_aliases): Populate virtual operands before
15532         calling debugging dumps.
15533         (delete_mem_sym_stats): New.
15534         (delete_mem_ref_stats): New.
15535         (init_mem_ref_stats): New.
15536         (init_alias_info): Call it.
15537         (maybe_create_global_var): Remove alias_info argument.
15538         Get number of call sites and number of pure/const call sites
15539         from gimple_mem_ref_stats().
15540         (dump_alias_info): Call dump_memory_partitions first.
15541         (dump_points_to_info_for): Show how many times a pointer has
15542         been dereferenced.
15543         * opts.c (decode_options): For -O2 set --param
15544         max-aliased-vops to 500.
15545         For -O3 set --param max-aliased-vops to 1000 and --param
15546         avg-aliased-vops to 3.
15547         * fortran/options.c (gfc_init_options): Remove assignment to
15548         MAX_ALIASED_VOPS.
15549         * tree-flow-inline.h (gimple_mem_ref_stats): New.
15550         * tree-dfa.c (dump_variable): Dump memory reference
15551         statistics.
15552         Dump NO_ALIAS* settings.
15553         (referenced_var_lookup): Tidy.
15554         (mem_sym_stats): New.
15555         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
15556         and ORIG are different SSA names for a memory partition.
15557         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
15558         * tree-flow.h (struct mem_sym_stats_d): Define.
15559         (mem_sym_stats_t): Define.
15560         (struct mem_ref_stats_d): Define.
15561         (struct gimple_df): Add field mem_ref_stats.
15562         (enum noalias_state): Define.
15563         (struct var_ann_d): Add bitfield noalias_state.
15564         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
15565         debug_mem_ref_stats, debug_memory_partitions,
15566         debug_mem_sym_stats): Declare.
15567         * tree-ssa-structalias.c (update_alias_info): Update call
15568         sites, pure/const call sites and asm sites in structure
15569         returned by gimple_mem_ref_stats.
15570         Remove local variable IS_POTENTIAL_DEREF.
15571         Increase NUM_DEREFS if the memory expression is a potential
15572         dereference.
15573         Call update_mem_sym_stats_from_stmt.
15574         If the memory references memory, call
15575         update_mem_sym_stats_from_stmt for all the direct memory
15576         symbol references found.
15577         (intra_create_variable_infos): Set noalias_state field for
15578         pointer arguments according to the value of
15579         flag_argument_noalias.
15580         * tree-ssa-structalias.h (struct alias_info): Remove fields
15581         num_calls_found and num_pure_const_calls_found.
15582         (update_mem_sym_stats_from_stmt): Declare.
15583         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
15584         Set default value to 100.
15585         (PARAM_AVG_ALIASED_VOPS): Define.
15587 2007-04-11  Richard Guenther  <rguenther@suse.de>
15589         PR middle-end/31530
15590         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
15591         a * -b + c as c - a * b if we honor sign dependent rounding.
15593 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15595         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
15596         bfin_expand_strmov.
15597         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
15598         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
15599         variables.
15600         (initialize_trampoline): Don't use old-style function definition.
15601         (bfin_secondary_reload): Mark IN_P argument as unused.
15603 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
15605         PR tree-optimization/31343
15606         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
15607         (build_polynomial_chrec): Return a scalar when the evolution is zero.
15608         * testsuite/gcc.dg/vect/pr31343.c: New.
15610 2007-04-10  Eric Christopher  <echristo@apple.com>
15612         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
15613         * config/i386/i386.md (*cmpfp0): Use.
15614         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
15615         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
15616         (fix_trunc<mode>_i386_fisttp): Ditto.
15617         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
15618         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
15619         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
15620         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
15621         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
15622         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
15623         (unnamed_splitters): Ditto.
15624         * config/i386/i386.c (output_fix_trunc): Assert that
15625         we're not being passed a TFmode operand.
15627 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
15629         PR tree-optimization/31526
15630         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
15631         n_basic_blocks to find newly added blocks.
15633 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
15635         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
15636         alternative.
15637         (fix_trunc<mode>si_sse): Ditto.
15638         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
15639         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
15640         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
15641         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
15642         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
15643         expander using SSEMODEF mode macro.
15644         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
15645         expander using SSEMODEF mode macro.
15646         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
15647         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
15648         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
15649         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
15650         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
15651         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
15652         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
15653         Macroize insn using X87MODEF mode macro.
15655 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
15657         * config/i386/sse.md (sse2_pinsrw): Removed.
15658         (sse2_pextrw): Renamed to ...
15659         (*sse2_pextrw): This.
15661 2007-04-09  Jan Hubicka  <jh@suse.cz>
15663         PR target/27869
15664         * config/i386/sse.md
15665         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
15666         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
15667         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
15668         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
15670 2007-04-09  Jan Hubicka  <jh@suse.cz>
15672         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
15673         multiple fields of union.
15675 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
15677         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
15678         (create_preheaders): Check that loops are available.
15679         (fix_loop_structure): Clean up, improve comments.
15680         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
15681         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
15682         state flags.
15683         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
15684         * predict.c (tree_estimate_probability): Do not call
15685         calculate_dominance_info.  Call create_preheaders.
15686         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
15687         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
15688         flags.
15689         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
15690         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
15691         * tree-cfg.c (tree_split_edge): Make an assert more precise.
15692         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
15693         arguments.
15695 2007-04-08  Jan Hubicka  <jh@suse.cz>
15697         * tree.h (maybe_fold_offset_to_component_ref): Declare.
15698         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
15699         * fold-const.c (fold_unary): Use it.
15701 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15703         * varasm.c (assemble_variable): Remove call to
15704         lang_hooks.decls.prepare_assemble_variable.
15705         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
15706         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
15707         * langhooks.h (lang_hooks_for_decls): Remove
15708         prepare_assemble_variable.
15710 2007-04-08  Mike Stump  <mrs@apple.com>
15712         * config/i386/i386.c: Use inc/dec on Core2.
15714 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
15716         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
15717         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
15718         lhd_tree_inlining_end_inlining): Remove.
15719         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
15720         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
15721         end_inlining hooks.
15722         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
15723         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
15724         lhd_tree_inlining_end_inlining): Remove prototypes.
15725         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
15726         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
15727         LANG_HOOKS_TREE_INLINING_START_INLINING,
15728         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
15730         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
15731         not set it.
15733 2007-04-08  Anatoly Sokolov <aesok@post.ru>
15735         PR target/29932
15736         * config/avr/predicates.md (io_address_operand): Delete predicate.
15737         (low_io_address_operand): Don't use 'mode' argument.
15738         (higth_io_address_operand): Rename ...
15739         (high_io_address_operand): ... to this. Don't use 'mode' argument.
15740         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
15741         for above change.
15743 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
15745         Revert change removing staticp.
15747 2007-04-07  Anatoly Sokolov <aesok@post.ru>
15749         PR target/30289
15750         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
15751         earlyclobber.
15753 2007-04-07  Bruce Korb  <bkorb@gnu.org>
15755         * c.opt: Add -Wformat-contains-nul.
15756         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
15757           -Wformat setting.
15758         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
15759         the NUL byte warning.
15761 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
15763         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
15765 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
15767         * tree.c (staticp): No longer use staticp langhook.
15768         * langhooks.c (lhd_staticp): Removed.
15769         * langhooks.h (struct lang_hooks): Remove staticp.
15770         * c-common.c (c_staticp): Remove.
15771         * c-common.h (c_staticp): Ditto.
15772         * langhooks-defs.h (lhd_staticp): Ditto.
15773         (LHD_HOOKS_STATICP): Ditto
15774         * tree.h (gcc_assert_lowered): New macro.
15776 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
15778         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
15779         argument "reliable".
15780         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
15781         Add argument "reliable".  Propagate it through calls.
15782         (infer_loop_bounds_from_undefined):  Derive number of iterations
15783         estimates from references in blocks that do not dominate loop latch.
15784         (gcov_type_to_double_int): New function.
15785         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
15786         and expected_loop_iterations_unbounded.
15787         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
15788         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
15789         * tree-data-ref.c (estimated_loop_iterations): Export.
15790         (get_references_in_stmt): Fix -- do not return addresses of local
15791         objects.
15792         * cfgloop.h (expected_loop_iterations_unbounded,
15793         estimated_loop_iterations): Declare.
15795 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
15797         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
15799 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
15801         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
15802         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
15803         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
15804         Use output_387_reg_move().
15805         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
15806         expander using X87MODEF12 mode macro.
15807         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
15808         choosing register preferences.  Use output_387_reg_move().
15809         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
15810         instead of "x".  Use output_387_reg_move().
15811         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
15812         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
15813         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
15814         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
15815         Use output_387_reg_move().
15816         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
15817         mode macro.
15818         (*truncxf?f_i387 splitter): Ditto.
15820 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
15822         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
15823         LANG_HOOKS_SAFE_FROM_P.
15824         * expr.c (safe_from_p): Remove langhook call.
15825         * langhooks.h (lang_hooks): Remove safe_from_p.
15826         (lhd_safe_from_p): Remove prototype.
15827         * langhooks.c (lhd_safe_from_p): Remove.
15829 2007-04-06  Jan Hubicka  <jh@suse.cz>
15831         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
15832         functions.
15834 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
15836         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
15837         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
15838         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
15839         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
15840         alternative.
15841         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
15842         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
15844 2007-04-05  Richard Henderson  <rth@redhat.com>
15846         * config/alpha/alpha.c (print_operand) [+]: Remove.
15847         (alpha_end_function): Print nop if call at end of function.
15848         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
15849         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
15850         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
15851         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
15852         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
15853         the call pattern. Update peepholes to match.
15855 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
15857         * doc/extend.texi (Other Builtins): Add decimal float variants
15858         of signbit.
15859         * builtins.def: Ditto.
15860         * builtins.c (expand_builtin): Ditto.
15862 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
15863             H.J. Lu  <hongjiu.lu@intel.com>
15865         PR target/31478
15866         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
15867         of V8HImode when calling ix86_binary_operator_ok.
15868         (sse2_pmaddwd): Call ix86_binary_operator_ok.
15869         (sdot_prodv8hi): Operands 1 and 2 must be register.
15871 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
15873         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
15874         initialize align to silence bogus warning.
15876 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
15878         PR middle-end/22156
15879         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
15880         all_no_warning.
15881         (struct sra_walk_fns): Remove use_all parameter from use.
15882         (sra_hash_tree): Handle BIT_FIELD_REFs.
15883         (sra_elt_hash): Don't hash bitfld blocks.
15884         (sra_elt_eq): Skip them in parent compares as well.  Handle
15885         BIT_FIELD_REFs.
15886         (sra_walk_expr): Don't maintain or pass down use_all_p.
15887         (scan_use): Remove use_all parameter.
15888         (scalarize_use): Likewise.  Re-expand assignment to
15889         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
15890         output, and re-scalarize after output.  Don't mark anything
15891         for no warning.
15892         (scalarize_ldst): Adjust.
15893         (scalarize_walk_gimple_modify_statement): Likewise.
15894         (build_element_name_1): Handle BIT_FIELD_REFs.
15895         (instantiate_element): Don't warn for any element whose parent
15896         is used as a whole.
15897         (instantiate_missing_elements_1): Return the sra_elt.
15898         (canon_type_for_field): New.
15899         (try_instantiate_multiple_fields): New.
15900         (instantiate_missing_elemnts): Use them.
15901         (mark_no_warning): Removed.
15902         (generate_one_element_ref): Handle BIT_FIELD_REFs.
15903         (REPLDUP, sra_build_elt_assignment): New.
15904         (generate_copy_inout): Use them.
15905         (generate_element_copy): Likewise.  Handle bitfld differences.
15906         (generate_element_zero): Don't recurse for blocks.  Use
15907         sra_build_elt_assignment.
15908         (generate_one_element_int): Take elt instead of var.  Use
15909         sra_build_elt_assignment.
15910         (generate_element_init_1): Adjust.
15911         (scalarize_use, scalarize_copy): Use REPLDUP.
15912         (scalarize_ldst): Move assert before dereference.
15913         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
15915 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
15917         * regmove.c: Fix unused variable warnings due to previous commit.
15919 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
15921         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
15922         (regmove_bb_head): Remove.
15923         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
15924         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
15925         problems with fixup_match_1.
15926         Don't initialize/free regmove_bb_head.
15928         (reg_is_remote_constant_p): If an insn is in the same basic block
15929         but not before INSN, consider it remote, too.
15931 2007-04-05  Anatoly Sokolov <aesok@post.ru>
15933         PR target/25448
15934         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
15935         DECL_ASSEMBLER_NAME, not the DECL_NAME.
15937 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
15939         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
15940         (CONDITIONAL_REGISTER_USAGE): Likewise.
15942 2007-04-04  Richard Henderson  <rth@redhat.com>
15944         * config/alpha/lib1funcs.asm: Remove unused file.
15946 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15948         PR other/31356
15949         * opts.c (print_specific_help): Fix --help=<language>
15950         header line.
15951         (common_handle_option): Support --help=common.
15953 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15955         PR other/31353
15956         * gcc.c (main): Do not run the linker if
15957         print_subprocess_help indicates that it shouldn't be
15958         run.
15960 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15962         PR doc/31355
15963         * doc/invoke.texi (--help=): Document <languages> value, fix
15964         formatting in tables of values.
15966 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
15968         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
15969         dllimport attribute of virtual methods.
15971 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
15973         * config/score/crti.asm: Change _bss_start to __bss_start.
15974         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
15975         (OUTGOING_REG_PARM_STACK_SPACE) update.
15976         * config/score/score.opt: add options to make backend support
15977         score5, score5u, score7 and score7d.
15978         * config/score/score.md: Likewise.
15979         * config/score/misc.md: Likewise.
15980         * config/score/mac.md: Likewise.
15981         * doc/invoke.texi: Likewise.
15982         * doc/md.texi: update constraints define.
15984 2007-04-03  Richard Henderson  <rth@redhat.com>
15986         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
15987         an appropriate type, use the mode instead.
15989 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
15991         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
15992         Set the default --with-arch setting to mips2.
15993         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
15994         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
15995         (MULTILIB_OSDIRNAMES): Delete.
15996         (MULTILIB_DIRNAMES): Define.
15997         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
15998         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
15999         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
16000         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
16001         VXWORKS_OS_CPP_BUILTINS.
16002         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
16003         (MIPS_DEBUGGING_INFO): Undefine.
16004         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
16006 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
16008         PR middle-end/30704
16009         * fold-const.c (native_encode_real): Encode real.c provided longs
16010         as a series of 32-bit native integers.
16011         (native_interpret_real): Interpret buffer as a series of 32-bit
16012         native integers.
16014 2007-04-03  Richard Guenther  <rguenther@suse.de>
16016         * genpreds.c (write_insn_constraint_len): Write function
16017         optimized for CONSTRAINT_LEN implementation.
16018         (write_tm_preds_h): Output insn_constraint_len inline and
16019         use it for CONSTRAINT_LEN.
16020         (write_insn_preds_c): Don't output insn_constraint_len.
16021         * doc/md.texi (define_register_constraint): Document multi-letter
16022         constraints shall have the same length if they start with the same
16023         letter.
16025 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
16027         PR target/31175
16028         * config/i386/i386.md (isinf<mode>2): Expand only when
16029         TARGET_C99_FUNCTIONS is set.
16031 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
16033         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
16034         (x86_64-*-linux*): Ditto.
16035         * config/i386/i386.opt (mpc): New option.
16036         * config/i386/i386.c (overrride_options): Handle
16037         ix87_precision_string.
16038         * config/i386/crtprec.c: New file.
16039         * config/i386/t-crtpc: Ditto.
16040         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
16041         and -mpc80 options.
16042         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
16043         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
16044         crtprec32.o, crtprec64.o and crtprec80.o.
16046         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
16047         and -mpc80 options.
16048         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
16050 2007-04-02  Eric Christopher  <echristo@apple.com>
16052         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
16053         limitations on darwin.
16055 2007-04-02  Anatoly Sokolov <aesok@post.ru>
16057         PR target/31137
16058         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
16060 2007-04-02  Dave Korn  <dave.korn@artimi.com>
16062         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
16064 2007-04-02  Dave Korn  <dave.korn@artimi.com>
16066         * libgcc2.h (exception_descriptor): Don't forward-declare.
16067         (__get_eh_table_language, __get_eh_table_version): Delete
16068         prototypes of long-dead functions.
16070 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
16072         * ebitmap.h: New file
16073         * ebitmap.c: New file
16074         * Makefile.in (ebitmap.o): New target.
16076 2007-04-01  Jan Hubicka  <jh@suse.cz>
16078         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
16079         before very first instruction.
16081 2007-04-01  Jan Hubicka  <jh@suse.cz>
16083         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
16084         waring on 64bit hosts.
16085         * bitmap.h: Fix typo in bitmap_head_def.
16087 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
16089         PR rtl-optimization/31391
16090         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
16091         into a DELETED_LABEL note, and the label is in an empty basic
16092         block, update BB_END as well as BB_HEAD.
16094 2007-04-01  Richard Henderson  <rth@redhat.com>
16096         PR tree-optimization/31169
16097         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
16098         to varying if the range is outside [0,  prec-1].
16100 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
16102         PR target/31388
16103         * config/mips/mips.md (load_const_gp): New insn.
16104         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
16105         the MIPS16 GP pseudo register if no_new_pseudos.
16106         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
16108 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16110         PR target/31364
16111         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
16112         secureplt.
16113         (call_value): Likewise.
16115 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
16116             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16118         PR 14737
16119         * doc/invoke.texi: (optimization options): Reword description
16120         of -ffast-math. Document its primary purpose.
16122 2007-03-31  Richard Guenther  <rguenther@suse.de>
16124         * omp-low.c (splay-tree.h): Include.
16125         (lookup_decl): Replace splay-tree usage by pointer-map.
16126         (maybe_lookup_decl): Likewise.
16127         (new_omp_context): Likewise.
16128         (delete_omp_context): Likewise.
16129         * gimplify.c (splay-tree.h): Include.
16130         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
16131         pointer-map.
16132         (remap_ssa_name): Likewise.
16133         (remap_decl): Likewise.
16134         (remap_type_1): Likewise.
16135         (remap_type): Likewise.
16136         (copy_body_r): Likewise.
16137         (expand_call_inline): Likewise.
16138         (clone_body): Likewise.
16139         (copy_tree_r): Likewise.
16140         (remap_save_expr): Likewise.
16141         (unsave_r): Likewise.
16142         (unsave_expr_now): Likewise.
16143         (tree_function_versioning): Likewise.
16144         (build_duplicate_type): Likewise.
16145         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
16146         (struct copy_body_data): Replace splay-tree by pointer-map.
16147         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
16148         not $(SPLAY_TREE_H).
16149         (gimplify.o): Depend on $(SPLAY_TREE_H).
16150         (omp-low.p): Likewise.
16152 2007-03-31  Anatoly Sokolov <aesok@post.ru>
16154         * config/avr/predicates.md (even_register_operand,
16155         odd_register_operand): New predicates.
16156         * config/avr/avr.md (movw peephole2): New.
16157         (movw_r peephole2): New.
16159 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
16161         * tree.h (get_signed_or_unsigned_type): New.
16162         * fold-const.c (operand_equal_for_comparison_p): Use
16163         get_signed_or_unsigned_type instead of
16164         lang_hooks.types.signed_or_unsigned_type.
16165         * expr.c (store_expr): Ditto.
16166         * langhooks.c (get_signed_or_unsigned_type): New.
16167         (lhd_signed_or_unsigned_type): New.
16168         * langhooks.h (lhd_signed_or_unsigned_type): New.
16169         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
16171 2007-03-30  Richard Henderson  <rth@redhat.com>
16173         * tree-ssa-loop-ivopts.c: Include target.h.
16174         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
16175         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
16176         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
16177         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
16179 2007-03-30  Richard Henderson  <rth@redhat.com>
16180             Kai Tietz  <kai.tietz@onevision.com>
16182         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
16183         default for 64-bit.
16184         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
16185         (TARGET_64BIT_MS_ABI): New.
16186         (DBX_REGISTER_NUMBER): Handle 64-bit.
16187         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
16188         (LONG_TYPE_SIZE): Force to 32.
16189         (REG_PARM_STACK_SPACE): New.
16190         (OUTGOING_REG_PARM_STACK_SPACE): New.
16191         (REGPARM_MAX, SSE_REGPARM_MAX): New.
16192         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
16193         (STACK_BOUNDARY): Use 128 for 64-bit.
16194         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
16195         Add 64-bit implementation.
16196         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
16197         argument unused.
16198         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
16199         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
16200         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
16201         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
16202         (ix86_handle_cconv_attribute): Don't warn when ignoring if
16203         TARGET_64BIT_MS_ABI.
16204         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
16205         (ix86_pass_by_reference): Likewise.
16206         (ix86_function_value_regno_p): Likewise.
16207         (ix86_build_builtin_va_list): Likewise.
16208         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
16209         (function_arg_advance_ms_64): New.
16210         (function_arg_advance): Call it.
16211         (function_arg_ms_64): New.
16212         (function_arg): Call it.
16213         (function_value_ms_64): New.
16214         (ix86_function_value_1): Call it.
16215         (return_in_memory_ms_64): New.
16216         (ix86_return_in_memory): Call it.
16217         (setup_incoming_varargs_ms_64): New.
16218         (ix86_setup_incoming_varargs): Call it.
16219         (ix86_expand_prologue): Handle 64-bit stack probing.
16220         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
16221         (output_pic_addr_const): Likewise.
16222         (x86_this_parameter): Likewise.
16223         (x86_output_mi_thunk): Likewise.
16224         (x86_function_profiler): Likewise.
16225         (TARGET_STRICT_ARGUMENT_NAMING): New.
16226         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
16227         (TARGET_64BIT_MS_ABI): New.
16228         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
16229         * config/i386/i386.md (allocate_stack_worker): Remove.
16230         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
16231         describe the clobber of eax without a match_scratch.
16232         (allocate_stack_worker_postreload): Remove.
16233         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
16234         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
16235         (allocate_stack_worker_rex64_postreload): Remove.
16236         (allocate_stack): Handle 64-bit.
16237         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
16238         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
16239         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
16240         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
16241         (STANDARD_STARTFILE_PREFIX_1): Likewise.
16242         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
16243         * config.build (x86_64-*-mingw*): New host.
16244         * config.host (x86_64-*-mingw*): New host.
16245         * config.gcc (x86_64-*-mingw*): New target.
16246         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
16248 2007-03-30  Richard Henderson  <rth@redhat.com>
16249             Kai Tietz  <kai.tietz@onevision.com>
16251         * c-pragma.c (struct def_pragma_macro_value): New.
16252         (struct def_pragma_macro): New.
16253         (pushed_macro_table): New.
16254         (dpm_hash, dpm_eq): New.
16255         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
16256         (init_pragma): Install them.
16257         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
16259 2007-03-30  Anatoly Sokolov <aesok@post.ru>
16261         * config/avr/avr.c (avr_override_options): Clear
16262         'flag_delete_null_pointer_checks'.
16264 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
16266         PR c++/26099
16267         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
16268         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
16269         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
16270         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
16271         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
16272         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
16273         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
16274         C++ extensions.
16275         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
16277 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
16279         * regmove.c: Move all of pass_stack_adjustments from here...
16280         * combine-stack-adj.c: ...to this new file.
16281         * Makefile.in: Add rules for combine-stack-adj.o.
16283 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
16285         PR tree-optimization/31383
16286         * tree-data-ref.c (affine_function_equal_p): Do not require the
16287         vectors to have the same length.
16289 2007-03-30  Jan Hubicka  <jh@suse.cz>
16291         PR middle-end/30700
16292         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
16293         availablility; add more sanity checking; ask varpool only about
16294         VAR_DECL.
16296 2007-03-29  Richard Henderson  <rth@redhat.com>
16298         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
16299         to decide, but __SIZEOF_LONG_LONG__.
16301 2007-03-29  Richard Henderson  <rth@redhat.com>
16303         * emutls.c (struct __emutls_array): New.
16304         (emutls_destroy): Use it instead of casting element 0 from void*.
16305         (__emutls_get_address): Likewise.
16307 2007-03-29  Richard Henderson  <rth@redhat.com>
16309         * varasm.c (initializer_constant_valid_p): Don't deny
16310         DECL_DLLIMPORT_P on functions.
16312         * config/i386/cygming.h: Remove function declarations.
16313         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
16314         (ASM_OUTPUT_LABELREF): Remove.
16315         (COMMON_ASM_OP): Remove.
16316         (ASM_OUTPUT_COMMON): Remove.
16317         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
16318         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
16319         (ASM_DECLARE_FUNCTION_NAME): Likewise.
16320         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
16321         Rename from TARGET_ENCODE_SECTION_INFO.
16322         * config/i386/netware.h: Likewise.
16323         * config/i386/i386-protos.h: Update.
16324         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
16325         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
16326         (legitimate_constant_p): Reject dllimports.
16327         (dllimport_map, get_dllimport_decl): New.
16328         (legitimize_dllimport_symbol): New.
16329         (legitimize_address, ix86_expand_move): Use it.
16330         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
16331         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
16332         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
16333         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
16334         * config/i386/predicates.md (constant_call_address_operand): Only
16335         accept symbols; reject dllimport_p symbols.
16336         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
16337         i386_pe_maybe_record_exported_symbol.
16338         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
16339         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
16340         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
16341         trust the setting of DECL_DLLIMPORT_P.
16342         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
16343         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
16344         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
16345         tidy the argument scanning loop.
16346         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
16347         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
16348         (i386_pe_strip_name_encoding): Remove.
16349         (i386_pe_binds_local_p): New.
16350         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
16351         (i386_pe_output_labelref): Remove.
16352         (i386_pe_asm_output_aligned_decl_common): New.
16353         (i386_pe_maybe_record_exported_symbol): Rename from
16354         i386_pe_record_exported_symbol; check for dllexported symbols.
16356 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
16358         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
16359         add comment explaining why vsnprintf cannot be used.
16361 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
16363         PR tree-optimization/30666
16364         * tree.c (build_complex_type): When creating type names for DWARF2
16365         debug info, create TYPE_DECLs for TYPE_NAME instead of
16366         IDENTIFIER_NODEs.
16367         (build_common_tree_nodes_2): Use build_complex_type when building
16368         predefined complex types, to preserve canonical types.
16370 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
16372         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
16373         (noce_get_alt_condition): Look at it to determine whether to
16374         reverse the condition or not.
16375         (noce_get_condition): Substitute the truth for lies.
16376         (noce_find_if_block): Set the then_else_reversed field.
16378 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
16380         * config/fr30/fr30.md (movdi): Do not accept immediates as the
16381         destination of this insn.
16382         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
16383         than calling gen_rtx_SET directly.  Use r0 to hold the value of
16384         'address + 4' rather than a stack based temporary which can be
16385         mis-optimized away.
16387 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
16389         * config/s390/s390.c (s390_secondary_input_reload_class,
16390         s390_secondary_output_reload_class): Functions removed.
16391         (s390_secondary_reload): New function.
16392         (TARGET_SECONDARY_RELOAD): Target macro defined.
16393         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
16394         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
16395         * config/s390/s390.md ("reload_outti", "reload_outdi",
16396         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
16397         "reload_out<mode>"): Expanders removed.
16398         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
16399         "reload<mode>_nonoffmem_out"): Expanders added.
16401 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
16403         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
16404         action if SRC->DEST replacement failed anyway.
16406 2007-03-28  Mike Stump  <mrs@apple.com>
16408         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
16409         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
16410         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
16412 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
16414         * config.gcc: Accept barcelona as a variant of amdfam10.
16415         * config/i386/i386.c (override_options): Likewise.
16416         * doc/invoke.texi: Likewise.
16418 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
16420         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
16421         offsets for BIT_FIELD_REF and COMPONENT_REF.
16423 2007-03-28  Richard Guenther  <rguenther@suse.de>
16425         * tree.c (is_global_var): Move ...
16426         * tree-flow-inline.h (is_global_var): ... here.
16427         * tree.h (is_global_var): Remove declaration.
16429 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
16431         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
16432         option.
16433         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
16434         * config/i386/i386.c (ix86_tune_features): Initialize new
16435         tuning option.
16436         * config/i386/predicates.md (promotable_binary_operator): Use
16437         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
16439 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
16441         PR target/31380
16442         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
16444 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
16446         * config/fr30/fr30.md (movsi_internal): Change destination
16447         constraint from m to V and add m to the end.
16449 2007-03-28  Christian Bruel  <christian.bruel@st.com>
16451         * config/sh/sh.md (movsi_i): Fix type attribute.
16453 2007-03-28  Christian Bruel  <christian.bruel@st.com>
16455         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
16456         (movsf_ie): Likewise.
16458 2007-03-28  Christian Bruel  <christian.bruel@st.com>
16460         * config.gcc: Add sh4-300 to multilib.
16461         * config/sh/t-mlib-sh4-300: New file.
16463 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
16465         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
16466         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
16467         fix_trunc<mode>di2.
16468         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
16469         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
16470         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
16471         "fixuns_trunctddi2"): Whitespace fix.
16473 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
16475         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
16476         the definition of struct sh_args.
16477         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
16478         CALL_COOKIE_INT_REG_GET): Likewise.
16480 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
16482         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
16483         transformations are applied successfully.
16485 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
16487         * tree.c (tree_contains_struct): Permit 512 tree codes.
16488         * tree.h (tree_contains_struct): Ditto.
16489         (MAX_TREE_CODES): Ditto.
16490         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
16491         SPARE member to store remaining padding bits.
16493 2007-03-27  Anatoly Sokolov <aesok@post.ru>
16495         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
16496         architecture.
16498 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
16500         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
16501         * configure: Regenerate.
16503         * configure: Regenerate using the correct version of autoconf.
16505 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
16507         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
16508         pointer regs.
16509         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
16510         regs to "__SP_L__" and "__SP_H__".
16512 2007-03-27  Richard Guenther  <rguenther@suse.de>
16514         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
16515         computations with it with a HOST_WIDE_INT variable.
16517 2007-03-26  Mike Stump  <mrs@apple.com>
16519         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
16520         objective-c-header, objective-c++-header and objc++-cpp-output
16521         support.
16522         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
16524 2007-03-26  Richard Henderson  <rth@redhat.com>
16526         PR target/31361
16527         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
16528         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
16529         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
16530         IX86_BUILTIN_PSRLQ128): New.
16531         (ix86_init_mmx_sse_builtins): Add them.
16532         (ix86_expand_builtin): Expand them.
16533         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
16534         operand 2 be TImode.
16535         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
16536         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
16537         _mm_srli_epi64): Mark __B const.
16538         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
16539         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
16540         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
16541         new two-vector shift builtins.
16543 2007-03-26  Ian Lance Taylor  <iant@google.com>
16545         PR tree-optimization/31345
16546         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
16547         [+INF, +INF(OVF)] into VARYING.
16549 2007-03-26  Zack Weinberg  <zackw@panix.com>
16551         * gengtype-parse.c: New file.
16552         * gengtype-yacc.y: Delete.
16553         * gengtype-lex.l: Don't include gengtype-yacc.h.
16554         Define YY_DECL and yyterminate appropriately for recursive
16555         descent parser.  yylval is now a string out-parameter to yylex.
16556         (HWS, EOID): New shorthand.
16557         (IWORD): Add a couple more types.
16558         (yylex): Add a setup stanza.  Remove the complex rules for
16559         detecting GTY'ed types and typedefs; replace with simple
16560         keyword detectors.  Adjust everything for the changed
16561         definition of yylval.  Ignore all pp-directives, not just #define.
16562         (yyerror): Delete.
16563         (parse_file): Rename yybegin; do not call yyparse.
16564         (yyend): New.
16565         * gengtype.c (xasprintf): Export again.
16566         (this_file): New.  Use everywhere __FILE__ was being used.
16567         (get_lang_bitmap): Special case types defined in gengtype.c.
16568         (do_typedef, new_structure): Suppress definition of certain types.
16569         (new_structure): Improve diagnostics of duplicate definitions.
16570         Make sure location_s is associated with input.h.
16571         (nreverse_pairs, define_location_structures): New functions.
16572         (main): Improve tagging of kludge types.  Remove old kludges
16573         for input.h types; use define_location_structures.
16574         * gengtype.h: Update prototypes.  Define token codes here.
16575         * Makefile.in: Remove all references to gengtype-yacc.
16576         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
16577         and gengtype.
16578         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
16579         add GTY((skip)) to the field that's only conditionally there.
16580         * doc/install.texi: Document that Bison is no longer required
16581         unless building treelang.
16583         * gengtype.c: Don't include gtyp-gen.h.
16584         (srcdir): Declare here.
16585         (base_files, lang_dir_names): Allocate dynamically.
16586         (gt_files, num_gt_files, num_lang_dirs): New globals.
16587         (measure_input_list, read_input_line, read_input_list)
16588         (set_lang_bitmap): New functions.
16589         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
16590         simplify, relying on read_input_list to set up the bitmaps.
16591         (main): Arguments are no longer unused.  Check for correct number
16592         of command line arguments, set srcdir and srcdir_len, then call
16593         read_input_list, before doing anything else.  No need to worry
16594         about duplicates in main loop.
16595         * configure.ac: Simplify the calculation of all_gtfiles.
16596         Put language tags in there.  Don't set or substitute
16597         all_gtfiles_files_langs or all_gtfiles_files_frags.
16598         * Makefile.in: Revamp the way gengtype is invoked, now that it
16599         takes a file on its command line with a much simpler format.
16600         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
16601         (GTFILES): Remove duplicates and C source files.
16602         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
16603         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
16604         * configure: Regenerate.
16606         * gengtype.h: Remove all type definitions to gengtype.c; leave
16607         only definitions of options_p, type_p, and pair_p as opaque
16608         pointers.  Update prototypes.
16609         * gengtype.c: Many type definitions moved here from gengtype.h.
16610         Consolidate type definitions at the top of the file.
16611         (xvasprintf): Delete.
16612         (xasprintf): Make static.
16613         (create_nested_pointer_option): Add 'next' parameter.
16614         (create_field_all, create_field_at): New functions.
16615         (create_field): Now a thin wrapper around create_field_all.
16616         (create_optional_field): Rename create_optional_field_ and add
16617         line argument.  Original name is now a macro which supplies
16618         __LINE__.
16619         (oprintf): Use vsnprintf directly.
16620         (close_output_files): Use fatal rather than perror/exit.
16621         (note_def_vec, note_def_vec_alloc): Use create_field_at.
16622         (main): Set progname.  Don't use exit.
16623         * gengtype-yacc.y (struct_fields): Use create_field_at.
16624         (option, optionseqopt): Delete.
16625         (optionseq): Consolidate productions from option here so we
16626         can use the first argument to create_option.
16628         * gengtype-lex.l: Distinguish unions from structures in the
16629         token type.  Don't call find_structure; return the tag as a string.
16630         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
16631         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
16632         string.  Reorganize typedef_struct production accordingly.
16633         Use create_nested_ptr_option.
16634         * gengtype.c (create_nested_ptr_option): New function.
16635         * gengtype.h: Declare it.
16637         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
16638         (string_type): Don't declare.
16639         (do_scalar_typedef): Declare.
16640         (create_scalar_type): Update prototype.
16641         * gengtype.c (string_type): Make static.
16642         (scalar_nonchar, scalar_char): New.
16643         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
16644         (resolve_typedef): Use scalar_nonchar for error recovery.
16645         (create_scalar_type): Remove name_len field.  Return scalar_char
16646         or scalar_nonchar as appropriate.
16647         (adjust_field_type): Look at scalar_is_char boolean to decide whether
16648         to use string_type.
16649         (throughout): Use scalar_nonchar instead of calling
16650         create_scalar_type, whenever possible.
16651         (main): Initialize scalar_char and scalar_nonchar before calling
16652         gen_rtx_next.
16653         * gengtype-lex.l: Adjust for removal of second argument to
16654         create_scalar_type.  Use yylval.s instead of yylval.t when
16655         returning SCALAR.
16656         * gengtype-yacc.y: Type of SCALAR is string.  Call
16657         create_scalar_type from type:SCALAR rule.  Adjust for removal of
16658         second argument to create_scalar_type.
16660         * vec.h: Remove all #if IN_GENGTYPE blocks.
16661         Add comment saying that changes may require adjustments to gengtype.
16662         * gengtype.c: Don't include coretypes.h or tm.h.
16663         Add comment to inclusion of errors.h.
16664         (note_def_vec, note_def_vec_alloc): New functions.
16665         * gengtype.h: Declare new functions.
16666         * gengtype-lex.l: Don't include coretypes.h.
16667         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
16668         Delete.
16669         (update_lineno): Remove unnecessary prototype.
16670         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
16671         (VEC rule): Just return VEC_TOKEN.
16672         * gengtype-yacc.y (VEC_TOKEN): New token type.
16673         (type): Add a production for VEC(a,b).
16674         * Makefile.in: Update dependencies.
16676         * gengtype-lex.l: Remove rules for parsing pointer-to-function
16677         typedefs that use the old PARAMS macro.
16679         * gengtype-lex.l: Remove all rules and states relating to yacc
16680         input files.
16681         * gengtype-yacc.y: Similarly.
16682         * gengtype.c (note_yacc_type): Delete function.
16683         * gengtype.h: Update prototypes.
16685 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
16687         * tree-pretty-print.c (dump_generic_node): Report precision of
16688         unnamed integer types.
16690 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
16692         * ifcvt.c (noce_try_store_flag_constants): Don't check
16693         no_new_pseudos here.
16694         (noce_try_store_flag_constants): Don't check no_new_pseudos.
16695         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
16696         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
16697         noce_try_sign_mask): Likewise.
16698         (if_convert): Check no_new_pseudos here.
16700         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
16701         Remove prototypes.
16702         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
16703         (noce_get_condition): Handle new then_else_reversed argument.
16704         (noce_init_if_info): Remove, fold into noce_find_if_block.
16705         (noce_process_if_block): Take a struct noce_if_info as the
16706         argument.  Don't set up one based on ce_if_info.  Update pointer
16707         references accordingly.
16708         (cond_move_process_if_block): Likewise.
16709         (process_if_block): Removed.
16710         (find_if_block): Removed.  Move functionality two new functions,
16711         noce_find_if_block and cond_exec_find_if_block.
16712         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
16713         blocks and the symmetric IF-ELSE-JOIN case.
16714         (cond_exec_find_if_block): Also new function mostly based on old
16715         find_if_block and process_if_block.
16716         (find_if_header): Replace find_if_block call with separately
16717         guarded calls to noce_find_if_block and cond_exec_find_if_block.
16718         (find_cond_trap): Update noce_get_condition call.
16719         (dead_or_predicable): Likewise.
16721 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
16723         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
16724         Remove.
16725         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
16726         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
16727         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
16728         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
16729         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
16730         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
16731         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
16732         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
16733         __builtin_ia32_psrad128 builtins.
16735 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
16737         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
16738         * config/i386/constraints.md
16739         (define_constraint "I"): Use IN_RANGE macro.
16740         (define_constraint "J"): Ditto.
16741         (define_constraint "K"): Ditto.
16742         (define_constraint "M"): Ditto.
16743         (define_constraint "N"): Ditto.
16744         (define_constraint "O"): Ditto.
16745         * config/i386/predicates.md
16746         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
16747         (define_predicate "const_0_to_3_operand"): Ditto.
16748         (define_predicate "const_0_to_7_operand"): Ditto.
16749         (define_predicate "const_0_to_15_operand"): Ditto.
16750         (define_predicate "const_0_to_63_operand"): Ditto.
16751         (define_predicate "const_0_to_255_operand"): Ditto.
16752         (define_predicate "const_1_to_31_operand"): Ditto.
16753         (define_predicate "const_2_to_3_operand"): Ditto.
16754         (define_predicate "const_4_to_7_operand"): Ditto.
16756 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
16758         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
16759         in SImode for save_world.
16760         * config/rs6000/altivec.md (save_world, restore_world): Convert to
16761         LR hard reg.
16763 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
16765         PR tree-optimization/30784
16766         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
16767         BIT_FIELD_REF.
16769 2007-03-25  Revital Eres  <eres@il.ibm.com>
16771         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
16772           Fold movement_possibility function into it.
16774 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
16776         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
16777         (load_macho_picbase_{si,di}): Convert to LR hard reg.
16778         (call_indirect_nonlocal_darwin64): Same.
16779         (call_nonlocal_darwin64): Same.
16780         (call_value_indirect_nonlocal_darwin64): Same.
16781         (call_value_nonlocal_darwin64): Same.
16782         (sibcall_nonlocal_darwin64): Same.
16783         (sibcall_value_nonlocal_darwin64): Same.
16784         (sibcall_symbolic_64): Same.
16785         (sibcall_value_symbolic_64): Same.
16786         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
16787         LR pseudo.
16788         (rs6000_emit_load_toc_table): Same.
16789         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
16790         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
16791         (mull_call): Same.
16792         (divss_call): Same.
16793         (divus_call): Same.
16794         (quoss_call): Same.
16795         (quous_call): Same.
16796         (load_toc_v4_pic_si): Same
16797         (load_toc_v4_PIC_1): Same.
16798         (load_toc_v4_PIC_1b): Same.
16799         (call_indirect_aix{32,64}): Same.
16800         (call_value_indirect_aix{32,64}): Same.
16801         (call): Same.
16802         (call_value): Same.
16803         (call_local{32,64}): Same.
16804         (call_value_local{32,64}): Same.
16805         (call_indirect_nonlocal_aix{32,64}): Same.
16806         (call_nonlocal_aix{32,64}): Same.
16807         (call_value_indirect_nonlocal_aix{32,64}): Same.
16808         (call_value_nonlocal_aix{32,64}): Same.
16809         (call_indirect_nonlocal_sysv<mode>): Same.
16810         (call_nonlocal_sysv<mode>): Same.
16811         (call_value_indirect_nonlocal_sysv<mode>): Same.
16812         (call_value_nonlocal_sysv<mode>): Same.
16813         (sibcall): Same.
16814         (sibcall_local{32,64}): Same.
16815         (sibcall_value_local{32,64}): Same.
16816         (sibcall_nonlocal_aix{32,64}): Same.
16817         (sibcall_value_nonlocal_aix{32,64}): Same.
16818         (sibcall_nonlocal_sysv<mode>): Same.
16819         (sibcall_value): Same.
16820         (sibcall_value_nonlocal_sysv<mode>): Same.
16822 2007-03-24  Paul Brook  <paul@codesourcery.com>
16824         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
16825         * config/arm/linux-eabi.h: Remove legacy syscall hack.
16827 2007-03-24  Richard Henderson  <rth@redhat.com>
16829         * config/ia64/constraints.md: New file.
16830         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
16831         satisfies_constraint_?.
16832         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
16833         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
16834         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
16835         ia64_output_mi_thunk): Likewise.
16836         (ia64_const_ok_for_letter_p): Remove.
16837         (ia64_const_double_ok_for_letter_p): Remove.
16838         (ia64_extra_constraint): Remove.
16839         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
16840         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
16841         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
16842         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
16843         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
16844         EXTRA_MEMORY_CONSTRAINT): Remove.
16845         * config/ia64/ia64.md: Include constriants.md.  Replace
16846         CONST_OK_FOR_? with satisfies_constraint_?.
16848 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
16849             H.J. Lu  <hongjiu.lu@intel.com>
16851         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
16852         DPD or BID name.
16853         (name macros): Use DPD_BID_NAME to convert names properly.
16855         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
16856         decimal floating point format.
16857         (init_floating_libfuncs): Change decimal functions so that they
16858         have a "bid_" prefix if the decimal system uses the BID format,
16859         and "dpd_" prefix if the decimal system uses the DPD format.
16860         (init_interclass_conv_libfuncs): Ditto.
16861         (init_intraclass_conv_libfuncs): Ditto.
16863         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
16864         using the BID format.
16866         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
16867         whether we are using the BID decimal format.
16868         * configure: Regenerate.
16870         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
16871         the compiler has decimal floating point enabled.  Define
16872         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
16873         instead of DPD.
16875         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
16876         using the BID format.
16878         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
16879         whether we are using the BID decimal format.
16880         * configure: Regenerate.
16882         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
16883         the compiler has decimal floating point enabled.  Define
16884         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
16885         instead of DPD.
16887         * doc/install.texi (--enable-decimal-float): Document BID and DPD
16888         options, and that it is enabled for i386/x86_64 systems.
16890         * Makefile.in (enable_decimal_float): New.
16891         (DECNUMFMT): New.
16892         (DECNUMINC): Add  -I$(DECNUMFMT).
16893         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
16894         to $(DECNUMFMT) from $(DECNUM).
16896         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
16897         Substitute enable_decimal_float.
16898         * configure: Regenerated.
16900         PR other/30529
16901         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
16902         unsigned long.
16904         * configure.ac: Enable decimal float for x86_64-*-linux*.
16905         * configure: Regenerated.
16907         PR other/30530
16908         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
16909         decimal128ClearSign to flip and clear the sign bit in decimal128.
16910         (decimal_real_maxval): Set decimal128SetSign to set the sign
16911         bit in decimal128.
16913 2007-03-23  Ian Lance Taylor  <iant@google.com>
16915         * fold-const.c (fold_binary): Correct warning for X - c >= X.
16917 2007-03-23  Ian Lance Taylor  <iant@google.com>
16919         * tree-dump.c (dump_files): Correct comment.
16921 2007-03-23  Ian Lance Taylor  <iant@google.com>
16923         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
16925 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
16927         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
16928         in cfglayout mode.  Don't go into and out of cfglayout mode.
16929         Link the blocks in the order of the constructed traces.
16930         (rest_of_handle_tracer): Adjust call to tracer.
16931         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
16932         Don't go into cfglayout mode.
16933         (rtl_loop_done): Don't go out of cfglayout mode.
16934         * cfglayout.c (relink_block_chain): New function, split out from...
16935         (fixup_reorder_chain): ...here.  Remove redundant checking.
16936         (cfg_layout_finalize): Don't clear the header, footer, and aux
16937         fields here, move the code to do so to relink_block_chain.  Likewise
16938         for free_original_copy_tables.
16939         * rtl.h (tracer): Update prototype.
16940         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
16941         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
16942         mode.  Use relink_block_chain to serialize the CFG according to the
16943         new basic block order.  Move targetm.cannot_modify_jumps_p check from
16944         here...
16945         (gate_handle_reorder_blocks): ...to here.
16946         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
16947         from here...
16948         (gate_duplicate_computed_gotos): ...to here.
16949         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
16950         something always changes when going into and out of cfglayout mode.
16951         Perform an expensive cfg cleanup while going into cfglayout mode.
16952         Always update liveness information on HAVE_conditional_execution
16953         targets.  Reserialize the basic blocks and go out of cfglayout mode.
16954         * reg-stack.c: Include cfglayout.h.
16955         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
16956         the call to reorder_basic_blocks.
16957         * basic-block.h (reorder_basic_blocks): Update prototype.
16958         (relink_block_chain): New prototype.
16959         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
16961 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
16963         * config/mips/mips.md (type, hazard, *movdi_32bit,
16964         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
16965         *movhi_internal, *movqi_internal, *movsf_hardfloat,
16966         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
16967         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
16968         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
16969         applicable.
16970         (movcc): Change first xfer to multi.
16971         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
16972         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
16973         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
16974         config/mips/generic.md: Change reservations using "xfer" to use
16975         "mfc,mtc".
16976         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
16977         using match_operand.
16978         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
16979         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
16980         examining mode.
16981         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
16983 2007-03-22  Richard Henderson  <rth@redhat.com>
16985         * config/i386/i386.c: Remove unnecessary function declarations.
16986         Move targetm definition, and all related macros, to the end of
16987         the file.  Resort some functions to put definitions before uses.
16988         (ix86_attribute_table): Make static.  Move to end of file.
16989         (ix86_gimplify_va_arg): Make static.
16991 2007-03-22  Richard Henderson  <rth@redhat.com>
16993         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
16994         don't increase local_regparm with force_align_arg_pointer check.
16995         (ix86_function_sseregparm): Assert 32-bit.
16996         (type_has_variadic_args_p): New.
16997         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
16998         type_has_variadic_args_p.
16999         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
17000         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
17001         use memset instead.  Do maybe_vaarg check first; skip attribute
17002         tests if true; skip attribute tests for 64-bit.
17003         (construct_container): Remove TARGET_DEBUG_ARG.
17004         (function_arg_advance_32, function_arg_advance_64): Split out ...
17005         (function_arg_advance): ... from here.
17006         (function_arg_32, function_arg_64): Split out ...
17007         (function_arg): ... from here.
17008         (ix86_pass_by_reference): Tidy.
17009         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
17010         (function_value_32): New, from parts of ix86_function_value
17011         and ix86_value_regno.
17012         (function_value_64): New, from parts of ix86_function_value
17013         and ix86_libcall_value.
17014         (ix86_function_value_1): New.
17015         (ix86_function_value, ix86_libcall_value): Use it.
17016         (return_in_memory_32, return_in_memory_64): Split out ...
17017         (ix86_return_in_memory): ... from here.
17018         (ix86_struct_value_rtx): Skip for 64-bit.
17019         (ix86_libcall_value, ix86_value_regno): Remove.
17020         (setup_incoming_varargs_64): Split out ...
17021         (ix86_setup_incoming_varargs): ... from here.
17022         (ix86_va_start): Remove TARGET_DEBUG_ARG.
17023         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
17024         * config/i386/i386-protos.h (ix86_function_value): Remove.
17025         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
17027 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17029         PR other/23572
17030         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
17031         infinities not supported, otherwise emit warning if -Woverflow. On
17032         underflow, emit warning if -Woverflow.
17033         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
17034         and 0 otherwise.
17035         * real.h (real_from_string): Update declaration
17037 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
17038             Richard Henderson  <rth@redhat.com>
17040         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
17041         * calls.c (compute_argument_block_size, expand_call,
17042         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
17043         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
17044         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
17045         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
17046         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
17047         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
17048         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
17049         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
17050         Set to 1.
17052 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
17054         * c-incpath.c (add_sysroot_to_chain): New.
17055         (merge_include_chains): Add sysroot argument.  Call
17056         add_sysroot_to_chain if sysrooted.
17057         (register_include_chains): Update call to merge_include_chains.
17058         * doc/cppopts.texi: Document use of '=' in include directory
17059         arguments.
17061 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
17063         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
17064         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
17065         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
17066         insn pattern using X87MODEF12 mode macro.
17068 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
17070         * regmove.c (regmove_optimize): Use reg_mentioned_p
17071         instead of reg_overlap_mentioned_p for DST.
17073 2007-03-21  Mike Stump  <mrs@apple.com>
17075         * c.opt: Fixup for Objective-C/C++.
17077 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
17079         * explow.c (convert_memory_address): Fold memory reference when
17080         POINTERS_EXTEND_UNSIGNED < 0
17082 2007-03-21  Richard Henderson  <rth@redhat.com>
17084         PR target/31245
17085         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
17086         * config/i386/mmintrin.h (__m64): Likewise.
17087         * config/i386/xmmintrin.h (__m128): Likewise.
17089 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
17091         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
17092         (VXWORKS_OS_CPP_BUILTINS): Define.
17093         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
17094         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
17096 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
17098         * rtl.h (constant_pool_reference_p): Delete.
17099         (find_constant_src): Declare.
17100         * rtlanal.c (find_constant_src): New function.
17101         * simplify-rtx.c (constant_pool_reference_p): Delete.
17102         * config/i386/i386.md: Use find_constant_src instead of
17103         constant_pool_reference_p/avoid_constant_pool_reference pairs.
17105 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
17107         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
17108         * c-cppbuiltin.c (c_cpp_builtins): Define them.
17110 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
17112         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
17113         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
17114         (arm_elf_asm_constructor): Use it.
17115         (arm_elf_asm_destructor): New function.
17117 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
17119         * jump.c (mark_jump_label): Treat SEQUENCE specially.
17121 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
17123         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
17125 2007-03-19  Andrew Haley  <aph@redhat.com>
17127         PR tree-optimization/31264
17128         * tree-vrp.c (register_edge_assert_for_1): Don't look though
17129         VIEW_CONVERT_EXPRs.
17131 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
17133         PR rtl-optimization/30907
17134         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
17135         (fwprop_init): Always call loop_optimizer_initialize.
17136         (fwprop_done): Always call loop_optimizer_finalize.
17137         (fwprop): We always have loop info now.
17138         (gate_fwprop_addr): Remove.
17139         (pass_fwprop_addr): Use gate_fwprop as gate.
17141         PR rtl-optimization/30841
17142         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
17143         df_chain_alloc): Call df_reorganize_refs unconditionally.
17144         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
17145         refs_organized to refs_organized_size.
17146         (df_ref_create_structure): Use refs_organized_size instead of
17147         bitmap_size if refs had been organized, and keep refs_organized_size
17148         up-to-date.
17149         * df.h (struct df_ref_info): Change refs_organized to
17150         refs_organized_size.
17151         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
17152         bitmap_size.
17154 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
17156         * except.c (output_function_exception_table): Do not reference the
17157         EH personality routine for functions that do not require an
17158         exception table.
17160 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
17162         PR c/30762
17163         * c-typeck.c (convert_for_assignment): Call comptypes for
17164         RECORD_TYPE or UNION_TYPE.
17166         PR inline-asm/30505
17167         * reload1.c (reload): Do invalid ASM checking after
17168         cleanup_subreg_operands.
17170 2007-03-19  Jeff Law  <law@redhat.com>
17172         * tree-cfg.c (find_taken_edge): Tighten conditions for
17173         optimizing computed gotos.
17175 2007-03-19  Michael Matz  <matz@suse.de>
17177         * builtins.c (expand_builtin_sync_operation,
17178         expand_builtin_compare_and_swap,
17179         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
17180         correctly.
17182         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
17183         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
17184         for operand 3.
17186 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17188         * doc/tm.texi: Add brackets around the return type of
17189         TARGET_SECONDARY_RELOAD.
17191 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17192         Richard Guenther  <rguenther@suse.de>
17194         PR tree-optimization/31254
17195         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
17196         Use handled_component_p () where appropriate.  Continue
17197         propagating into the rhs if we propagated into an INDIRECT_REF
17198         on the lhs.
17200 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17202         * config/s390/s390.md (op_type attribute): RRR instruction type added.
17203         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
17204         (xde, xdee): Mode attributes adjusted to support DFP modes.
17205         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
17206         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
17207         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
17208         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
17209         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
17210         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
17211         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
17212         numbers.
17213         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
17214         "movsf"): Insn definitions removed.
17215         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
17216         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
17217         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
17218         definitions added.
17219         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
17220         "reload_in<mode>", "reload_out<mode>"): Expander added.
17221         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
17222         Expander removed.
17224 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17226         * config/s390/s390.md: Only non-functional changes.  Renamed
17227         FPR mode macro to BFP all over the file.
17229 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17231         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
17232         (op_type attribute): RRF instruction type added.
17233         (fT0): New mode attribute.
17234         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
17235         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
17236         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
17237         instruction no secondary memory is needed when moving DFmode values
17238         between GPRs and FPRs.
17240 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17242         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
17243         inverted and documentation adjusted.
17244         ("mhard-dfp", "msoft-dfp"): New options.
17245         * config/s390/s390.c (s390_handle_arch_option): New architecture
17246         switch: z9-ec.
17247         (override_options): Sanity checks for the new options added.
17248         * config.gcc: New architecture switch: z9-ec.
17249         * config/s390/s390.h (processor_flags): PF_DFP added.
17250         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
17251         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
17252         when the bit is NOT set so remove it from the defaults.
17254 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
17256         * genemit.c (main): Print include statement for dfp.h.
17257         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
17258         is not available.
17260 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
17262         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
17264 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
17266         PR target/31022
17267         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
17268         instead of PATTERN.
17270 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17272         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
17273         attr_length_call, output_call, output_indirect_call): Cleanup
17274         formatting of targetm calls.
17276 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
17278         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
17280 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17282         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
17283         reservation, bypass and anti-bypass descriptions for these
17284         instructions.  Update move patterns.
17285         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
17286         TYPE_FPSTORE.
17288 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
17290         * tree-vect-transform.c (get_initial_def_for_induction): Replace
17291         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
17292         (get_initial_def_for_reduction): Likewise.
17294 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
17296         Fix PR tree-optimization/29922
17297         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
17298         (get_representative): Removed.
17299         (value_dies_in_block_x): Update for rvuse removal.
17300         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
17301         (compute_antic_aux): Handle when PHI nodes appear in
17302         non-single-successors.
17303         (dump_bitmap_of_names): Removed.
17304         (compute_antic_safe): Renamed and removed rvuse calculation.
17305         Calculate only antic safe.
17306         (insert_into_preds_of_block): Remove assert.
17307         (execute_pre): Update for renamed functions.
17308         (defer_or_phi_translate_block): New function.
17310 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
17312         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
17313         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
17314         typos.
17315         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
17316         Follow spelling conventions.
17318         * tree-data-ref.h: Remove the prototype for analyze_array.
17320 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
17322         PR tree-optimization/31041
17323         * tree-vect-transform.c (get_initial_def_for_induction): Call
17324         force_gimple_operand.
17326 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
17328         * ipa-type-escape.c (look_for_casts) : Revert code to use
17329         handled_component_p due to ada test a-numaux.adb.
17331 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
17333         * final.c (final_scan_insn): Alter the condition of a
17334         conditional trap if we have nonstandard CC.
17336 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
17338         * configure.ac: Remove excess quoting from asm line 0 test.
17339         * configure: Rebuilt.
17341 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17343         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
17344         * c-common.c (convert_and_check): Move warning logic to...
17345         (warnings_for_convert_and_check): ...here. Define.
17346         * c-common.h (warnings_for_convert_and_check): Declare.
17348 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17350         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
17351         (output_call): Likewise.
17353 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
17355         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
17357 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
17359         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
17361 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
17363         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
17364         opteron, athlon-64 and athlon-fx processor_alias_table entries.
17366 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
17368         PR tree-optimization/31183
17369         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
17370         Use double_int instead of unsigned int for representing access_strides.
17371         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
17373 2007-03-16  Richard Guenther  <rguenther@suse.de>
17375         PR tree-optimization/31146
17376         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
17377         to allow recursion of forward_propagate_addr_expr.
17378         (forward_propagate_addr_into_variable_array_index): Likewise.
17379         (forward_propagate_addr_expr): Likewise.
17380         (tree_ssa_forward_propagate_single_use_vars): Likewise.
17381         (forward_propagate_addr_expr_1): Recurse on simple copies
17382         instead of propagating into them.  Do so for useless conversions
17383         as well.
17384         (forward_propagate_addr_expr): Clean up unused statements after
17385         recursion.
17387 2007-03-16  Richard Guenther  <rguenther@suse.de>
17389         * builtins.c (expand_builtin_cexpi): Use the right argument
17390         for the expansion via cexp.
17392 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
17394         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
17395         * configure: Rebuilt.
17397 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
17399         PR debug/29906
17400         * dwarf2out.c (force_type_die): Adjust comment.
17401         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
17403 2007-03-15  DJ Delorie  <dj@redhat.com>
17405         * config/frv/predicates.md (minmax_operator): Don't check operands
17406         here.
17408 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
17410         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
17411         Update constant estimates of number of iterations.
17412         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
17413         argument renamed to "realistic".
17414         (compute_estimated_nb_iterations): Removed.
17415         (record_niter_bound): New function.
17416         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
17417         call record_nonwrapping_iv with upper = false.
17418         (infer_loop_bounds_from_signedness): Pass upper argument to
17419         record_nonwrapping_iv.
17420         (estimate_numbers_of_iterations_loop): Do not call
17421         compute_estimated_nb_iterations.  Record estimate based on profile
17422         information.  Initialize the constant estimates of number of
17423         iterations.
17424         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
17425         estimates.
17426         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
17427         number of iterations is too small.
17428         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
17429         (EST_NOT_AVAILABLE): Removed.
17430         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
17431         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
17432         fields.
17434 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
17436         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
17437         Handle NE_EXPR guards.
17439 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17441         PR c++/24924
17442         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
17443         Set also -pedantic-errors by default for the  preprocessor unless
17444         -fpermissive is given.
17446 2007-03-15  Richard Guenther  <rguenther@suse.de>
17448         PR middle-end/29719
17449         PR middle-end/31161
17450         * builtins.c (expand_builtin_cexpi): As a fallback if we
17451         don't have builtins for sincos or cexp create a function
17452         declaration for cexp and expand to a call to that.
17453         (expand_builtin_int_roundingfn): Always fall
17454         back to floor/ceil and its variants even if they may be
17455         not available.
17457 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
17459         PR middle-end/31159
17460         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
17461         jump tables, move the call to delete_dead_jumptables from here...
17462         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
17463         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
17464         don't allow merging of blocks that try_redirect_by_replacing_jump
17465         also does not handle when not optimizing.
17467 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
17468             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
17470         * config/i386/i386.md (x86_sahf_1): Correctly handle
17471         HAVE_AS_IX86_SAHF.
17473 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
17475         PR target/31167
17476         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
17477         x86_64_general_operand as operand[2] predicate.  Remove "iF"
17478         from operand constraints and use "e" constraint instead.
17479         (*subti3_1, *subti3_1 splitter): Ditto.
17480         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
17481         operand[1] predicate.
17483 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
17485         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
17486         arrays, multiply the access strides by the size of the sub-array.
17487         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
17489 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
17491         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
17492         the configured assembler supports the sahf mnemonic.
17493         * configure: Regenerate.
17494         * config.in: Regenerate.
17496         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
17497         emit "sahf" or ".byte\t0x9e" as asm template.
17499 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
17501         PR 31018
17502         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
17503         option to replace hard coded TARGET_xxx in md file.
17504         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
17505         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
17506         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
17507         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
17508         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
17509         (X86_TUNE_NOT_VECTORMODE): Ditto.
17510         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
17511         (TUNE_AVOID_VECTOR_DECODE): Ditto.
17512         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
17513         (TUNE_SLOW_IMUL_IMM8): Ditto.
17514         (TUNE_MOVE_M1_VIA_OR): Ditto.
17515         (TUNE_NOT_UNPAIRABLE): Ditto.
17516         (TUNE_NOT_VECTORMODE): Ditto.
17518         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
17519         options.
17521         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
17522         tuning options instead of hard coded TARGET_xxx.
17523         (fix ssemode peephole2's): Ditto.
17524         (imul peephole2's): Ditto.
17525         (movsi_or): Ditto.
17526         (movdi_or_rex64): Ditto.
17527         (move peephole2): Ditto.
17528         (not peephole2's): Ditto.
17530 2007-03-14  Dirk Mueller  <dmueller@suse.de>
17532         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
17533         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
17534         * c-parser.c (c_parser_if_body): Always add an empty statement in case
17535         of empty body.
17536         * c-parser.c (c_parser_do_statement): Warn about empty body in
17537         do/while statement.
17538         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
17539         * doc/invoke.texi (-Wempty-body): Update documentation.
17541 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17543         PR c/21438
17544         * c-common.h (warn_for_div_by_zero): Declare.
17545         * c-common.c (warn_for_div_by_zero): Define.
17546         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
17547         warning.
17549 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
17551         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
17552         to PREFIX and STANDARD_PREFIX.
17554 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
17555             Phil Edwards  <phil@codesourcery.com>
17557         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
17558         (__gthread_once_t): Remove busy field for RTPs.
17559         (__GTHREAD_ONCE_INIT): Update accordingly.
17561 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
17563         * doc/invoke.texi: Document VxWorks options.
17565 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
17567         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
17569 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
17571         PR tree-optimization/30590
17572         * tree-nrv.c (tree_nrv): Check for the partial update of the
17573         return value.
17575 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
17577         * flags.h (flag_random_seed): Remove declaration, in favor of...
17578         * toplev.h (get_random_seed, set_random_seed): ... these.
17579         * tree.c (get_file_function_name): Use the former.
17580         * opts.c (common_handle_option): Use the latter.
17581         * toplev.c
17583 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
17585         PR middle-end/31127
17586         * cse.c (cse_find_path): Do not bail out if a basic block that
17587         we already visited now becomes part of a path that starts at a
17588         different basic block.  Just disallow this, to make sure we
17589         visit each basic block at most once.
17591 2007-03-13  Jan Hubicka  <jh@suse.cz>
17593         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
17594         attributes, when profile esitmate is present, calls with very low
17595         frequency are cold.
17597 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
17599         PR tree-optimization/30730
17600         PR tree-optimization/26900
17601         * tree-ssa-loop-niter.c: Include gmp.h.
17602         (bounds): New type.
17603         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
17604         split_to_var_and_offset, determine_value_range,
17605         bound_difference_of_offsetted_base, refine_bounds_using_guard,
17606         bound_difference, bounds_add, bounds_negate,
17607         number_of_iterations_ne_max, dump_affine_iv): New functions.
17608         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
17609         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
17610         difference of initial and final value of control iv to validate
17611         results.
17612         (number_of_iterations_cond): Add loop parameter.  Determine bounds
17613         on the difference of the extremes of the control iv.  Add dumps.
17614         (expand_simple_operations): Handle phi nodes.
17615         (simplify_using_initial_conditions): Do not record used conditions.
17616         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
17617         Do not set additional_info.
17618         (implies_nonnegative_p, implies_ge_p): Removed.
17619         (derive_constant_upper_bound): Do not use parameter `additional'.
17620         (record_estimate): Parameter `additional' removed.  Parameter
17621         `i_bound' added.  Do not call derive_constant_upper_bound.
17622         (record_nonwrapping_iv): Use derive_constant_upper_bound to
17623         bound the number of iterations estimate.
17624         (estimate_numbers_of_iterations_loop): Pass the estimate from
17625         the number of iterations analysis to record_estimate.
17626         * tree.h (multiple_of_p): Declare.
17627         * tree-scalar-evolution.c (expression_expensive_p): Removed.
17628         (scev_const_prop): Do not check expression_expensive_p.
17629         * fold-const.c (multiple_of_p): Exported.
17630         * double-int.c (double_int_mask): Exported.
17631         * double-int.h (double_int_mask): Declare.
17632         * tree-flow.h (struct tree_niter_desc): Removed additional_info
17633         field.  Added max field.
17635 2007-03-13  David Taylor  <taylor@candd.org>
17637         PR driver/12448:
17638         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
17639         default -MQ.
17641 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17643         PR target/31123
17644         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
17645         two unamed patterns.
17647 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
17649         * config/i386/i386.opt (mcx16, msahf): New options.
17650         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
17651         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
17653         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
17654         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
17655         Output -mcx16 and -msahf options when corresponding bit is set.
17657         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
17658         and -msahf options.
17660 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
17662         * configure.ac: Test for assembler tolerance to # 0 "".
17663         * configure, config.in: Rebuilt.
17664         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
17666 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
17668         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
17670         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
17671         (handle_syscall): Handle direct system calls.
17672         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
17674 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
17676         * doc/invoke.texi: Fix cpp.info cross-reference.
17677         * doc/passes.texi: Fix gcc.info cross-reference.
17679 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
17681         PR tree-optimization/30835
17682         * lambda-code.c (can_convert_to_perfect_nest): Check whether
17683         bb_for_stmt is not NULL before accessing it.
17685 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
17687         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
17688         some multilibs.
17690 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
17692         PR 30635
17693         * doc/install.texi: Document --enable-stage1-languages
17695 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
17697         * tree-pass.h (pass_into_cfg_layout_mode,
17698         pass_outof_cfg_layout_mode): Declare.
17699         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
17700         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
17701         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
17702         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
17704 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
17706         * c-decl.c (warn_variable_length_array): New function.
17707         Refactored from grokdeclarator to handle warn_vla
17708         and handle unnamed array case.
17709         (grokdeclarator): Refactored VLA warning case.
17710         * c.opt (Wvla): New flag.
17711         * doc/invoke.texi (Wvla): New warning.
17713 2007-03-12  Richard Henderson  <rth@redhat.com>
17715         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
17716         (TARGET_SECTION_TYPE_FLAGS): New.
17718 2007-03-12  Richard Henderson  <rth@redhat.com>
17720         * config/darwin.c (machopic_reloc_rw_mask): New.
17721         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
17722         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
17724 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
17726         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
17727         * cppdefault.h (cpp_PREFIX): Document.
17728         (cpp_PREFIX_len): Likewise.
17729         (cpp_EXEC_PREFIX): New variable.
17730         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
17731         * c-incpath.c (add_standard_paths): Correct logic for relocating
17732         paths within prefix.
17734 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
17736         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
17737         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
17738         mode macro.
17739         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
17740         fix_truncdfdi_sse using SSEMODEF mode macro.
17741         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
17742         fix_truncdfsi_sse using SSEMODEF mode macro.
17743         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
17744         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
17746 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
17748         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
17749         elfos.h to tm_file.
17751 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
17753         * tree.h : Add multiple_of_p declaration.
17754         * fold-const.c (multiple_of_p): Make multiple_of_p public.
17755         * ipa-type-escape.c (results_of_malloc): Redundant.
17756         (visited_stmts): New. Visited stmt for walk_use_def_chains.
17757         (cast_type): Extended with new members.
17758         (check_cast): Returns cast_type.
17759         (cast): New structure for data of walk_use_def_chains.
17760         (is_malloc_result, is_cast_from_non_pointer_1,
17761         is_cast_from_non_pointer,
17762         is_array_access_through_pointer_and_index): New functions.
17763         (look_for_casts): Returns cast types.
17764         (check_call): Returns void.
17765         (okay_pointer_operation): Use support of pointer plus index,
17766         pointer plus constant and allow all multiplications.
17768 2007-03-11  Richard Guenther  <rguenther@suse.de>
17770         PR tree-optimization/31115
17771         * tree-vrp.c (extract_range_from_binary_expr): Make sure
17772         the shift count is positive and non-anti-range for RSHIFT_EXPR.
17773         A shift count of zero is not special as with *_DIV_EXPR.
17774         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
17775         direction.
17777 2007-03-11  Ian Lance Taylor  <iant@google.com>
17779         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
17780         the *_DIV_EXPR codes correctly with overflow infinities.
17782 2007-03-11  Ira Rosen  <irar@il.ibm.com>
17784         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
17785         indicate success/failure of the analysis. Add negation to subtrahend
17786         in case of subtraction. Fail if both operands contain constants.
17787         (create_data_ref): Fail if analyze_offset fails.
17789 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
17791         * config/i386/i386.md (frndintxf2): Rename to ...
17792         (rintxf2): ... this. Remove expander having same name.
17793         (rintsf2, rintdf2): Implement using SSEMODEF macro.
17794         (roundsf2, rounddf2): Ditto.
17795         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
17796         (lround<mode>di2, lround<mode>si2): Ditto.
17798 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
17800         * lower-subreg.c: Include except.h.
17801         (decompose_multiword_subregs): Verify that the only control flow
17802         insns we can split are loads to multi-words pseudos.
17803         Handle breaking such blocks after splitting, instead of calling
17804         find_many_sub_basic_blocks.
17806         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
17807         on the new basic block.  Add a lengthy comment explaining why we
17808         thought this was necessary.
17809         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
17811 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
17813         PR c++/30924
17814         * tree.c (walk_type_fields): Recurse into the element type of
17815         ARRAY_TYPEs if there is a pointer set.
17817 2007-03-10  Dirk Mueller  <dmueller@suse.de>
17819         * c-common.c (warn_logical_operator): Fix condition.
17821 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
17823         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
17824         quotation mark.
17825         * config/darwin.c (machopic_select_section): Remove superfluous
17826         argument in call to categorize_decl_for_section.  Remove unused
17827         variable shlib.
17829 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
17831         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
17832         defined.
17833         * configure: Regenerate.
17835 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
17837         PR target/31101
17838         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
17839         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
17840         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
17841         Add LABEL_NUSES to emitted label.
17842         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
17843         branch probability value to emitted jump insn.
17844         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
17845         Do not check life information and do not re-arrange input operands
17846         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
17848 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
17850         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
17851         the change of decode_asm_operands.
17853 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
17855         * mode-switching.c (create_pre_exit): Skip blockage insn.
17857 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
17859         * tree-pass.h (TODO_update_smt_usage): Remove.
17860         Update all users.
17861         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
17862         argument SOME.
17863         Update all users.
17865 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17867         * pa.c (attr_length_call): Revise condition for long
17868         pc-relative branch.
17869         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
17870         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
17871         sequence on SOM target.
17873 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
17875         * gcc.c: Document %{, in big comment at top.
17876         (input_suffix_matches): Remove special handling for .s and
17877         .S.
17878         (input_spec_matches): New.
17879         (handle_braces): Handle %{,.
17880         (validate_switches): ',' indicates a value which is not a switch.
17881         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
17882         to detect assembler input.
17883         * config/i386/sol2.h (CPP_SPEC): Likewise.
17884         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
17885         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
17886         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
17887         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
17888         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
17889         -m64 causes deployment target to default to 10.5.
17890         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
17892 2007-03-09  Richard Henderson  <rth@redhat.com>
17894         PR target/26090
17895         * target.h (targetm.asm.out.reloc_rw_mask): New.
17896         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
17897         (TARGET_ASM_OUT): Use it.
17898         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
17899         * varasm.c (categorize_decl_for_section): Remove shlib argument;
17900         use the new reloc_rw_mask target hook instead.
17901         (default_section_type_flags_1): Merge into...
17902         (default_section_type_flags): ... here.
17903         (decl_readonly_section_1): Merge into...
17904         (decl_readonly_section): ... here.
17905         (default_elf_select_section_1): Merge into...
17906         (default_elf_select_section): ... here.
17907         (default_unique_section_1): Merge into...
17908         (default_unique_section): ... here.
17909         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
17910         (default_select_rtx_section): Use it.
17911         (default_elf_select_rtx_section): Likewise.
17912         * output.h: Update to match.
17913         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
17914         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
17915         (TARGET_ASM_RELOC_RW_MASK): New.
17916         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
17917         to categorize_decl_for_section.
17918         (x86_64_elf_unique_section): Likewise.
17919         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
17920         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
17921         (TARGET_ASM_RELOC_RW_MASK): New.
17922         * config/ia64/ia64.c (ia64_rwreloc_select_section,
17923         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
17924         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
17925         (TARGET_RWRELOC): Remove.
17926         (ia64_section_type_flags): Adjust call to default_section_type_flags.
17927         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
17928         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
17929         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
17930         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
17931         (rs6000_xcoff_select_section): Use decl_readonly_section.
17932         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
17933         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
17934         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
17935         (TARGET_SECTION_TYPE_FLAGS): Remove.
17936         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
17938 2007-03-09  Roger Sayle  <roger@eyesopen.com>
17940         * fold-const.c (fold_comparison): Remove compile-time evaluation of
17941         complex constant equality/inequality comparisons for here.
17942         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
17943         known at compile-time or can be simplified to a scalar comparison.
17944         (fold_relational_const): Move compile-time evaluation of complex
17945         constant equality/inequality comparisons to here.
17947 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17949         PR rtl-optimization/30643
17950         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
17951         dest_addr_elt.
17952         (fold_rtx): Recurse, like before 2006-11-03.
17954 2007-03-09  DJ Delorie  <dj@redhat.com>
17956         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
17957         m32c-pragma.o.
17959 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
17961         PR tree-optimization/30375
17962         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
17963         LHS of statements is not the same.
17964         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
17966 2007-03-09  Chao-ying Fu  <fu@mips.com>
17968         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
17969         REV 2.
17970         * doc/invoke.texi (-mdspr2): Document new option.
17971         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
17972         New unspec for DSP REV 2.
17973         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
17974         these instructions are extended in DSP REV 2.
17975         (mips-dspr2.md): Include.
17976         * config/mips/mips.opt (mdspr2): New option.
17977         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
17978         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
17979         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
17980         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
17981         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
17982         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
17983         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
17984         and 2 builtins.
17985         (bdesc_map): Add one field of unsupported_target_flags.
17986         (bdesc_arrays):  Update entries to have extra fields.  Add
17987         dsp_32only_bdesc.
17988         (mips_init_builtins): Initialize new function types.
17989         Check unsupported_target_fileds to filter out builtins.
17990         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
17991         TARGET_DSPR2.
17992         (ASM_SPEC): Pass mdspr2 to the assembler.
17993         * config/mips/mips-dspr2.md: New file.
17995 2007-03-09  Sa Liu  <saliu@de.ibm.com>
17997         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
17999 2007-03-09  Ian Lance Taylor  <iant@google.com>
18001         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
18002         argument) like -Wstrict-overflow=2.
18003         * doc/invoke.texi (Warning Options): Update documentation.
18005 2007-03-09  Dirk Mueller  <dmueller@suse.de>
18007         PR c++/17946
18008         * doc/invoke.texi (-Wlogical-op): Document.
18009         * common.opt (-Wlogical-op): New.
18010         * c-common.h (warn_logical_operator): Declare.
18011         * c-common.c (warn_logical_operator): Define.
18012         * c-typeck.c (parser_build_binary_op): Call
18013         warn_logical_operator.
18015 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
18017         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
18018         * final.c (final_scan_insn): Test for non-"" file name.
18020 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
18022         * doc/loop.texi: Document the Omega linear constraints solver.
18023         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
18024         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
18025         omega-hash-table-size, omega-max-keys, and
18026         omega-eliminate-redundant-constraints.
18027         * tree-pass.h (pass_check_data_deps): Declared.
18028         * omega.c: New.
18029         * omega.h: New.
18030         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
18031         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
18032         pass_check_data_deps): New.
18033         * tree-data-ref.c (init_data_ref): Remove declaration.
18034         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
18035         (analyze_array): Renamed init_array_ref, move up initializations.
18036         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
18037         Removed arguments that are set to NULL.
18038         (analyze_indirect_ref): Correct indentation, correct call to
18039         init_pointer_ref.
18040         (object_analysis): Call init_array_ref instead of analyze_array.
18041         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
18042         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
18043         of DR_ACCESS_FNS_ADDR.
18044         (init_omega_eq_with_af, omega_extract_distance_vectors,
18045         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
18046         ddr_consistent_p): New.
18047         (compute_affine_dependence): Check consistency of ddrs when
18048         flag_check_data_deps is passed.
18049         (analyze_all_data_dependences): Uncomment.
18050         (tree_check_data_deps): New.
18051         * tree-data-ref.h: Include omega.h.
18052         (DR_ACCESS_FNS_ADDR): Removed.
18053         (data_dependence_relation): Add inner_loop.
18054         (DDR_INNER_LOOP): New.
18055         * common.opt (fcheck-data-deps): New.
18056         * tree-flow.h (tree_check_data_deps): Declare.
18057         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
18058         (OBJS-common): Depend on omega.o.
18059         (omega.o): Define.
18060         * passes.c (pass_check_data_deps): Scheduled.
18061         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
18062         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
18063         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
18064         PARAM_VECT_MAX_VERSION_CHECKS,
18065         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
18067 2007-03-09  Richard Guenther  <rguenther@suse.de>
18069         PR tree-optimization/30904
18070         PR middle-end/31058
18071         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
18072         the same way as *_DIV_EXPR.
18074 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
18076         * recog.c (decode_asm_operands): No mixed declarations and code.
18078 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
18080         * rtl.def (ASM_INPUT): Add location.
18081         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
18082         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
18083         (decode_asm_operands): Add loc operand.
18084         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
18085         * stmt.c (expand_asm): Rename to...
18086         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
18087         gen_rtx_ASM_INPUT_loc.
18088         (expand_asm_expr): Adjust.
18089         * recog.c (decode_asm_operands): Add loc operand.
18090         (check_asm_operands, extract_insn): Adjust.
18091         * reload1.c (maybe_fix_stack_asms): Likewise.
18092         * final.c (asm_insn_count): Likewise.
18093         (final_scan_insn): Output # line before and after asm.
18095 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
18097         * tree-ssa-structalias.c (variable_info): Remove
18098         finished_solution.
18099         (new_var_info): Ditto.
18100         (shared_bitmap_info_t): New structure.
18101         (shared_bitmap_table): New variable.
18102         (shared_bitmap_hash): New function.
18103         (shared_bitmap_eq): Ditto
18104         (shared_bitmap_lookup): Ditto.
18105         (shared_bitmap_add): Ditto.
18106         (merge_smts_into): Change to take bitmap directly.
18107         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
18108         (init_alias_vars): Init shared bitmap hashtable.
18109         (delete_points_to_sets): Delete shared bitmap hashtable.
18110         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
18111         is_aliased removal as a change that was still necessary was
18112         deleted.
18114 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
18116         * config/i386/i386.h (override_options): Conditionally disable
18117         x86_sahf for 64bit targets only.
18119 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18121         PR C/31072
18122         * c-decl.c (merge_decls): Don't call make_var_volatile.
18123         * varasm.c (make_var_volatile): Remove.
18124         * output.h (make_var_volatile): Remove.
18126 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
18128         PR tree-optimization/31085
18129         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
18131 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18133         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
18134         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
18135         ATTR_CONST_NOTHROW_LIST.
18137         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
18138         FIX_TRUNC_EXPR.
18140 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
18142         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
18144 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
18146         PR 31013
18147         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
18148         is declared.
18149         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
18150         passed, use shared libgcc.
18152 2007-03-08  Roger Sayle  <roger@eyesopen.com>
18154         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
18155         instead of calling build2 with a GIMPLE_MODIFY_STMT.
18156         (honor_protect_cleanup_actions, lower_try_finally_switch):
18157         Likewise.
18158         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
18159         ifc_temp_var): Likewise.
18160         * tree-inline.c (setup_one_parameter): Likewise.
18161         * tree-mudflap.c (mf_decl_cache_locals,
18162         mf_build_check_statement_for): Likewise.
18163         * tree-nested.c (init_tmp_var, save_tmp_var,
18164         finalize_nesting_tree_1): Likewise.
18165         * tree-outof-ssa.c (insert_copy_on_edge,
18166         insert_backedge_copies): Likewise.
18167         * tree-profile.c (tree_gen_edge_profiler,
18168         tree_gen_ic_profiler): Likewise.
18169         * tree-scalar-evolution.c (scev_const_prop): Likewise.
18170         * tree-sra.c (sra_build_assignment): Likewise.
18171         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
18172         * tree-ssa-math-opts.c (insert_reciprocals,
18173         execute_cse_sincos_1): Likewise.
18174         * tree-tailcall.c (adjust_accumulator_values,
18175         adjust_return_value): Likewise.
18176         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
18177         * tree-vect-transform.c (vect_create_data_ref_ptr,
18178         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
18179         vect_create_epilog_for_reduction, vectorizable_reduction,
18180         vectorizable_call, vectorizable_conversion,
18181         vectorizable_assignment, vectorizable_operation,
18182         vectorizable_type_demotion, vect_gen_widened_results_half,
18183         vect_permute_store_chain, vectorizable_store,
18184         vect_setup_realignment, vect_permute_load_chain,
18185         vectorizable_load, vectorizable_condition,
18186         vect_create_cond_for_align_checks): Likewise.
18187         * tree-vrp.c (build_assert_expr_for): Likewise.
18189 2007-03-08  Ian Lance Taylor  <iant@google.com>
18191         * tree-vrp.c: Include "intl.h".
18192         (usable_range_p): New static function.
18193         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
18194         overflowed values, juts set *strict_overflow_p.
18195         (compare_values): Only return -2 if one of the operands is not a
18196         constant.
18197         (compare_ranges): Call usable_range_p.
18198         (compare_range_with_value): Likewise.
18199         (vrp_evaluate_conditional_warnv): Rename from
18200         vrp_evaluate_conditional.  Make static.  Change all callers.
18201         (vrp_evaluate_conditional): New function.
18202         (simplify_div_or_mod_using_ranges): Issue warning about reliance
18203         on signed overflow.
18204         (simplify_abs_using_ranges): Likewise.
18205         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
18206         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
18207         within_stmt parameter.
18208         * tree-ssa-propagate.c (fold_predicate_in): Update call to
18209         vrp_evaluate_conditional.
18210         * tree-ssa-threadedge.c
18211         (record_temporary_equivalences_from_stmts_at_dest): Change
18212         simplify parameter to take a second tree parameter.
18213         (simplify_control_stmt_condition): Likewise.
18214         (thread_across_edge): Likewise.
18215         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
18216         (thread_across_edge): Likewise.
18217         * Makefile.in (tree-vrp.o): Depend upon intl.h.
18219 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
18221         * config/i386/i386.h (TARGET_SAHF): New define.
18222         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
18223         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
18224         (x86_sahf): New global variable.
18225         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
18226         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
18227         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
18228         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
18229         for 64-bit.
18230         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
18231         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
18232         when expanding fcomi/sahf based tests.
18233         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
18234         expanding sahf based alternative. Emit sahf based sequence when
18235         optimizing for code size.
18236         * config/i386/i386.md (x86_sahf_1): Do not disable for
18237         TARGET_64BIT, enable for TARGET_SAHF.
18239 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
18241         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
18242         spurious whitespace from error message.
18244 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
18246         PR c++/30852
18247         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
18249 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
18251         * c-decl.c (grokdeclarator): Disable warnings for anonymous
18252         bitfields.
18253         * tree-sra.c (instantiate_element): Propagate disabled warnings
18254         from the element itself to the created variable.
18256 2007-03-07  Richard Henderson  <rth@redhat.com>
18258         PR target/30848
18259         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
18260         silently fix up the stack in the case of a missing register.
18262 2007-03-07  Paul Brook  <paul@codesourcery.com>
18264         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
18266 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
18268         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
18269         New.
18270         (phase1_vrs): Use them.
18271         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
18272         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
18273         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
18274         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
18275         __gnu_Unwind_Restore_WMMXC if required.
18276         (_Unwind_VRS_Pop): Implement iWMMXt support.
18277         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
18278         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
18279         gnu_Unwind_Save_WMMXC): Define.
18281 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
18283         * config/vxworks.h (vxworks_override_options): Declare.
18284         (VXWORKS_OVERRIDE_OPTIONS): Use it.
18285         * config/vxworks.c: Include target.h and toplev.h.
18286         (vxworks_override_options): New function.
18287         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
18289 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
18291         * config/s390/s390.c (override_options): Don't emit an error when
18292         -mstack-size is used without providing -mstack-guard.
18293         (s390_emit_prologue): Choose stack_guard value automatically if not
18294         provided via command line.
18295         * doc/invoke.texi: Adjust description of -mstack-guard and
18296         -mstack-size.
18298 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
18300         * config/i386/i386.c (output_set_got): Add a GOT initialization
18301         sequence for VxWorks PIC.
18302         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
18303         around labels as well as symbols.  Use gotoff_operand instead
18304         of local_symbolic_operand.
18305         (legitimize_pic_address): Use gotoff_operand instead of
18306         local_symbolic_operand.  Use @GOT accesses for labels as
18307         well as symbols.
18308         (ix86_output_addr_diff_elt): Use PC-relative rather than
18309         GP-relative offsets for VxWorks PIC.
18310         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
18311         no_new_pseudos.  Check whether the returned register is op0.
18312         * config/i386/i386.md (tablejump): Use PC-relative rather than
18313         GP-relative offsets for VxWorks PIC.
18314         * config/i386/predicates.md (gotoff_operand): New predicate.
18316 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18318         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
18319         before defining.
18320         * config/vxworks-dummy.h: New file.
18321         * config/i386/i386.h: Include it.
18323 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
18325         * dwarf2out.c (is_inlined_entry_point): New
18326         (add_high_low_attributes): Emit DW_AT_entry_pc along with
18327         DW_AT_ranges if the first subblock is the entry point.
18329 2007-03-06  David Daney  <ddaney@avtrex.com>
18331         * doc/install.texi (mips-*-*): Change recommended binutils
18332         version.
18334 2007-03-06  Anatoly Sokolov <aesok@post.ru>
18336         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
18337         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
18338         devices.
18339         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
18340         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
18342 2007-03-06  Jan Hubicka  <jh@suse.cz>
18344         * errors.h (warning, error, fatal, internal_error): Mark as cold.
18345         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
18346         functions are hot.
18347         (probably_cold_bb_p): Cold functions are cold.
18348         (probably_never_executed_bb_p): Cold functions are cold.
18349         (tree_bb_level_predictions): Predict calls to cold functions as not
18350         taken.
18351         (compute_function_frequency): Check hot/cold attributes.
18352         * function.h (function_frequency): Update comments.
18353         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
18354         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
18355         (c_common_att): Add cold and hot.
18357         * doc/extend.texi (hot,cold attributes): Document.
18359 2007-03-06  Andrew Haley  <aph@redhat.com>
18361         * function.c (expand_function_end): Move blockage to just after we
18362         emit the label for the naked return from the function.
18364 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18366         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
18367         before redefining.
18369 2007-03-06  Jan Hubicka  <jh@suse.cz>
18371         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
18372         loaded for constant large models.  Non-large 64bit PIC can do.
18373         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
18374         * cmodel.h: Add LARGE PIC.
18375         * i386.md (UNSPEC_PLTOFF): New.
18376         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
18377         unspecs as needed.
18378         (*call_1_rex64): Disable for large models.
18379         (*call_1_rex64_large): New.
18380         (*call_value_1_rex64): Disable for large models.
18381         (*call_value_1_rex64_large): New.
18382         (set_rip_rex4): New.
18383         (set_got_offset_rex64): New.
18384         * predicates.md (constant_call_address_operand): For large model
18385         constant calls are not possible.
18386         * i386-protos.h (construct_plt_address): Declare.
18387         * i386.c (override_options): Accept large models.
18388         (ix86_expand_prologue): Expand large PIC GOT pointer load.
18389         (legitimate_constant_p): Add new UNSPECs.
18390         (legitimate_pic_operand_p): Likewise.
18391         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
18392         (legitimize_pic_address): Do easy RIP relative way for TLS only for
18393         non-large model.
18394         (output_pic_addr_const): Add PLTOFF.
18395         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
18396         (ix86_expand_move): Legitimize pic address when in PIC mode.
18397         (construct_plt_address): New function.
18398         (ix86_expand_call): Offload the address to register and use GOT
18399         pointer for large model.
18400         * invoke.texi (mcmodel=large): Update documentation.
18402 2007-03-06  Richard Henderson  <rth@redhat.com>
18404         * config/i386/i386.c (x86_use_leave, x86_push_memory,
18405         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
18406         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
18407         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
18408         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
18409         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
18410         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
18411         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
18412         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
18413         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
18414         x86_partial_reg_dependency, x86_memory_mismatch_stall,
18415         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
18416         x86_sse_partial_reg_dependency, x86_sse_split_regs,
18417         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
18418         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
18419         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
18420         x86_schedule, x86_use_bt, x86_pad_returns,
18421         x86_use_xchgb): Merge into ...
18422         (ix86_tune_features): ... here.  New array.
18423         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
18424         x86_bswap): Merge into ...
18425         (ix86_arch_features): ... here.  New array.
18426         (x86_3dnow_a): Remove.
18427         (x86_accumulate_outgoing_args): Make static.
18428         (x86_arch_always_fancy_math_387): Make static.
18429         (ix86_tune_mask, ix86_arch_mask): Move ...
18430         (override_options): ... to local variables here.  Apply the
18431         appropriate mask to each element of ix86_arch_features and
18432         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
18433         as were done in the old macros.
18434         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
18435         * config/i386/i386.h (x86_use_leave, x86_push_memory,
18436         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
18437         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
18438         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
18439         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
18440         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
18441         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
18442         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
18443         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
18444         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
18445         x86_partial_reg_dependency, x86_memory_mismatch_stall,
18446         x86_accumulate_outgoing_args, x86_prologue_using_move,
18447         x86_epilogue_using_move, x86_decompose_lea,
18448         x86_arch_always_fancy_math_387, x86_shift1,
18449         x86_sse_partial_reg_dependency, x86_sse_split_regs,
18450         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
18451         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
18452         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
18453         x86_use_incdec, x86_pad_returns, x86_bswap,
18454         x86_partial_flag_reg_stall): Remove.
18455         (enum ix86_tune_indices): New.
18456         (ix86_tune_features): New.
18457         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
18458         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
18459         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
18460         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
18461         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
18462         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
18463         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
18464         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
18465         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
18466         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
18467         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
18468         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
18469         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
18470         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
18471         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
18472         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
18473         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
18474         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
18475         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
18476         TARGET_EXT_80387_CONSTANTS): Use it.
18477         (enum ix86_arch_indices): New.
18478         (ix86_arch_features): New.
18479         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
18480         TARGET_BSWAP): Use it.
18481         (ix86_tune_mask, ix86_arch_mask): Remove.
18483 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
18485         PR bootstrap/31020
18486         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
18487         Define using $${sysroot_headers_suffix}.
18488         * configure: Regenerate.
18489         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
18490         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
18491         defined.
18492         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
18493         * gcc.c (print_sysroot_headers_suffix): New.
18494         (option_map): Include --print-sysroot-headers-suffix.
18495         (display_help): Mention -print-sysroot-headers-suffix.
18496         (process_command): Handle -print-sysroot-headers-suffix.
18497         (do_spec_1): Append multilib directory to include-fixed path if
18498         sysroot suffixes in use.
18499         (main): Handle -print-sysroot-headers-suffix.
18500         * Makefile.in (start.encap): Don't depend on xlimits.h
18501         (xlimits.h): Remove.
18502         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
18503         limits.h for each multilib in fixinc_list.
18504         (fixinc_list, s-fixinc_list): New.
18505         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
18506         generate them for each multilib in fixinc_list.
18507         (stmp-fixproto): Use include-fixed.  Run fixproto for each
18508         multilib in fixinc_list.
18509         (mostlyclean): Don't remove xlimits.h.
18510         (clean): Remove include-fixed.
18511         (real-install-headers-tar, real-install-headers-cpio,
18512         real-install-headers-cp): Don't copy include, only include-fixed.
18513         (install-mkheaders): Depend on fixinc_list.  Don't depend on
18514         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
18515         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
18516         SYSTEM_HEADER_DIR setting in mkheaders.conf.
18518 2007-03-06  Jan Hubicka  <jh@suse.cz>
18520         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
18521         NANs easilly.
18523 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18525         * configure.ac: Allow tm_file to contain build-directory files.
18526         * configure: Regenerate.
18527         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
18528         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
18529         * config/m68k/print-sysroot-suffix.sh: New file.
18531 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18533         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
18534         of pic_offset_table_rtx if reload_completed.
18535         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
18536         PIC_OFFSET_TABLE_REGNUM.
18537         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
18538         return true.
18539         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
18540         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
18542 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18544         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
18545         functions that call eh_return.
18547 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18549         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
18550         functions that need a constant pool.
18552 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18554         PR target/28181
18555         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
18556         (m68k_preferred_reload_class): Likewise.
18557         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
18558         (SECONDARY_RELOAD_CLASS): Define.
18559         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
18560         (LIMIT_RELOAD_CLASS): Delete.
18561         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
18562         registers from storing bytes.
18563         (m68k_secondary_reload_class): New function.
18564         (m68k_preferred_reload_class): Likewise.
18566 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18568         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
18569         leaf functions.
18570         (m68k_expand_prologue): Likewise.
18572 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18574         * config/m68k/m68k-protos.h (output_sibcall): Declare.
18575         (mips_expand_epilogue): Add a bool parameter.
18576         (m68k_legitimize_sibcall_address): Declare.
18577         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
18578         (m68k_expand_epilogue): Add a parameter to select between sibling
18579         and normal epilogues.  Only generate a return for the latter.
18580         (m68k_ok_for_sibcall_p): New function.
18581         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
18582         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
18583         (sibcall_value, *sibcall_value): Likewise.
18584         (*call, *call_value): Require !SIBLING_CALL_P.
18585         (epilogue): Update call to m68k_expand_epilogue.
18586         (sibcall_epilogue): New pattern.
18587         * config/m68k/predicates.md (const_call_operand): Say that this
18588         predicate applies to sibling calls too.
18589         (sibcall_operand): New predicate.
18591 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18593         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
18594         alternatives as movsi_cf.
18595         (movsf_cf_hard): Add commentary.
18597 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
18598             Richard Sandiford  <richard@codesourcery.com>
18600         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
18601         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
18602         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
18603         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
18604         as being live on exit from an interrupt function.
18605         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
18606         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
18607         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
18608         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
18609         (m68k_interrupt_function_p): Globalize.
18610         (m68k_compute_frame_layout): Remove reverse mask code.
18611         (m68k_emit_movem, m68k_set_frame_related): New functions.
18612         (m68k_output_function_prologue): Delete in favor of...
18613         (m68k_expand_prologue): ...this new function.
18614         (m68k_output_function_epilogue): Delete in favor of...
18615         (m68k_expand_epilogue): ...this new function.
18616         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
18617         functions.
18618         (print_operand): Handle %?.
18619         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
18620         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
18621         (prologue, epilogue): New patterns.
18622         (return): Turn into a define_expand.
18623         (*return): New pattern, derived from old "return" pattern.  Use rte
18624         rather than rts for interrupt functions.  Only use rtd if the pop
18625         count is nonzero.
18626         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
18627         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
18628         (link, *link, unlink, *unlink, load_got): Likewise.
18630 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18632         PR target/23482
18633         PR target/17114
18634         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
18635         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
18636         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
18637         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
18638         and m68k_matches_u_p.
18639         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
18640         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
18641         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
18642         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
18643         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
18644         (REG_STRICT_P): New macro.
18645         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
18646         PCREL_GENERAL_OPERAND_OK.
18647         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
18648         m68k_legitimate_base_reg_p.
18649         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
18650         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
18651         (PIC_CASE_VECTOR_ADDRESS): Update comment.
18652         * config/m68k/m68k.c (m68k_address): New structure.
18653         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
18654         (m68k_decompose_index, m68k_legitimate_constant_address_p)
18655         (m68k_jump_table_ref_p, m68k_decompose_address)
18656         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
18657         (m68k_matches_u_p): New functions.
18658         (print_operand_address): Rewrite to use m68k_decompose_index.
18660 2007-03-05  David Taylor  <dtaylor@emc.com>
18662         * gcc.c: Correct copyright date in --version output.
18664 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18666         * pa.md: In unamed move patterns, disparge copies between general
18667         and floating point registers using '?' modifier.  Don't include 'f'
18668         constraint for register preferences in DImode, SImode, HImode and
18669         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
18670         Remove constraints for copies between general and floating registers
18671         in soft-float DFmode pattern.
18672         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
18673         floating register.
18674         (movsf): Likewise.
18676 2007-03-05  Mike Stump  <mrs@apple.com>
18678         * c-common.c (targetcm): Add.
18679         * c-opts.c (c_common_handle_option): Handle language specific
18680         target options.
18681         * opts.c (handle_option): Verify language for target options, if
18682         any are given.
18683         * opth-gen.awk: Add CL_LANG_ALL.
18684         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
18685         (TARGETCM_INITIALIZER): Add.
18686         * target.h (struct gcc_targetcm): Add.
18687         (targetcm): Add.
18688         * targhooks.c (default_handle_c_option): Add.
18689         * targhooks.h (default_handle_c_option): Add.
18690         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
18692         * config/darwin.opt (iframework): Add.
18693         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
18694         * config/darwin-c.c (handle_c_option): Add.
18695         (TARGET_HANDLE_C_OPTION): Add.
18696         (targetcm): Add.
18697         * doc/invoke.texi (Darwin Options): Add -iframework.
18699 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18701         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
18702         conversion.
18704 2007-03-05  Ian Lance Taylor  <iant@google.com>
18706         * c.opt (fgnu89-inline): New option.
18707         * c-opts.c (c_common_post_options): Set default value for
18708         flag_gnu89_inline.
18709         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
18710         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
18711         inline functions.
18712         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
18713         (grokdeclarator, start_function): Likewise.
18714         * c-cppbuiltin.c (c_cpp_builtins): Define either
18715         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
18716         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
18717         (C Dialect Options): Document -fgnu89-inline.
18718         * doc/extend.texi (Function Attributes): Explain what the
18719         gnu_inline attribute does.
18720         * doc/cpp.texi (Common Predefined Macros): Document
18721         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
18723 2007-03-05  Ian Lance Taylor  <iant@google.com>
18725         PR tree-optimization/31034
18726         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
18727         half-range if the other side is an overflow infinity.
18729 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
18731         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
18732         (bfin*-linux-uclibc*): New configuration.
18733         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
18734         defining.
18735         * config/bfin/linux.h: New file.
18736         * config/bfin/libgcc-bfin.ver: New file.
18737         * config/bfin/t-bfin-uclinux: New file.
18738         * config/bfin/t-bfin-linux: New file.
18739         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
18740         (TARGET_OS_CPP_BUILTINS): New macro.
18742 2007-03-05  Richard Guenther  <rguenther@suse.de>
18744         * fold-const.c (fold_binary): Remove duplicate folding
18745         of comparison of non-null ADDR_EXPR against null.
18747 2007-03-05  Richard Guenther  <rguenther@suse.de>
18748             Dorit Nuzman  <dorit@il.ibm.com>
18750         PR tree-optimization/26420
18751         * tree-vectorizer.c (vectorize_loops): Bail out early if there
18752         are no loops in the function.  Only print the number of
18753         vectorized loops if it is greater than zero or we are supposed
18754         to print information about unvectorized loops.
18756 2007-03-05  Revital Eres  <eres@il.ibm.com>
18758         * gcc.dg/var-expand1.c: New test.
18759         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
18760         when an accumulator is expanded.
18762 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18764         PR other/30465
18765         * c-common.c (convert_and_check): Don't give warnings for
18766         conversion if 'expr' already overflowed.
18768 2007-03-04  Roger Sayle  <roger@eyesopen.com>
18770         PR middle-end/30744
18771         * fold-const.c (fold_comparison): Enforce type consistency when
18772         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
18774 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
18776         * tree-ssa-address.c (create_mem_ref): Do not put an expression
18777         containing a cast to the base of TARGET_MEM_REF.
18779 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
18781         * tree.c (tree_contains_struct_check_failed): Remove spurious
18782         whitespace from error message.
18784 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
18786         PR target/30406
18787         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
18788         instead of precision.
18790 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
18791             Nathan Sidwell  <nathan@codesourcery.com>
18793         * emit-rtl.c (find_auto_inc): New.
18794         (try_split): recreate REG_INC notes,
18795         Use regular for loops rather than whiles.
18797 2007-03-03  Andreas Schwab  <schwab@suse.de>
18799         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
18800         * configure: Regenerate.
18802 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18804         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
18805         flag_rounding_math, not flag_unsafe_math_optimizations.
18807         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
18808         fold_build2.
18809         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
18810         alpha_fold_vector_minmax): Likewise.
18811         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
18812         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
18814 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
18816         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
18817         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
18818         if the lhs has side-effects.
18819         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
18821 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18823         * config/i386/i386.h (TUNEMASK): Remove define.
18824         (ARCHMASK): Remove define.
18825         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
18826          Use ix86_arch_mask variable instead of ARCHMASK.
18827         * config/i386/i386.c (override_options): Ditto.
18828         (standard_80387_constant_p): Ditto.
18830 2007-03-02  Ian Lance Taylor  <iant@google.com>
18832         Used signed infinities in VRP.
18833         * tree-vrp.c (uses_overflow_infinity): New static function.
18834         (supports_overflow_infinity): New static function.
18835         (make_overflow_infinity): New static function.
18836         (negative_overflow_infinity): New static function.
18837         (positive_overflow_infinity): New static function.
18838         (is_negative_overflow_infinity): New static function.
18839         (is_positive_overflow_infinity): New static function.
18840         (is_overflow_infinity): New static function.
18841         (overflow_infinity_range_p): New static function.
18842         (compare_values_warnv): New function split out of compare_values.
18843         (compare_value): Call it.
18844         (set_value_range_to_nonnegative): Add overflow_infinity
18845         parameter.  Change caller.
18846         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
18847         Change callers.
18848         (vrp_expr_computes_nonzero): Likewise.
18849         (compare_ranges, compare_range_with_value): Likewise.
18850         (compare_name_with_value, compare_names): Likewise.
18851         (vrp_evaluate_conditional): Likewise.
18852         (set_value_range): Handle infinity
18853         (vrp_operand_equal_p, operand_less_p): Likewise.
18854         (extract_range_from_assert): Likewise.
18855         (vrp_int_const_binop): Likewise.
18856         (extract_range_from_binary_expr): Likewise.
18857         (extract_range_from_unary_expr): Likewise.
18858         (extract_range_from_comparison): Likewise.
18859         (extract_range_from_expr): Likewise.
18860         (dump_value_range): Likewise.
18861         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
18862         (test_for_singularity): Likewise.
18863         (vrp_int_const_binop): Remove inline qualifier.
18864         (adjust_range_with_scev): Add comment.
18865         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
18867 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
18869         * tree-ssa-structalias.c (could_have_pointers): Tidy.
18870         (get_constraint_for): Likewise.
18871         (do_structure_copy): Likewise.
18872         (find_func_aliases): Fix references to MODIFY_EXPR.
18873         (intra_create_variable_infos): Tidy.
18874         * tree-ssa-operands.c (add_virtual_operand): Add argument
18875         IS_CALL_SITE.
18876         When adding members of alias sets, if IS_CALL_SITE is true and
18877         the symbol is not call-clobbered, skip it.
18878         Adjust all callers.
18880 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
18882         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
18883         entry by means of emit_insn_at_entry.
18885 2007-03-02  Richard Henderson  <rth@redhat.com>
18887         * expr.h (promoted_input_arg): Remove decl.
18888         * function.c (promoted_input_arg): Merge into ...
18889         * combine.c (setup_incoming_promotions): ... only caller.
18890         Rearrange to avoid double loop.
18892 2007-03-02  Ben Elliston  <bje@au.ibm.com>
18893             Peter Bergner  <bergner@vnet.ibm.com>
18894             Janis Johnson  <janis187@us.ibm.com>
18896         * config/rs6000/dfp.md: New file.
18897         * config/rs6000/rs6000.md: Include dfp.md.
18898         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
18899         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
18900         and TDmode decimal float modes in FP registers.
18901         (num_insns_constant): Likewise.
18902         (rs6000_legitimate_offset_address_p): Likewise.
18903         (rs6000_legitimize_address): Likewise.
18904         (rs6000_legitimize_reload_address): Likewise.
18905         (rs6000_legitimate_address): Likewise.
18906         (rs6000_emit_move): Likewise.
18907         (function_arg_boundary): Likewise.
18908         (function_arg_advance): Likewise.
18909         (rs6000_darwin64_record_arg_recurse): Likewise.
18910         (function_arg): Likewise.
18911         (rs6000_gimplify_va_arg): Likewise.
18912         (rs6000_split_multireg_move): Likewise.
18913         (rs6000_output_function_epilogue): Likewise.
18914         (rs6000_output_function_epilogue): Likewise.
18915         (rs6000_register_move_cost): Likewise.
18916         (rs6000_function_value): Likewise.
18917         (rs6000_libcall_value): Likewise.
18919 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
18921         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
18923 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
18925         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
18926         Use $MULTIDIR to choose between the kernel and RTP headers,
18927         and use $WIND_BASE and $WIND_USR to locate them.
18929 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18931         * config/i386/i386.c (override_options): Put initialization of
18932         ix86_tune_mask and ix86_arch_mask to the correct place.
18934 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18935             Michael Meissner  <michael.meissner@amd.com>
18937         PR target/31019
18938         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
18939         (ARCHMASK): Define.
18940         (TARGET_CMOVE): Use ARCHMASK.
18941         (TARGET_CMPXCHG): Ditto.
18942         (TARGET_CMPXCHG8B): Ditto.
18943         (TARGET_XADD): Ditto.
18944         (TARGET_BSWAP): Ditto.
18945         * config/i386/i386.c (ix86_tune_mask): New global variable.
18946         (ix86_arch_mask): Ditto.
18947         (override_options): Initialize ix86_tune_mask and
18948         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
18949         target_flags.
18951 2007-03-02  Ben Elliston  <bje@au.ibm.com>
18953         PR 30992
18954         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
18956 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
18958         * target.h (init_dwarf_reg_sizes_extra): New target hook.
18959         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
18960         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
18961         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
18962         hook.
18963         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
18964         rs6000_init_dwarf_reg_sizes_extra): New.
18965         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
18966         SPE register high parts.
18968 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
18970         * Makefile.in: Add install-pdf target as
18971         copied from automake v1.10 rules.
18972         * configure.ac: Add install-pdf to target list.
18973         * configure: Regenerate.
18975 2007-03-01  Paul Brook  <paul@codesourcery.com>
18977         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
18978         modes to LDRD for DImode.
18979         (output_move_double): Fixup out of range ldrd/strd.
18980         (vfp_secondary_reload_class): Rename...
18981         (coproc_secondary_reload_class): ... to this.  Add wb argument.
18982         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
18983         coproc_secondary_reload_class for CLASS_IWMMXT.
18984         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
18985         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
18987 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
18989         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
18990         unroll factor by the estimated number of iterations.
18991         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
18992         than prefetch latency.
18994         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
18995         decode_caches_intel, detect_caches_intel): New functions.
18996         (host_detect_local_cpu): Use detect_caches_amd and
18997         detect_caches_intel.
18999 2007-03-01  Richard Henderson  <rth@redhat.com>
19001         * expr.c (emit_move_complex_push): Export.
19002         (emit_move_complex_parts): Split out from ...
19003         (emit_move_complex): ... here.
19004         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
19005         * config/i386/i386.md (movcdi): New.
19007 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
19009         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
19010         size of mode1 to check for tieable modes in MMX case.
19012 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
19014         * Makefile.in (rtlanal.o): Depend on tree.h.
19015         * rtl.h (offset_within_section_p, split_const): Declare.
19016         * rtlanal.c: Include tree.h.
19017         (offset_within_block_p): New function, taken from
19018         mips_offset_within_object_p.
19019         (split_const): New function, taken from mips_split_const.
19020         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
19021         Declare.
19022         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
19023         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
19024         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
19025         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
19026         (m68k_illegitimate_symbolic_constant_p): New function.
19027         * config/m68k/m68k.md (movsi): Remove misleading predicates.
19028         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
19029         symbolic constant that might be outside the symbol's section,
19030         move the symbol first and then add the offset.
19031         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
19032         Override.
19033         * config/mips/mips.c (mips_split_const): Delete.
19034         (mips_offset_within_object_p): Delete.
19035         (mips_symbolic_constant_p): Use offset_within_section_p and
19036         split_const instead of mips_offset_within_object_p and
19037         mips_split_const.
19038         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
19039         (mips_legitimize_const_move, print_operand_reloc)
19040         (mips_dangerous_for_la25_p): Use split_const instead of
19041         mips_split_const.
19043 2007-02-28  Eric Christopher  <echristo@apple.com>
19045         * Makefile.in (install-include-dir): Don't rm -rf include.
19047 2007-02-28  Richard Guenther  <rguenther@suse.de>
19049         PR middle-end/30364
19050         * fold-const.c (fold_binary): Do not associate expressions
19051         with more than one variable for integer types that do not wrap.
19053 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
19055         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
19056         Delete, and replace with...
19057         (fold_builtin_call_array): This.  Update callers to use it.
19058         * fold-const.c (fold_build_call_list): Delete, and replace with...
19059         (fold_build_call_array): This.
19060         (fold_build_call_list_initializer): Delete, and replace with...
19061         (fold_build_call_array_initializer): This.
19062         * tree.h: Update declarations to reflect above changes.
19064         * c-typeck.c (build_function_call): Store converted arguments
19065         in a stack-allocated array instead of building a list.
19066         (convert_arguments): Store arguments in the array passed in as an
19067         argument, and return the actual number of arguments.
19068         * c-format.c: (check_function_format): Pass arguments in an
19069         array instead of a list.
19070         * c-common.c (check_function_nonnull): Likewise.
19071         (check_function_sentinel): Likewise.
19072         (check_function_arguments): Likewise.
19073         * c-common.h: Update declarations to reflect above changes.
19075 2007-02-28  Jan Hubicka  <jh@suse.cz>
19077         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
19078         PRED_NEGATIVE_RETURN): Update outcomes.
19080 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
19082         * calls.c (emit_library_call_value_1): Handle partial registers
19083         correctly when building up CALL_INSN_FUNCTION_USAGE.
19085 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19087         * pa/predicates.md (move_src_operand): Allow zero for mode.
19088         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
19089         move pattern.
19091 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
19093         PR target/30970
19094         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
19095         *movv2df_internal): Enable pattern only for valid operand
19096         combinations.
19097         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
19098         tie only 128bit modes. For MMX registers, tie only 64bit modes.
19100 2007-02-27  Mike Stump  <mrs@apple.com>
19102         * config/darwin-crt3.c: Avoid compilation when compiling for a
19103         kext multilib.
19105 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
19107         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
19108         FIXED_INCLUDE_DIR.
19109         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
19110         for fixed headers and limits.h.
19111         (install-include-dir, install-headers-tar, install-headers-cpio,
19112         install-headers-cp, real-install-headers-tar,
19113         real-install-headers-cpio, real-install-headers-cp): Handle
19114         include-fixed as well as include.
19115         (install-mkheaders): Don't install files that go only in include
19116         not include-fixed.
19117         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
19118         from GCC_INCLUDE_DIR.
19119         * gcc.c (process_command): Remove special -BstageN/ handling.
19120         (do_spec_1): Add include-fixed directories.
19122 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
19124         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
19125         _smulsi3_highpart.
19126         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
19127         New functions.
19128         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
19129         patterns.
19131 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
19133         * c-common.c (get_priority): Add check for
19134         SUPPORTS_INIT_PRIORITY.
19136 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
19138         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
19140         * config/bfin/bfin.c: Include "cfglayout.h".
19141         (MAX_LSETUP_DISTANCE): New macro.
19142         (struct loop_info): New members incoming, incoming_src and
19143         incoming_dest.  Delete member predecessor.
19144         (length_for_loop): New function.
19145         (bfin_optimize_loop): Handle more different loop structures.
19146         (bfin_discover_loop): Rework detection of predecessor blocks by
19147         examining incoming edges.
19148         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
19149         bfin_reorg_loops.
19150         (bfin_reorder_loops): New function.
19151         (bfin_reorg_loops): Use these three new functions.
19153         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
19154         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
19155         (CONSTRAINT_LEN): Add entry for 'q'.
19156         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
19157         Add 'q' constraints.
19158         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
19159         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
19161         * config/bfin/bfin.md (add_with_carry): New pattern.
19162         (s_or_u, su_optab, su_modifier): New code macros/attrs.
19163         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
19164         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
19165         support unsigned multiplies too.  Removed incorrect commutativity from
19166         operand 1 constraint where appropriate.
19167         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
19168         patterns.
19169         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
19170         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
19171         New patterns.
19172         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
19173         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
19174         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
19175         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
19176         usmulhisi_hh_huh): New patterns.
19178         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
19179         lshifthi3): Fix output template to use half reg for operand 2.
19181         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
19182         instead of R2.
19184         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
19186 2007-02-27  Andreas Schwab  <schwab@suse.de>
19188         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
19190 2007-02-27  Jan Hubicka  <jh@suse.cz>
19192         * predict.c (last_basic_block_p): Remove.
19193         (tree_estimate_probability): Update return heuristic for commonized
19194         return blocks.
19196 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
19198         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
19200 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
19202         * doc/include/gcc-common.texi (versionsubtitle): New macro.
19203         * doc/cpp.texi: Standardize title page.
19204         * doc/cppinternals.texi: Likewise.
19205         * doc/gcc.texi: Standardize title page, remove version number
19206         from copyright page.
19207         * doc/gccint.texi: Likewise.
19208         * doc/install.texi: Standardize title page, add table of
19209         contents.
19211 2007-02-26  Jan Hubicka  <jh@suse.cz>
19213         * predict.def: Set outcomes according to more recent results.
19214         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
19215         Remove dead predictors.
19216         * predict.c (return_prediction): Fix pasto.
19218 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
19220         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
19221         change; avoid a memory leak when returning early.
19223 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
19225         * c-decl.c (static_ctors): Move to c-common.c.
19226         (static_dtors): Likewise.
19227         (finish_function): Use c_record_cdtor_fn.
19228         (build_cdtor): Move to c-common.c.
19229         (c_write_global_declarations): Use c_build_cdtor_fns.
19230         * c-common.h (static_ctors): Declare.
19231         (static_dtors): Likewise.
19232         (c_record_cdtor_fn): Likewise.
19233         (c_build_cdtor_fns): Likewise.
19234         * c-common.c (static_ctors): New variable.
19235         (static_dtors): Likewise.
19236         (c_record_cdtor_fn): New function.
19237         (build_cdtor): Move from c-decl.c
19238         (c_build_cdtor_fns): New function.
19240         * output.h (assemble_addr_to_section): Declare.
19241         (get_cdtor_priority_section): Likewise.
19242         * varasm.c (assemble_addr_to_section): New function.
19243         (get_cdtor_priority_section): Likewise.
19244         (default_named_section_asm_out_destructor): Use them.
19245         (destor_dtor_section_asm_out_destructor): Likewise.
19246         (default_named_section_asm_out_constructor): Likewise.
19247         (default_ctor_section_asm_out_constructor): Likewise.
19248         * config.gcc (*-*-vxworks*): Include vxworks.o.
19249         * config/t-vxworks (vxworks.o): New target.
19250         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
19251         (TARGET_ASM_CONSTRUCTOR): Define.
19252         (TARGET_ASM_DESTRUCTOR): Likewise.
19253         (vxworks_asm_out_constructor): Declare.
19254         (vxworks_asm_out_destructor): Likewise.
19256         * c-common.c (get_priority): Check that we have not just an
19257         INTEGER_CST, but an integer constant with integeral type.
19259 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
19261         PR tree-optimization/30938
19262         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
19263         use &dt[nargs-1] instead of &dt[nargs] in the call to
19264         vect_is_simple_use().
19266 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
19268         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
19269         from register elimination as PRE_MODIFY / POST_MODIFY increments.
19270         Do not attempt to handle MEM inside auto-inc expressions.
19271         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
19272         of a register modified by an auto-inc expression.  However, do handle
19273         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
19274         (elimination_effects): Prohibit elimination of a register modified
19275         by an auto-inc expression.  Disable register elimination rules whose
19276         target register is modified by an auto-inc expression with variable
19277         increment.
19279 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
19281         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
19282         off-by-one error.
19283         (array_at_struct_end_p): New function.
19284         (idx_infer_loop_bounds): Use it.
19285         (estimate_numbers_of_iterations_loop): Export.
19286         * predict.c (predict_loops): Use estimated_loop_iterations_int.
19287         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
19288         (tree_estimate_probability): Call record_loop_exits.
19289         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
19290         (estimated_loop_iterations, estimated_loop_iterations_int,
19291         estimated_loop_iterations_tree): New functions.
19292         (analyze_siv_subscript_cst_affine,
19293         compute_overlap_steps_for_affine_1_2,
19294         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
19295         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
19296         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
19297         (PRED_LOOP_ITERATIONS_GUESSED): New.
19298         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
19299         * cfgloop.h (estimate_numbers_of_iterations_loop,
19300         estimated_loop_iterations_int): Declare.
19302 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
19304         * doc/extend.texi: Document optional priority argument to
19305         constructors and destructors.
19306         * tree.c (init_priority_for_decl): Adjust GTY markers.
19307         (init_ttree): Use priority-info hash functions for
19308         init_priority_for_decl.
19309         (tree_map_eq): Rename to ...
19310         (tree_map_base_eq): ... this.
19311         (tree_map_marked_p): Rename to ...
19312         (tree_map_base_marked_p): ... this.
19313         (tree_map_base_hash): New function.
19314         (decl_init_priority_lookup): Rework.
19315         (decl_fini_priority_lookup): New function.
19316         (decl_priority_info): New function.
19317         (decl_init_priority_insert): Use it.
19318         (decl_fini_priority_insert): Likewise.
19319         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
19320         hierarchy.
19321         (decl_restrict_base_insert): Likewise.
19322         (decl_debug_expr_insert): Likewise.
19323         (decl_value_expr_lookup): Likewise.
19324         (decl_value_expr_insert): Likewise.
19325         * tree.h (priority_type): New type.
19326         (decl_init_priority_lookup): Use priority_type.
19327         (decl_fini_priority_lookup): New function.
19328         (decl_init_priority_insert): Use priority_type.
19329         (decl_fini_priority_insert): New function.
19330         (DECL_HAS_INIT_PRIORITY): Tweak comments.
19331         (DECL_INIT_PRIORITY): Likewise.
19332         (SET_DECL_INIT_PRIORITY): Add comment.
19333         (DECL_FINI_PRIORITY): New macro.
19334         (SET_DECL_FINI_PRIORITY): Likewise.
19335         (DEFAULT_INIT_PRIORITY): Document.
19336         (MAX_INIT_PRIORITY): Likewise.
19337         (MAX_RESERVED_INIT_PRIORITY): Likewise.
19338         (tree_map_base): New type.
19339         (tree_map_base_eq): New function.
19340         (tree_map_base_hash): Likewise.
19341         (tree_map_base_marked_p): Likewise.
19342         (tree_map): Inherit from tree_map_base.
19343         (tree_map_eq): Make it a macro.
19344         (tree_map_marked_p): Likewise.
19345         (tree_int_map): Inherit from tree_map_base.
19346         (tree_int_map_eq): Make it a macro.
19347         (tree_int_map_hash): Likewise.
19348         (tree_int_map_marked_p): Likewise.
19349         (tree_priority_map): New type.
19350         (tree_priority_map_eq): New macro.
19351         (tree_priority_map_hash): Likewise.
19352         (tree_priority_map_marked_p): Likewise.
19353         * varasm.c (emults_decl): Adjust for refactoring of tree_map
19354         hierarchy.
19355         (emutls_common_1): Likewise.
19356         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
19357         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
19358         of tree_map hierarchy.
19359         * tree-cfg.c (move_stmt_r): Likewise.
19360         (new_label_mapper): Likewise.
19361         * c-tree.h (c_expand_body): Move to ...
19362         * c-common.h (c_expand_body): ... here.
19363         * c-decl.c (c_expand_body): Move to ...
19364         * c-common.c (c_expand_body): ... here.
19365         (c_common_attribute_table): Allow 1 argument for the constructor
19366         and destructor attributes.
19367         (get_priority): New function.
19368         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
19369         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
19371 2007-02-24  Jan Hubicka  <jh@suse.cz>
19373         PR middle-end/30509
19374         * tree-inline.c (copy_bb): Produce exact copy of EH info when
19375         copying for inlining.
19377 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
19378             Jan Hubicka  <jh@suse.cz>
19380         PR target/30778
19381         * i386.c (counter_mode): New function.
19382         (expand_set_or_movmem_via_loop): Use it.
19383         (expand_movmem_epilogue): Likewise; fix pasto.
19384         (ix86_expand_movmem): Do emit guard even for constant counts.
19385         (ix86_expand_setmem): Likewise.
19387 2007-02-25  Nick Clifton  <nickc@redhat.com>
19389         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
19390         (JUMP_TABLES_IN_TEXT_SECTION): Define.
19392 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
19394         PR target/30770
19395         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
19396         count argument with 0x10, not with 0x16.
19397         (expand_setmem_epilogue): Ditto.
19399 2007-02-24  Mike Stump  <mrs@apple.com>
19401         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
19402         symbols.
19404 2007-02-24  Richard Guenther  <rguenther@suse.de>
19406         PR middle-end/30951
19407         * fold-const.c (fold_binary): Fold x +- CST op x for
19408         EQ_EXPR and NE_EXPR.
19410 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19412         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
19414 2007-02-24  Jan Hubicka  <jh@suse.cz>
19416         * cgraphunit.c (decide_is_function_needed): Honor
19417         -fkeep-inline-functions.
19419 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19421         * builtins.c (fold_builtin_modf): New.
19422         (fold_builtin_2): Use it.
19424 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
19426         * loop-iv.c (implies_p): Detect additional cases where A implies B.
19427         (determine_max_iter): Take additional LOOP arg; all callers changed.
19428         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
19429         one using simplifications.
19430         (simplify_using_initial_values): Return if the expression becomes
19431         invalid due to altered regs.
19433 2007-02-23  DJ Delorie  <dj@redhat.com>
19435         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
19437 2007-02-23  Mike Stump  <mrs@apple.com>
19439         * tlink.c (scan_linker_output): Parse linker messages from
19440         darwin9's linker better.
19442 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
19444         PR debug/29614
19445         * varpool.c (varpool_assemble_pending_decls):  Set
19446         varpool_last_needed_node to null.
19448 2007-02-23  DJ Delorie  <dj@redhat.com>
19450         * config/i386/i386.c (ix86_data_alignment): Don't specify an
19451         alignment bigger than the object file can handle.
19453 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
19455         PR target/30825
19456         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
19457         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
19458         (*movsf_1): Penalize MMX moves.
19460 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
19462         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
19463         2^32-1 or more times unless flag_unsafe_loop_optimizations.
19465         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
19467 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19469         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
19470         (fold_builtin_1): Use them.
19471         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
19472         BUILT_IN_SIGNIFICAND.
19474 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
19476         * config/i386/i386.c (bdesc_1arg): Initialize
19477         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
19478         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
19479         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
19480         and IX86_BUILTIN_MOVSLDUP.
19482 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
19484         PR rtl-optimization/30841
19485         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
19487 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19489         * builtins.c (fold_builtin_frexp): New.
19490         (fold_builtin_2): Use it.
19492 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
19494         * doc/invoke.texi (Spec Files): Document getenv spec function.
19496         * gcc.c (getenv_spec_function): New function.
19497         (static_spec_functions): Add it.
19498         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
19499         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
19500         header files.
19502 2007-02-22  Michael Matz  <matz@suse.de
19504         PR c++/29433
19505         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
19506         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
19508 2007-02-22  Ian Lance Taylor  <iant@google.com>
19510         PR debug/30898
19511         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
19512         (mem_loc_descriptor): Call it.
19514 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
19515             Ira Rosen  <irar@il.ibm.com>
19517         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
19519 2007-02-22  Ira Rosen  <irar@il.ibm.com>
19521         PR tree-optimization/30843
19522         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
19523         stores only after all the group is vectorized.
19525 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
19527         PR tree-optimization/30858
19528         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
19529         in the reduction cycle have a single use in the loop.
19530         * tree-vectorizer.h (relevant): Add documentation.
19532 2007-02-20  Mike Stump  <mrs@apple.com>
19534         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
19535         * configure: Regenerate.
19537 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
19539         Change the defaults of some parameters and options.
19540         * config/spu/spu-protos.h (spu_optimization_options): Declare.
19541         * config/spu/spu.c (spu_optimization_options): Add.
19542         (spu_override_options): Change params in spu_optimization_options.
19543         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
19545         Register 127 is only 16 byte aligned when used as a frame pointer.
19546         * config/spu/spu-protos.h (spu_init_expanders): Declare.
19547         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
19548         HARD_FRAME_POINTER_REGNUM.
19549         (spu_legitimate_address):  Use regno_aligned_for_reload.
19550         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
19551         aligned when frame_pointer_needed is true.
19552         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
19553         to 8 bits.
19554         * config/spu/spu.h (INIT_EXPANDERS): Define.
19556         Make sure shift and rotate instructions have valid immediate operands.
19557         * config/spu/predicates.md (spu_shift_operand): Remove.
19558         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
19559         * config/spu/constraints.md (W, O): Extend range.
19560         * config/spu/spu.md (umask, nmask): Define.
19561         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
19562         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
19563         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
19564         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
19565         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
19566         (lshr<mode>3_reg):  Fix rtl description.
19568         Make sure mulhisi immediate operands are valid.
19569         * config/spu/predicates.md (imm_K_operand): Add.
19570         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
19572         Generate constants using fsmbi and andi.
19573         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
19574         (print_operand, spu_split_immediate, classify_immediate,
19575         fsmbi_const_p): Handle IC_FSMBI2.
19577         Correctly handle a CONST_VECTOR containing symbols.
19578         * config/spu/spu.c (print_operand): Handle HIGH correctly.
19579         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
19580         (immediate_load_p): Allow symbols that use 2 instructions to create.
19581         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
19582         with symbols when flag_pic is set.
19583         (const_vector_immediate_p): New.
19584         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
19585         accept a CONST_VECTOR with symbols.
19586         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
19587         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
19588         correctly.
19589         * config/spu/spu.md (high, low): Delete.
19590         (low_<mode>): Define.
19592         Remove INTRmode and INTR_REGNUM, which didn't work.
19593         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
19594         of INTR_REGNUM.
19595         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
19596         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
19597         peephole2 pattern): Don't use INTR or 131.
19598         (movintrcc): Delete.
19599         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
19600         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
19601         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
19602         (UNSPEC_SET_INTR): Add.
19603         * config/spu/spu-modes.def (INTR): Remove.
19605         More accurate warnings about run-time relocations.
19606         * config/spu/spu.c (reloc_diagnostic): Test in_section.
19608         Correctly warn about immediate arguments to specific intrinsics.
19609         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
19610         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
19611         the instruction predicate.
19613         Fix tree check errors with latest update.
19614         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
19615         CALL_EXPR_ARG.
19616         (spu_expand_builtin): Use CALL_EXPR_FN.
19618         Add missing specific intrinsics.
19619         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
19620         si_bislede.
19621         * config/spu/spu_internals.h: Ditto.
19623         Fix incorrect operand modifiers.
19624         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
19625         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
19627         Optimize one case of zero_extend of a vec_select.
19628         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
19630         Accept any immediate for hbr.
19631         * config/spu/spu.md (hbr):  Change s constraints to i.
19633 2007-02-21  Paul Brook  <paul@codesourcery.com>
19635         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
19636         condexec_count when skipping USE and CLOBBER.
19638 2007-02-21  Nick Clifton  <nickc@redhat.com>
19640         * common.opt (Warray-bounds): Add Warning attribute.
19641         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
19642         Likewise.
19643         (fsized-zeroes): Add Optimization attribute.
19644         (fsplit-wide-types, ftree-scev-cprop): Likewise.
19645         * c.opt (Wc++0x-compat): Add Warning attribute.
19647 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
19649         PR middle-end/30761
19650         * reload1.c (eliminate_regs_in_insn): In the single_set special
19651         case, attempt to re-recognize the insn before falling back to
19652         having reload fix it up.
19654 2007-02-20  Eric Christopher  <echristo@gmail.com>
19656         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
19657         Rewrite accordingly.
19658         (frv_read_iacc_argument): Ditto.
19659         (frv_expand_set_builtin): Take a call instead of arglist, update for
19660         above changes.
19661         (frv_expand_unop_builtin): Ditto.
19662         (frv_expand_binop_builtin): Ditto.
19663         (frv_expand_cut_builtin): Ditto.
19664         (frv_expand_binopimm_builtin): Ditto.
19665         (frv_expand_voidbinop_builtin): Ditto.
19666         (frv_expand_int_void2arg): Ditto.
19667         (frv_expand_prefetches): Ditto.
19668         (frv_expand_voidtriop_builtin): Ditto.
19669         (frv_expand_voidaccop_builtin): Ditto.
19670         (frv_expand_load_builtin): Ditto.
19671         (frv_expand_store_builtin): Ditto.
19672         (frv_expand_mdpackh_builtin): Ditto.
19673         (frv_expand_mclracc_builtin): Ditto.
19674         (frv_expand_mrdacc_builtin): Ditto.
19675         (frv_expand_mwtacc_builtin): Ditto.
19676         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
19677         calls for above.
19679 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
19681         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
19682         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
19683         cmpb instruction.
19684         (HAVE_GAS_DFP): Check for assembler support of decimal floating
19685         point instructions.
19686         * configure: Regenerate.
19687         * config.in: Regenerate.
19688         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
19689         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
19690         masks to power6 and power6x and to POWERPC_MASKS.
19691         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
19692         _ARCH_PWR6.
19693         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
19694         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
19695         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
19696         Access PROTOTYPE as variable, not mask.
19698 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
19700         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
19701         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
19702         * combine.c (adjust_for_new_dest): Use it.
19703         * postreload.c (reload_combine): Likewise.
19705 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
19707         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
19708         notes on an insn with multiple sets, even if single_set returns
19709         non-NULL for that insn.
19711 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19713         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
19714         scalbn and scalbln.
19716 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
19718         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
19719         if user didn't pass it.
19720         * config/i386/darwin.h (CC1_SPEC): Likewise.
19721         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
19722         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
19723         -mmacosx-version-min.
19725 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19726             Uros Bizjak  <ubizjak@gmail.com>
19728         * optabs.h (enum optab_index): Add new OTI_scalb.
19729         (scalb_optab): Define corresponding macro.
19730         * optabs.c (init_optabs): Initialize scalb_optab.
19731         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
19732         patterns.
19733         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
19734         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
19735         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
19736         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
19737         flag_unsafe_math_optimizations is set.
19739         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
19740         to implement scalbf, scalb and scalbl built-ins as inline x87
19741         intrinsics.
19743 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19744             DJ Delorie <dj@redhat.com>
19746         PR other/30824
19747         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
19748         (diagnostic_report_diagnostic): ... here, and turn them into real
19749         errors. If warnings are inhibited, no need to do anything.
19751 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
19753         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
19754         better code generation.
19756 2007-02-20  Ben Elliston  <bje@au.ibm.com>
19758         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
19760 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
19762         * config/alpha/alpha.c, config/alpha/alpha.md,
19763         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
19764         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
19765         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
19766         config/arm/lib1funcs.asm: Follow spelling conventions.
19768         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
19769         config/fr30/fr30.md, config/i386/i386.h,
19770         config/iq2000/iq2000.h, config/iq2000/predicates.md,
19771         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
19772         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
19773         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
19774         config/rs6000/altivec.md, config/rs6000/rs6000.c,
19775         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
19776         config/sparc/sparc.c, config/sparc/sparc.h,
19777         config/sparc/sparc.md, config/spu/constraints.md,
19778         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
19779         conventions.
19781 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
19783         PR target/29943
19784         * varasm.c (use_blocks_for_decl_p): Return false for decls with
19785         alias attribute.
19787 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
19789         * doc/invoke.texi (-ftree-lrs): Remove.
19791 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
19793         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
19794         NULL.
19796 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
19798         * config/ia64/ia64.c (ia64_expand_builtin): Use the
19799         new CALL_EXPR_FN macro for retrieving the function
19800         declaration of the input expression.
19802 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19804         * c.opt (Waddress): New.
19805         * common.opt (Walways-true): Delete.
19806         (Wstring-literal-comparison): Delete.
19807         * doc/invoke.texi (Warning Options): Delete -Walways-true and
19808         -Wstring-literal-comparison. Add -Waddress.
19809         (Waddress): New.
19810         (Walways-true): Delete.
19811         (Wstring-literal-comparison): Delete.
19812         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
19813         consistently instead of -Walways-true in example.
19814         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
19815         * c-typeck.c (parser_build_binary_op): Replace
19816         -Wstring-literal-comparison and -Walways-true with -Waddress.
19817         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
19818         with -Waddress.
19820 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
19822         * tree-cfg.c (dump_function_to_file): Be prepared for functions
19823         without DECL_STRUCT_FUNCTION initialized.
19825 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
19827         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
19828         due to calls to functions taking pointers as parameters.
19830 2007-02-19  Richard Henderson  <rth@redhat.com>
19832         PR debug/29558
19833         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
19834         in memory.
19836 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
19838         * config/s390/s390.c (s390_call_saved_register_used,
19839         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
19840         accessed to the new scheme.
19842 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19844         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
19845         (cris_print_index, cris_print_operand, cris_print_operand_address)
19846         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
19847         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
19848         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
19849         GET_CODE () == xxx.
19850         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
19851         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
19852         GO_IF_LEGITIMATE_ADDRESS): Ditto.
19853         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
19854         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
19855         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
19856         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
19857         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
19858         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
19859         (uminsi3, call, call_value): Ditto.
19860         (define_split: indir_to_reg_split, unnamed): Ditto.
19862 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
19864         PR tree-optimization/30975
19865         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
19866         wrong assert.
19868 2007-02-18  Eric Christopher  <echristo@gmail.com>
19870         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
19871         Remove use of arglist.
19872         (mips_expand_builtin): Remove use of arglist, pass in expr.
19873         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
19874         (mips_expand_builtin_movtf): Ditto.
19875         (mips_expand_builtin_compare): Ditto.
19877 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
19879         * tree-sra.c (sra_build_assignment): Replace assertion
19880         checking with a comment explaining why it can't be done.
19882 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
19884         PR middle-end/30833
19885         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
19886         during CALL_EXPR representation conversion.
19887         * tree-ssa-propagate.c (set_rhs): Likewise.
19889 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
19891         * tree-sra.c (sra_build_assignment): Disable assertion checking
19892         for now.
19894 2007-02-18  Roger Sayle  <roger@eyesopen.com>
19896         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
19897         instead of calling build2 with a GIMPLE_MODIFY_STMT.
19898         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
19899         Likewise.
19900         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
19901         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
19902         gimplify_init_ctor_eval_range, gimple_push_cleanup,
19903         gimplify_omp_for, gimplify_omp_atomic_pipeline,
19904         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
19905         force_gimple_operand): Likewise.
19906         * ipa-cp.c (constant_val_insert): Likewise.
19907         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
19908         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
19909         perfect_nestify): Likewise.
19910         * langhooks.c (lhd_omp_assignment): Likewise.
19911         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
19912         lower_copyprivate_clauses, lower_send_clauses,
19913         lower_send_shared_vars, expand_parallel_call,
19914         expand_omp_for_generic, expand_omp_for_static_nochunk,
19915         expand_omp_for_static_chunk, expand_omp_sections,
19916         lower_omp_single_copy, lower_omp_for_lastprivate,
19917         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
19918         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
19919         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
19920         Likewise.
19922 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
19924         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
19925         config/sh/sh.md: Follow spelling conventions.
19927         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
19928         config/frv/predicates.md: Follow spelling conventions.
19930         * config/m68k/linux-unwind.h: Fix a comment typo.
19931         * target.h: Follow spelling conventions.
19933 2007-02-18  Roger Sayle  <roger@eyesopen.com>
19935         PR rtl-optimization/28173
19936         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
19937         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
19938         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
19939         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
19940         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
19942 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19944         * builtins.c (fold_builtin_load_exponent): New.
19945         (fold_builtin_2): Use it.
19947 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
19949         PR rtl-optimization/30773
19950         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
19951         if we fail to attach a REG_EQUIV note.
19953 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
19954             Roger Sayle  <roger@eyesopen.com>
19956         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
19958 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
19960         * calls.c (initialize_argument_information): Pass original EXP
19961         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
19962         code to split complex arguments here, as part of initializing the
19963         ARGS array.
19964         (expand_call): Remove code that builds a list of arguments and
19965         inserts implicit arguments into it.  Instead, just count how many
19966         implicit arguments there will be so we can determine the size of
19967         the ARGS array, and let initialize_argument_information do the work.
19968         (split_complex_values): Delete unused function.
19970 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
19972         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
19974 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
19976         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
19977         for arg pointer based indexed addressing.
19979 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
19981         * config/ia64/ia64.h, config/ia64/ia64.md,
19982         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
19983         spelling conventions.
19985 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19987         * config/m68k/m68k.c (split_di): New.
19988         * config/m68k/m68k-protos.h: Declare split_di.
19989         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
19990           Improve predicate handling and split constant shifts.
19992 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19994         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
19995         parameter for register bitfield operations, general predicates
19996         cleanup
19998 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
20000         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
20001         * config/m68k/linux-unwind.h: New file.
20003 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
20005         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
20006         config/i386/athlon.md, config/ia64/ia64.md,
20007         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
20008         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
20009         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
20010         tree-ssa-loop-niter.c, tree-vect-analyze.c,
20011         tree-vect-transform.c: Fix comment typos.
20013 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
20015         * sched-deps.c (find_insn_list): Remove.
20016         * sched-int.h: Remove the prototype for find_insn_list.
20018 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
20020         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
20021         to linker.
20022         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
20023         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
20024         darwin_rs6000_override_options.
20025         (C_COMMON_OVERRIDE_OPTIONS): Expect
20026         darwin_macosx_version_min to be non-NULL always.
20027         (TARGET_C99_FUNCTIONS): Likewise.
20028         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
20029         (DARWIN_MINVERSION_SPEC): New.
20030         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
20031         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
20032         to cc1*.
20033         (DARWIN_MINVERSION_SPEC): New.
20034         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
20035         value.
20036         * config/darwin-c.c (darwin_cpp_builtins): Expect
20037         darwin_macosx_version_min to be non-NULL always.
20039         * config/rs6000/rs6000.c: Clean up trailing whitespace.
20041 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
20043         * config/i386/i386.h (x86_use_xchgb): New.
20044         (TARGET_USE_XCHGB): New macro.
20045         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
20046         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
20047         Split after reload into bswaphi for shifts of 8.
20048         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
20049         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
20050         or when optimizing for size.
20052 2007-02-16  Richard Guenther  <rguenther@suse.de>
20053             Christian Bruel  <christian.bruel@st.com>
20055         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
20056         DECLs but prefer SSA_NAMEs over DECLs.
20058 2007-02-16  Richard Guenther  <rguenther@suse.de>
20060         * tree-flow-inline.h (single_imm_use_p): Remove.
20061         (zero_imm_uses_p): Likewise.
20062         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
20063         instead of single_imm_use_p.
20064         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
20065         zero_imm_uses_p.
20067 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20069         PR other/27843
20070         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
20071         nested double- and backquotes.
20073 2007-02-15  Roger Sayle  <roger@eyesopen.com>
20075         PR middle-end/30391
20076         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
20077         should be unreachable.
20078         (build2_stat): Allow construction of MODIFY_EXPR at any time.
20079         For the time being redirect GIMPLE_MODIFY_STMT to the new
20080         (renamed) build_gimple_modify_stmt_stat.
20081         (build2_gimple_stat): Rename to...
20082         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
20083         Always build a GIMPLE_MODIFY_STMT node.
20084         * tree.h (build2_gimple, build2_gimple_stat): Delete.
20085         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
20086         declarations.
20088         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
20089         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
20090         * tree-complex.c (set_component_ssa_name, expand_complex_move,
20091         expand_complex_div_wide): Likewise.
20092         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
20093         * tree-ssa-loop-im.c (schedule_sm): Likewise.
20094         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
20095         * tree-ssa-loop-manip.c (create_iv): Likewise.
20096         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
20097         abs_replacement): Likewise.
20098         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
20099         realify_fake_stores): Likewise.
20101         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
20102         node rather than a GIMPLE_MODIFY_STMT node.
20103         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
20104         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
20105         Likewise.
20106         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
20107         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
20108         GIMPLE_MODIFY_STMT.
20110 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20112         PR middle-end/30433
20113         * fold-const.c (fold_comparison): Add back the
20114         folding of constant complex comparisions.
20116 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20118         PR middle-end/30729
20119         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
20120         effects unknown to this function, return early.
20122 2007-02-15  Ian Lance Taylor  <iant@google.com>
20124         * lower-subreg.c (move_eh_region_note): New static function.
20125         (resolve_simple_move): Call it.
20126         (decompose_multiword_subregs): Track blocks for which we resolve a
20127         simple move which is also a control flow insn.  Pass them to
20128         find_many_sub_basic_blocks.
20129         (pass_lower_subreg): Add TODO_verify_flow.
20130         (pass_lower_subreg2): Likewise.
20132 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20133             Brooks Moses  <brooks.moses@codesourcery.com>
20134             Lee Millward  <lee.millward@codesourcery.com>
20136         * tree.h (enum tree_code_class): Add tcc_vl_exp.
20137         (VL_EXP_CLASS_P): New.
20138         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
20139         TREE_CODE_LENGTH.
20140         (TREE_OPERAND_CHECK_CODE): Likewise.
20141         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
20142         (TREE_RTL_OPERAND_CHECK): Likewise.
20143         (tree_operand_check_failed): Make second parameter the whole tree
20144         instead of its code.  Fixed callers.
20145         (VL_EXP_CHECK): New.
20146         (TREE_OPERAND_LENGTH): New.
20147         (VL_EXP_OPERAND_LENGTH): New.
20148         (CALL_EXPR_FN): New.
20149         (CALL_EXPR_STATIC_CHAIN): New.
20150         (CALL_EXPR_ARGS): New.
20151         (CALL_EXPR_ARG): New.
20152         (call_expr_nargs): New.
20153         (CALL_EXPR_ARGP): New.
20154         (build_nt_call_list): Declare.
20155         (build_vl_exp_stat): Declare.
20156         (build_vl_exp): New.
20157         (build_call_list): Declare.
20158         (build_call_nary): Declare.
20159         (build_call_valist): Declare.
20160         (build_call_array): Declare.
20161         (call_expr_arg): Declare.
20162         (call_expr_argp): Declare.
20163         (call_expr_arglist): Declare.
20164         (fold_build_call_list): Declare.
20165         (fold_build_call_list_initializer): Declare.
20166         (fold_call_expr): Declare to replace fold_builtin.
20167         (fold_builtin_fputs): Update to agree with modified definition.
20168         (fold_builtin_strcpy): Likewise.
20169         (fold_builtin_strncpy): Likewise.
20170         (fold_builtin_memory_chk): Likewise.
20171         (fold_builtin_stxcpy_chk): Likewise.
20172         (fold_builtin_strncpy_chk): Likewise.
20173         (fold_builtin_next_arg): Likewise.
20174         (fold_build_call_expr): Declare.
20175         (fold_builtin_call_list): Declare.
20176         (fold_builtin_call_valist): Declare.
20177         (build_call_expr): Declare.
20178         (validate_arglist): Update to agree with modified definition.
20179         (tree_operand_length): New.
20180         (call_expr_arg_iterator): New.
20181         (init_call_expr_arg_iterator): New.
20182         (next_call_expr_arg): New.
20183         (first_call_expr_arg): New.
20184         (more_call_expr_args_p): New.
20185         (FOR_EACH_CALL_EXPR_ARG): New.
20187         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
20188         and tcc_gimple_stmt.
20189         (tree_code_size): Update documentation.  Use sizeof (tree) rather
20190         than sizeof (char *).
20191         (tree_size): Likewise.  Add case for tcc_vl_exp.
20192         (tree_node_structure): Add case for tcc_vl_exp.
20193         (contains_placeholder_p): Likewise.
20194         (substitute_in_expr): Likewise.
20195         (substitute_placeholder_in_expr): Likewise.
20196         (stabilize_reference_1): Likewise.
20197         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
20198         to diagnose breakage of this interface for constructing CALL_EXPRs.
20199         (build_nt): Add similar assertion here.
20200         (build_nt_call_list): New.
20201         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
20202         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
20203         TREE_CODE_LENGTH.
20204         (get_callee_fndecl): Use new CALL_EXPR accessors.
20205         (tree_operand_check_failed): Change parameters to pass entire node
20206         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
20207         (process_call_operands): New.
20208         (build_vl_exp_stat): New.
20209         (build_call_list): New.
20210         (build_call_nary): New.
20211         (build_call_valist): New.
20212         (build_call_array): New.
20213         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20214         (call_expr_arglist): New.
20216         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
20217         tcc_vl_exp instead of a fixed-size tcc_expression.
20219         * doc/c-tree.texi (CALL_EXPR): Document new representation and
20220         accessors for CALL_EXPRs.
20221         (AGGR_INIT_EXPR): Likewise.
20223 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20224             Brooks Moses  <brooks.moses@codesourcery.com>
20225             Lee Millward  <lee.millward@codesourcery.com>
20227         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
20228         (expand_builtin_nonlocal_goto): Change parameter to be entire
20229         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
20230         (expand_builtin_prefetch): Likewise.
20231         (expand_builtin_classify_type): Likewise.
20232         (mathfn_built_in): Return NULL_TREE instead of 0.
20233         (expand_errno_check): Use new CALL_EXPR accessors.
20234         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
20235         Return NULL_RTX instead of 0.
20236         (expand_builtin_mathfn_2): Likewise.
20237         (expand_builtin_mathfn_3): Likewise.
20238         (expand_builtin_interclass_mathfn): Likewise.
20239         (expand_builtin_sincos): Likewise.
20240         (expand_builtin_cexpi): Likewise.
20241         (expand_builtin_int_roundingfn): Likewise.
20242         (expand_builtin_int_roundingfn_2): Likewise.
20243         (expand_builtin_pow): Likewise.
20244         (expand_builtin_powi): Likewise.
20245         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
20246         of arglist, fixing callers appropriately.  Use new CALL_EXPR
20247         accessors and constructors.  Return NULL_RTX instead of 0.
20248         (expand_builtin_strstr): Likewise.
20249         (expand_builtin_strchr): Likewise.
20250         (expand_builtin_strrchr): Likewise.
20251         (expand_builtin_strpbrk): Likewise.
20252         (expand_builtin_memcpy): Likewise.
20253         (expand_builtin_mempcpy): Likewise.
20254         (expand_builtin_mempcpy_args): New.
20255         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
20256         (expand_builtin_memmove_args): New.
20257         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
20258         (expand_movstr): Likewise.
20259         (expand_builtin_strcpy): Likewise.
20260         (expand_builtin_strcpy_args): New.
20261         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
20262         (expand_builtin_strncpy): Likewise.
20263         (expand_builtin_memset): Likewise.
20264         (expand_builtin_memset_args): New.
20265         (expand_builtin_bzero): Similarly to expand_builtin_memset.
20266         (expand_builtin_memcmp): Likewise.
20267         (expand_builtin_strcmp): Likewise.
20268         (expand_builtin_strncmp): Likewise.
20269         (expand_builtin_strcat): Likewise.
20270         (expand_builtin_strncat): Likewise.
20271         (expand_builtin_strspn): Likewise.
20272         (expand_builtin_strcspn): Likewise.
20273         (expand_builtin_args_info): Likewise.
20274         (expand_builtin_va_start): Likewise.
20275         (gimplify_va_arg_expr): Likewise.
20276         (expand_builtin_va_end): Likewise.
20277         (expand_builtin_va_copy): Likewise.
20278         (expand_builtin_frame_address): Likewise.
20279         (expand_builtin_alloca): Likewise.
20280         (expand_builtin_bswap): Likewise.
20281         (expand_builtin_unop): Likewise.
20282         (expand_builtin_fputs): Likewise.
20283         (expand_builtin_expect): Likewise.
20284         (expand_builtin_fabs): Likewise.
20285         (expand_builtin_copysign): Likewise.
20286         (expand_builtin_printf): Likewise.
20287         (expand_builtin_fprintf): Likewise.
20288         (expand_builtin_sprintf): Likewise.
20289         (expand_builtin_init_trampoline): Likewise.
20290         (expand_builtin_signbit): Likewise.
20291         (expand_builtin_fork_or_exec): Likewise.
20292         (expand_builtin_sync_operation): Likewise.
20293         (expand_builtin_compare_and_swap): Likewise.
20294         (expand_builtin_lock_test_and_set): Likewise.
20295         (expand_builtin_lock_release): Likewise.
20296         (expand_builtin): Likewise.
20297         (builtin_mathfn_code): Likewise.
20299         (fold_builtin_constant_p): Pass call arguments individually instead
20300         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
20301         accessors and constructors.  Return NULL_TREE instead of 0.
20302         (fold_builtin_expect): Likewise.
20303         (fold_builtin_classify_type): Likewise.
20304         (fold_builtin_strlen): Likewise.
20305         (fold_builtin_nan): Likewise.
20306         (integer_valued_real_p): Likewise.
20307         (fold_trunc_transparent_mathfn): Likewise.
20308         (fold_fixed_mathfn): Likewise.
20309         (fold_builtin_cabs): Likewise.
20310         (fold_builtin_sqrt): Likewise.
20311         (fold_builtin_cbrt): Likewise.
20312         (fold_builtin_cos): Likewise.
20313         (fold_builtin_cosh): Likewise.
20314         (fold_builtin_tan): Likewise.
20315         (fold_builtin_sincos): Likewise.
20316         (fold_builtin_cexp): Likewise.
20317         (fold_builtin_trunc): Likewise.
20318         (fold_builtin_floor): Likewise.
20319         (fold_builtin_ceil): Likewise.
20320         (fold_builtin_round): Likewise.
20321         (fold_builtin_int_roundingfn): Likewise.
20322         (fold_builtin_bitop): Likewise.
20323         (fold_builtin_bswap): Likewise.
20324         (fold_builtin_logarithm): Likewise.
20325         (fold_builtin_hypot): Likewise.
20326         (fold_builtin_pow): Likewise.
20327         (fold_builtin_powi): Likewise.
20328         (fold_builtin_exponent): Likewise.
20329         (fold_builtin_memset): Likewise.
20330         (fold_builtin_bzero): Likewise.
20331         (fold_builtin_memory_op): Likewise.
20332         (fold_builtin_bcopy): Deleted; call site changed to invoke
20333         fold_builtin_memory_op directly.
20334         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
20335         (fold_builtin_strncpy): Likewise.
20336         (fold_builtin_memcmp): Likewise.
20337         (fold_builtin_strcmp): Likewise.
20338         (fold_builtin_strncmp): Likewise.
20339         (fold_builtin_signbit): Likewise.
20340         (fold_builtin_copysign): Likewise.
20341         (fold_builtin_isascii): Likewise.
20342         (fold_builtin_toascii): Likewise.
20343         (fold_builtin_isdigit): Likewise.
20344         (fold_builtin_fabs): Likewise.
20345         (fold_builtin_abs): Likewise.
20346         (fold_builtin_fmin_fmax): Likewise.
20347         (fold_builtin_carg): Likewise.
20348         (fold_builtin_classify): Likewise.
20349         (fold_builtin_unordered_cmp): Likewise.
20351         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
20352         New functions split out from fold_builtin_1.
20353         (fold_builtin_n): New.
20354         (fold_builtin_varargs): New.
20355         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
20356         instead.
20357         (fold_call_expr): New.
20358         (build_function_call_expr): Rewrite to use new helper function.
20359         (fold_builtin_call_list): New.
20360         (build_call_expr): New.
20361         (fold_builtin_call_valist): New.
20362         (rewrite_call_expr): New.
20363         (validate_arg): New.
20364         (validate_arglist): Change parameter to be entire CALL_EXPR instead
20365         of an arglist.  Change return type to bool.  Use new CALL_EXPR
20366         accessors.
20368         (fold_builtin_strstr):  Pass call arguments individually instead
20369         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
20370         accessors and constructors.  Return NULL_TREE instead of 0.
20371         (fold_builtin_strchr): Likewise.
20372         (fold_builtin_strrchr): Likewise.
20373         (fold_builtin_strpbrk): Likewise.
20374         (fold_builtin_strcat): Likewise.
20375         (fold_builtin_strncat): Likewise.
20376         (fold_builtin_strspn): Likewise.
20377         (fold_builtin_strcspn): Likewise.
20378         (fold_builtin_fputs): Likewise.
20379         (fold_builtin_next_arg): Likewise.
20380         (fold_builtin_sprintf): Likewise.
20382         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
20383         NULL_RTX instead of 0.
20384         (expand_builtin_memory_chk): Likewise.
20385         (maybe_emit_chk_warning): Likewise.
20386         (maybe_emit_sprintf_chk_warning): Likewise.
20388         (fold_builtin_object_size): Pass call arguments individually instead
20389         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
20390         accessors and constructors.  Return NULL_TREE instead of 0.
20391         (fold_builtin_memory_chk): Likewise.
20392         (fold_builtin_stxcpy_chk): Likewise.
20393         (fold_builtin_strncpy_chk): Likewise.
20394         (fold_builtin_strcat_chk): Likewise.
20395         (fold_builtin_strcat_chk): Likewise.
20396         (fold_builtin_strncat_chk): Likewise.
20397         (fold_builtin_sprintf_chk): Likewise.
20398         (fold_builtin_snprintf_chk): Likewise.
20399         (fold_builtin_printf): Likewise.
20400         (fold_builtin_vprintf): Likewise.
20402         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
20403         constructors.
20404         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
20405         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20406         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
20407         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
20408         (fold_unary): Likewise.
20409         (fold_binary): Likewise.
20410         (fold_ternary): Remove CALL_EXPR case, since they are no longer
20411         ternary expressions.
20412         (fold): Add logic for tcc_vl_exp.
20413         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
20414         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20415         (fold_build3_stat): Add assertion to flag broken interface for
20416         constructing CALL_EXPRs.
20417         (fold_build_call_list): New.
20418         (fold_build_call_list_initializer): New.
20419         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
20420         constructors.
20421         (fold_strip_sign_ops): Likewise.
20423 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20424             Brooks Moses  <brooks.moses@codesourcery.com>
20425             Lee Millward  <lee.millward@codesourcery.com>
20427         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
20428         accessors and dump arguments explicitly.
20430         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
20431         TREE_CODE_LENGTH.
20432         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
20433         explicitly.
20434         (print_call_name): Use new CALL_EXPR accessors.
20436         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
20437         CALL_EXPR arguments explicitly instead of as a list.  Use
20438         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20440         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
20441         (vrp_visit_stmt): Likewise.
20443         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
20444         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
20445         TREE_CODE_LENGTH.
20446         (force_move_till_expr): Likewise.
20448         * targhooks.c (default_external_stack_protect_fail): Use
20449         build_call_expr instead of build_function_call_expr.
20450         (default_hidden_stack_protect_fail): Likewise.
20452         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
20453         build the call.
20455         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
20456         and walk arguments explicitly.
20458         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
20459         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20460         (expand_simple_operations): Likewise.
20461         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
20463         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
20464         of TREE_CODE_LENGTH.
20465         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
20467         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
20468         instead of TREE_CODE_LENGTH.
20470         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
20471         (tree_ic_transform): Likewise.
20472         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
20473         parameter instead of arglist.  Fix callers.
20474         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
20475         (tree_stringops_transform): Likewise.
20476         (tree_indirect_call_to_profile): Likewise.
20477         (tree_stringops_values_to_profile): Likewise.
20479         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
20480         (eliminate_tail_call): Likewise.
20482         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
20484         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
20485         Use TREE_OPERAND_LENGTH and generalize to handle any number of
20486         operands.
20487         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
20489         * omp-low.c (build_omp_barrier): Use build_call_expr.
20490         (lower_rec_input_clauses): Likewise.
20491         (lower_reduction_clauses): Likewise.
20492         (expand_parallel_call): Likewise.
20493         (maybe_catch_exception): Likewise.
20494         (expand_omp_for_generic): Likewise.
20495         (expand_omp_for_static_nochunk): Likewise.
20496         (expand_omp_sections): Likewise.
20497         (lower_omp_single_simple): Likewise.
20498         (lower_omp_single_copy): Likewise.
20499         (lower_omp_master): Likewise.
20500         (lower_omp_ordered): Likewise.
20501         (lower_omp_critical): Likewise.
20503         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
20504         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
20506         * tree-gimple.c (is_gimple_call_addr): Fix doc.
20507         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
20508         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
20510         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
20511         and generalize to handle any number of operands.
20512         (chrec_contains_undetermined): Likewise.
20513         (tree_contains_chrecs): Likewise.
20514         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
20516         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
20518         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
20519         fold_call_expr instead of fold_builtin.
20520         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
20521         match declarations there.
20522         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
20523         updates.
20525         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
20526         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20528         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
20529         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
20531         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
20532         accessors.
20534         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
20535         (execute_cse_sincos): Use new CALL_EXPR accessors.
20537         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
20539         * gimple-low.c (lower_function_body): Use build_call_expr.
20540         (lower_builtin_setjmp): Likewise.
20542         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
20543         (set_storage_via_libcall): Likewise.
20544         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
20545         instead of TREE_CODE_LENGTH.
20546         (expand_expr_real_1): Use new CALL_EXPR accessors.
20548         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
20549         generalize to handle any number of operands.
20550         (TB_parent_eq): Likewise.
20552         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
20553         (strip_builtin_expect): Likewise.
20555         * function.c (gimplify_parameters): Use build_call_expr.
20557         * tree-vectorizer.c (vect_is_simple_reduction): Use
20558         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20560         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
20561         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
20563         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
20564         iterators.
20566         * gimplify.c (build_stack_save_restore): Use build_call_expr.
20567         (gimplify_decl_expr): Likewise.
20568         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
20569         Use new CALL_EXPR iterators.
20570         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
20571         (gimplify_modify_expr_to_memset): Likewise.
20572         (gimplify_variable_sized_compare): Likewise.
20573         (gimplify_omp_atomic_fetch_op): Likewise.
20574         (gimplify_omp_atomic_pipeline): Likewise.
20575         (gimplify_omp_atomic_mutex): Likewise.
20576         (gimplify_function_tree): Likewise.
20578         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
20579         (call_expr_flags): Likewise.
20580         (expand_call): Likewise.
20582         * except.c (expand_builtin_eh_return_data_regno): Pass entire
20583         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
20584         accessors.
20586         * coverage.c (create_coverage): Use build_call_expr.
20588         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
20589         (temp_call_expr_obstack): New.
20590         (pool_copy_list): Delete.
20591         (temp_copy_call_expr): New.
20592         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
20593         CALL_EXPR accessors.  Get rid of special goo for copying argument
20594         lists and use temp_copy_call_expr instead.
20595         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
20596         CALL_EXPR accessors.
20597         (create_expression_by_pieces): Likewise.  Use build_call_array
20598         to construct the result instead of fold_build3.
20599         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
20600         dealing with argument lists.
20601         (init_pre): Remove references to expression_node_pool and
20602         list_node_pool.  Init temp_call_expr_obstack instead.
20603         (fini_pre): Remove references to expression_node_pool and
20604         list_node_pool.
20606         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
20607         and walk arguments explicitly instead of as a list.
20609         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
20610         (mx_register_decls): Likewise.
20611         (mudflap_register_call): Likewise.
20612         (mudflap_finish_file): Likewise.
20614         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
20615         (ipa_callsite_compute_param): Likewise.
20617         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
20618         accessors and constructor.
20620         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
20621         accessors and constructor.
20622         (convert_tramp_reference): Likewise.
20623         (convert_call_expr): Likewise.
20624         (finalize_nesting_tree_1): Likewise.
20626         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
20627         accessors.
20629         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
20631         * tree-inline.c (initialize_inlined_parameters): Pass entire
20632         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
20633         accessors.
20634         (estimate_num_insns_1): Use new CALL_EXPR accessors.
20635         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
20637         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
20638         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20639         (vectorizable_reduction): Likewise.
20640         (vectorizable_call): Use new CALL_EXPR iterators.
20641         (vectorizable_conversion): Use build_call_expr.
20642         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
20643         (vect_gen_widened_results_half): Use build_call_expr.
20644         (vect_setup_realignment): Likewise.
20645         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
20647         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
20648         (pass_through_call): Likewise.
20649         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
20650         fold_builtin.
20652         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
20653         (tree_gen_pow2_profiler): Likewise.
20654         (tree_gen_one_value_profiler): Likewise.
20655         (tree_gen_ic_func_profiler): Likewise.
20656         (tree_gen_average_profiler): Likewise.
20657         (tree_gen_ior_profiler): Likewise.
20659         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
20660         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
20661         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20663         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
20664         of TREE_CODE_LENGTH.
20666         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
20667         of TREE_CODE_LENGTH.
20669         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
20670         constructor.
20671         (convert_to_integer): Likewise.
20673         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
20674         accessors.
20676 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20677             Brooks Moses  <brooks.moses@codesourcery.com>
20678             Lee Millward  <lee.millward@codesourcery.com>
20680         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
20681         accessors.
20682         * config/frv/frv.c (frv_expand_builtin): Likewise.
20683         * config/s390/s390.c (s390_expand_builtin): Likewise.
20685         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
20686         (sparc_expand_builtin): Use new CALL_EXPR accessors.
20688         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
20689         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
20690         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
20691         (ix86_expand_store_builtin): Likewise.
20692         (ix86_expand_unop_builtin): Likewise.
20693         (ix86_expand_unop1_builtin): Likewise.
20694         (ix86_expand_sse_compare): Likewise.
20695         (ix86_expand_sse_comi): Likewise.
20696         (ix86_expand_vec_init_builtin): Likewise.
20697         (ix86_expand_vec_ext_builtin): Likewise.
20698         (ix86_expand_vec_set_builtin): Likewise.
20699         (ix86_expand_builtin): Use new CALL_EXPR accessors.
20701         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
20702         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
20704         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
20705         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
20706         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
20708         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
20709         build_call_expr.
20710         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
20711         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
20712         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20713         (altivec_expand_abs_builtin): Likewise.
20714         (rs6000_expand_binop_builtin): Likewise.
20715         (altivec_expand_predicate_builtin): Likewise.
20716         (altivec_expand_lv_builtin): Likewise.
20717         (spe_expand_stv_builtin): Likewise.
20718         (altivec_expand_stv_builtin): Likewise.
20719         (rs6000_expand_ternop_builtin): Likewise.
20720         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
20721         (altivec_expand_st_builtin): Likewise.
20722         (altivec_expand_dst_builtin): Likewise.
20723         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
20724         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20725         (altivec_expand_vec_set_builtin): Likewise.
20726         (altivec_expand_vec_ext_builtin): Likewise.
20727         (altivec_expand_builtin): Use new CALL_EXPR accessors.
20728         (spe_expand_builtin): Likewise.
20729         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
20730         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20731         (spe_expand_evsel_builtin): Likewise.
20732         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
20733         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
20735         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
20736         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
20737         (arm_expand_unop_builtin): Likewise.
20738         (arm_expand_builtin): Use new CALL_EXPR accessors.
20740         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
20741         accessors.
20743         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
20744         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
20745         Fix callers.
20746         (bfin_expand_unop_builtin): Likewise.
20747         (bfin_expand_builtin): Use new CALL_EXPR accessors.
20749 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20750             Brooks Moses  <brooks.moses@codesourcery.com>
20751             Lee Millward  <lee.millward@codesourcery.com>
20753         * c-semantics.c (build_stmt): Add internal diagnostic check.
20755         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
20756         accessors.  Print arguments explicitly instead of as a list.
20758         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
20760         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
20761         (c_finish_omp_flish): Likewise.
20763         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
20764         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
20765         instead of TREE_CODE_LENGTH.
20766         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
20767         (c_warn_unused_result): Likewise.
20769 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20771         PR c/26494
20772         * doc/invoke.texi (Warning Options): Remove
20773         -Werror-implicit-function-declaration.
20774         (Wimplicit-function-declaration): Update description.
20775         * opts.c (common_handle_option): Move handling of -Werror=* to...
20776         (enable_warning_as_error): ...here.
20777         * opts.h (enable_warning_as_error): Declare.
20778         * c-decl.c (implicit_decl_warning): Unless
20779         -Wno-implicit-function-declaration is given, emit a pedwarn if
20780         -std=c99 or emit a warning if -Wimplicit-function-declaration.
20781         * c.opt (Wimplicit-function-declaration): Replace
20782         mesg_implicit_function_declaration with
20783         warn_implicit_function_declaration.
20784         * c-opts.c (c_common_handle_option):
20785         -Werror-implicit-function-declaration is exactly equal as
20786         -Werror=implicit-function-declaration.
20787         (set_Wimplicit): Replace mesg_implicit_function_declaration with
20788         warn_implicit_function_declaration.
20789         (c_common_post_options): -Wimplict-function-declaration is enabled
20790         by default by -std=c99, otherwise is disabled by default.
20791         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
20793 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
20795         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
20796         DECL on the rhs to a DECL on the lhs for debug info purposes if the
20797         former is ignored but not the latter.
20799 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
20801         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
20802         is made and the reference doesn't use the alias set of its type,
20803         do not create the temporary using that type.
20805 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
20807         * jump.c: Remove prototypes for delete_computation and
20808         delete_prior_computation.
20810 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
20812         * jump.c (get_label_after): Delete.
20813         (get_label_before, delete_computation, delete_jump,
20814         delete_prior_computation, follow_jumps): Move...
20815         * reorg.c (delete_computation, delete_prior_computation): ... here...
20816         (get_label_before, delete_jump): ... making these static ...
20817         (follow_jumps): ... and simplifying this since it only runs after
20818         reload.
20819         * rtl.h (get_label_after, get_label_before, delete_jump,
20820         follow_jumps): Delete prototypes.
20822 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
20824         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
20826 2007-02-15  Nick Clifton  <nickc@redhat.com>
20828         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
20829         order to prevent it from being munged by the target.
20831 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
20833         * config/i386/i386.md: Remove misleading comment.
20835 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20837         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
20838         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
20839         invalid patterns.
20841 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20843         * tree-sra.c (instantiate_missing_elements): Canonicalize
20844         bit-field types.
20845         (sra_build_assignment): New.
20846         (generate_copy_inout, generate_element_copy,
20847         generate_element_zero, generate_one_element_init): Use it.
20849 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20851         * tree-sra.c (instantiate_missing_elements): Canonicalize
20852         bit-field types.
20853         (sra_build_assignment): New.
20854         (generate_copy_inout, generate_element_copy,
20855         generate_element_zero, generate_one_element_init): Use it.
20857 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20859         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
20860         limbo die nodes.
20862 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
20864         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
20865         types as aggregates not scalars.
20866         * function.c (assign_stack_temp_for_type): Likewise.
20868 2007-02-14  Roger Sayle  <roger@eyesopen.com>
20869             Zdenek Dvorak  <dvorakz@suse.cz>
20871         * tree-dump.c (dump_switch_p_1): Require exact match of the option
20872         name.
20874 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
20876         * passes.c (next_pass_1): Clear the next field of the copied
20877         pass structure.
20879 2007-02-14  Richard Henderson  <rth@redhat.com>
20881         * tree-sra.c (early_sra): New.
20882         (decl_can_be_decomposed_p): Deny va_list if early_sra.
20883         (tree_sra_early, pass_sra_early): New.
20884         * tree-pass.h (pass_sra_early): Declare.
20885         * passes.c (init_optimization_passes): Use it.
20887 2007-02-14  Richard Guenther  <rguenther@suse.de>
20889         * flags.h (issue_strict_overflow_warning): Convert to a macro.
20891 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
20893          PR tree-optimization/30771
20894         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
20895         also phi nodes.
20896         (vect_analyze_operations): Induction phis can now be marked as
20897         used_in_loop.
20898         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
20899         Update documentation accordingly.
20901 2007-02-14  Nick Clifton  <nickc@redhat.com>
20903         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
20904         most 3 arguments are supported.
20905         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
20907 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
20909         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
20910         Ensure dst->current is valid.
20912 2007-02-13  Paul Brook  <paul@codesourcery.com>
20914         * config.gcc: Add arm*-*-uclinux-*eabi.
20915         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
20916         (SUBTARGET_EXTRA_LINK_SPEC): Define.
20917         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
20918         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
20919         (LINK_SPEC): Define.
20920         (LIB_SPEC): Define.
20921         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
20922         register.
20923         * config/arm/uclinux-eabi.h: New file.
20924         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
20925         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
20926         based targets.
20928 2007-02-13  Ian Lance Taylor  <iant@google.com>
20930         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
20931         * flags.h (warn_strict_overflow): Declare.
20932         (enum warn_strict_overflow_code): Define.
20933         (issue_strict_overflow_warning): New static inline function.
20934         * opts.c (warn_strict_overflow): New variable.
20935         (common_handle_option): Handle OPT_Wstrict_overflow and
20936         OPT_Wstrict_overflow_.
20937         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
20938         OPT_Wall.
20939         * fold-const.c: Include intl.h.
20940         (fold_deferring_overflow_warnings): New static variable.
20941         (fold_deferred_overflow_warning): New static variable.
20942         (fold_deferred_overflow_code): New static variable.
20943         (fold_defer_overflow_warnings): New function.
20944         (fold_undefer_overflow_warnings): New function.
20945         (fold_undefer_and_ignore_overflow_warnings): New function.
20946         (fold_deferring_overflow_warnings_p): New function.
20947         (fold_overflow_warning): New static function.
20948         (make_range): Add strict_overflow_p parameter.  Change all
20949         callers.
20950         (extract_muldiv, extract_muldiv_1): Likewise.
20951         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
20952         tree_expr_nonnegative_p.
20953         (fold_negate_expr): Call fold_overflow_warning.
20954         (fold_range_test): Likewise.
20955         (fold_comparison): Likewise.
20956         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
20957         instead of tree_expr_nonnegative_p.
20958         (tree_expr_nonnegative_warnv_p): Rename from
20959         tree_expr_nonnegative_p, add strict_overflow_p parameter.
20960         (tree_expr_nonnegative_p): New function.
20961         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
20962         strict_overflow_p parameter.
20963         (tree_expr_nonzero_p): New function.
20964         * passes.c (verify_interpass_invariants): New static function.
20965         (execute_one_pass): Call it.
20966         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
20967         warnings.
20968         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
20969         (estimate_numbers_of_iterations): Likewise.
20970         (scev_probably_wraps_p): Likewise.
20971         * tree-ssa-ccp.c: Include "toplev.h".
20972         (evaluate_stmt): Defer fold overflow warnings until we know we are
20973         going to optimize.
20974         (struct fold_stmt_r_data): Add stmt field.
20975         (fold_stmt_r): Defer fold overflow warnings until we know we
20976         optimized.
20977         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
20978         (fold_stmt_inplace): Likewise.
20979         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
20980         (cleanup_control_expr_graph): Defer fold overflow warnings until
20981         we know we are going to optimize.
20982         * tree-cfg.c (fold_cond_expr_cond): Likewise.
20983         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
20984         Likewise.
20985         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
20986         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
20987         * tree-ssa-loop-manip.c (create_iv): Likewise.
20988         * c-typeck.c (build_conditional_expr): Likewise.
20989         (build_binary_op): Likewise.
20990         * tree-vrp.c (vrp_expr_computes_nonzero): Call
20991         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
20992         (extract_range_from_unary_expr): Likewise.
20993         * simplify-rtx.c (simplify_const_relational_operation): Warn when
20994         assuming that signed overflow does not occur.
20995         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
20996         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
20997         (fold_defer_overflow_warnings): Declare.
20998         (fold_undefer_overflow_warnings): Declare.
20999         (fold_undefer_and_ignore_overflow_warnings): Declare.
21000         (fold_deferring_overflow_warnings_p): Declare.
21001         (tree_expr_nonzero_warnv_p): Declare.
21002         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
21003         of warning options.
21004         (Warning Options): Document -Wstrict-overflow.
21005         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
21006         (tree-ssa-ccp.o): Likewise.
21007         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
21008         (fold-const.o): Depend on intl.h.
21010 2007-02-13  Ian Lance Taylor  <iant@google.com>
21012         PR middle-end/30751
21013         * lower-subreg.c (resolve_simple_move): Decompose subregs in
21014         addresses.
21016 2007-02-13  Stuart Hastings  <stuart@apple.com>
21018         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
21020 2007-02-13  Richard Henderson  <rth@redhat.com>
21022         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
21023         handled_component_p before looking for the indirect_ref.
21025 2007-02-13  Richard Henderson  <rth@redhat.com>
21027         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
21028         remove flags clobber.
21029         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
21030         (bswaphi_lowpart): New.
21031         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
21032         remove TARGET_BSWAP test.  Delete expander of the same name.
21034         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
21035         (expand_unop): Use them.
21037 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
21039         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
21040         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
21041         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
21042         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
21043         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
21044         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
21045         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
21046         assembler dialect choice from asm templates.
21048 2007-02-12  Richard Henderson  <rth@redhat.com>
21050         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
21051         (fixuns_trunc<SSEMODEF>si2): Use it.
21052         * config/i386/sse.md (vec_setv4sf_0): Export.
21053         * config/i386/i386.c (ix86_build_const_vector): Export.
21054         (ix86_split_convert_uns_si_sse): Rename from
21055         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
21056         * config/i386/i386-protos.h: Update.
21058 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21060         PR c/29521
21061         * c-typeck.c (c_finish_return): Improve warning message.
21063 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21065         * alias.c (find_symbolic_term): Delete unused function.
21067 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
21069         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
21070         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
21071         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
21073 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
21075         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
21076         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
21077         the function, temporarily point the debug interface to the null one.
21079 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
21081         * dwarf2out.c (round_up_to_align): New static function.
21082         (field_byte_offset): Use it to round the offset.
21084 2007-02-12  Richard Henderson  <rth@redhat.com>
21086         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
21087         (inswl_const): Export.
21089 2007-02-12  Richard Henderson  <rth@redhat.com>
21091         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
21092         result mode of the libcall, convert back to outmode.
21094 2007-02-12  Roger Sayle  <roger@eyesopen.com>
21096         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
21097         (bswapdi2): New define_expand to implement 32-bit implementation.
21099 2007-02-12  Nick Clifton  <nickc@redhat.com>
21101         * doc/invoke.texi (Overall Options): Document --help=.
21102         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
21103         (cc1_options): Pass --help= on to cc1.
21104         (display_help): Add description of --help=.
21105         (process_command): Add code to handle --help=.  Allow translated
21106         --help and --target-help switches to be passed on to compiler
21107         sub-process.
21108         (main): Remove unused if statement.
21109         * opts.c (columns): Remove.
21110         (LEFT_COLUMN): Define.
21111         (wrap_help): Add columns argument.
21112         (print_filtered_help): Change parameters to be an include bitmask,
21113         an exclude bitmask, an any bitmask and the column width.  Move the
21114         code to display the params list here.  Add code to display the
21115         status of options rather than their descriptions if the quiet flag
21116         is not active.
21117         (print_specific_help): Change parameters to be an include bitmask,
21118         an exclude bitmask and an any bitmask.  Move code to look up the
21119         column width here.  Decide upon the title for an options listing.
21120         (common_handle_options): Add code to handle --help=.  Adapt code
21121         for --help and --target-help to use the revised form of the
21122         print_specific_help function.
21123         (print_help): Delete.
21124         (print_param_help): Delete.
21125         (print_switch): Delete.
21126         * opts.h (cl_lang_count): Add prototype.
21127         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
21128         CL_MAX_OPTION_CLASS): New defines.
21129         * optc-gen.awk: Add construction of cl_lang_count.
21130         * c.opt: Add Warning attribute to warning options and Optimization
21131         attribute to optimization options.
21132         * common.opt: Likewise.
21133         Add --help=.
21134         Add -fhelp and -ftarget-help as aliases for the transformed --help
21135         and --target-help options.
21136         * opt-functions.awk: Add code to handle Warning and Optimization
21137         attributes.
21139 2007-02-12  Richard Henderson  <rth@redhat.com>
21141         * config/alpha/constraints.md: New file.
21142         * config/alpha/alpha.c: Include tm-constrs.h.
21143         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
21144         alpha_extra_constraint): Remove.
21145         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
21146         * config/alpha/alpha-protos.h: Update.
21147         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
21148         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
21149         (EXTRA_CONSTRAINT): Remove.
21150         * config/alpha/alpha.md: Include constraints.md.
21151         (adddi splitter): Use satisfies_constraint_*.
21152         * config/alpha/predicates.md (add_operand): Likewise.
21153         (sext_add_operand, addition_operation): Likewise.
21155 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
21157         PR tree-optimization/29145
21158         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
21159         in our handling of restrict qualified pointers.
21161 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21163         PR middle-end/7651
21164         * doc/invoke.texi (Wunused-value): Update description.
21165         (Wextra): Delete item.
21166         * opts.c (set_Wextra): Don't use the value of Wextra to set the
21167         value of Wunused-value.
21168         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
21169         (c_finish_stmt_expr): Don't check extra_warnings.
21170         (emit_side_effect_warnings): The caller is responsible to check
21171         warn_unused_value.
21173 2007-02-11  Roger Sayle  <roger@eyesopen.com>
21174             Matt Thomas  <matt@3am-software.com>
21176         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
21178 2007-02-11  Roger Sayle  <roger@eyesopen.com>
21180         * simplify-rtx.c (simplify_relational_operation_1): Optimize
21181         comparisons of POPCOUNT against zero.
21182         (simplify_const_relational_operation): Likewise.
21184 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21186         * doc/invoke.texi (Wextra): Delete outdated paragraph.
21188 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21190         * dwarf2out.c (root_type): Delete unused function.
21192 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21194         * genattrtab.c (contained_in_p): Delete unused function.
21195         (write_expr_attr_cache): Likewise.
21197 2007-02-11  Jan Hubicka  <jh@suse.cz>
21199         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
21200         previous patch.
21202 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
21204         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
21205         to add the REG_EQ* note.
21206         * see.c (see_merge_one_use_extension): Likewise.
21207         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
21208         turn REG_EQUAL notes into REG_EQUIV notes if the target
21209         register may have more than one set.
21210         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
21211         * gcse.c (try_replace_reg): Likewise.
21212         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
21213         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
21214         more than one REG_EQUIV note.
21215         * reload1.c (gen_reload): Use set_unique_reg_note.
21217 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
21219         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
21220         (ix86_builtin_conversion): New function.
21222 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
21224         PR target/29487
21225         * tree.h (DECL_REPLACEABLE_P): New macro.
21226         * except.c (set_nothrow_function_flags): Likewise.
21228 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
21229             Ira Rosen  <irar@il.ibm.com>
21230             Dorit Nuzman  <dorit@il.ibm.com>
21232         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
21233         * targhooks.c (default_builtin_vectorized_conversion): New.
21234         * targhooks.h (default_builtin_vectorized_function): New declaration.
21235         * target.h (struct vectorize): Add builtin_conversion field.
21236         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
21237         stmt_vec_info_type value.
21238         (vectorizable_conversion): New declaration.
21239         * tree-vect-analyze.c (vect_analyze_operations): Add
21240         vectorizable_conversion call.
21241         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
21242         * tree-vect-transform.c (vectorizable_conversion): New function.
21243         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
21244         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
21245         mode.
21246         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
21247         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
21248         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
21249         or ALTIVEC_BUILTIN_VCFSX.
21251 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21253         PR target/30634
21254         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
21255         CONST_DOUBLE and operand 0 is a hard register.
21256         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
21257         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
21258         is a hard floating-point register.
21260 2007-02-10  Richard Henderson  <rth@redhat.com>
21261             Jakub Jelinek  <jakub@redhat.com>
21262             Alexandre Oliva  <aoliva@redhat.com>
21264         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
21265         * builtin-types.def (BT_WORD): Make unsigned.
21266         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
21267         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
21268         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
21269         * c-decl.c (grokdeclarator): Don't error if !have_tls.
21270         * c-parser.c (c_parser_omp_threadprivate): Likewise.
21271         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
21272         emulated tls.
21273         * expr.c (emutls_var_address): New.
21274         (expand_expr_real_1): Expand emulated tls.
21275         (expand_expr_addr_expr_1): Likewise.
21276         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
21277         * output.h (emutls_finish): Declare.
21278         * toplev.c (compile_file): Call it.
21279         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
21280         address before wrapping in CONST.
21281         * varasm.c (emutls_htab, emutls_object_type): New.
21282         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
21283         (get_emutls_object_name, get_emutls_object_type): New.
21284         (get_emutls_init_templ_addr, emutls_decl): New.
21285         (emutls_common_1, emutls_finish): New.
21286         (assemble_variable): When emulating tls, swap decls; generate
21287         constructor for the emutls objects.
21288         (do_assemble_alias): When emulating tls, swap decl and target name.
21289         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
21290         for emulated tls.
21291         * varpool.c (decide_is_variable_needed): Look at force_output.
21292         Recurse for emulated tls.
21293         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
21294         with decide_is_variable_needed.
21295         * emutls.c: New file.
21296         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
21297         tls_object for real tls.
21299 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
21301         PR rtl-optimization/29599
21302         * reload1.c (eliminate_regs_in_insn): Take the destination
21303         mode into account when computing the offset.
21305 2007-02-09  Stuart Hastings  <stuart@apple.com>
21306             Richard Henderson  <rth@redhat.com>
21308         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
21309         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
21310         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
21311         fixuns_truncdfhi2): New.
21312         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
21313         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
21314         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
21315         (floatunssidf2): Allow nonimmediate source.
21316         * config/i386/sse.md (movdi_to_sse): New.
21317         (vec_concatv2di): Drop '*'.
21318         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
21319         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
21320         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
21321         New.
21322         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
21323         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
21324         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
21325         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
21326         (ix86_build_signbit_mask): Fix decl of v, refactor to call
21327         ix86_build_const_vector.
21328         (x86_emit_floatuns): Rewrite.
21330 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21332         * genautomata.c (longest_path_length): Delete unused function.
21333         (struct state): Delete unused longest_path_length.
21334         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
21335         (get_free_state): Delete unused.
21337 2007-02-09  Jan Hubicka  <jh@suse.cz>
21339         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
21340         * doc/invoke.texi (inline-unit-growth): Update default value.
21342         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
21343         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
21344         (rebuild_cgraph_edges): Likewise.
21345         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
21346         (dump_cgraph_node): Dump frequencies.
21347         (cgraph_clone_edge): Add frequency scales.
21348         (cgraph_clone_node): Add freuqnecy.
21349         * cgraph.h (cgraph_edge): Add freuqnecy argument.
21350         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
21351         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
21352         * tree-pass.h (TODO_rebuild_frequencies): New constant.
21353         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
21354         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
21355         (save_inline_function_body): Likewise.
21356         * ipa-inline.c: inluce rtl.h
21357         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
21358         (cgraph_edge_badness): Use frequencies.
21359         (cgraph_decide_recursive_inlining): Update clonning.
21360         (cgraph_decide_inlining_of_small_function): Dump frequency.
21361         * predict.c (estimate_bb_frequencies): Export.
21362         * predict.h (estimate_bb_frequencies): Declare.
21363         * tree-inline.c (copy_bb): Watch overflows.
21364         (expand_call_inline): Update call of cgraph_create_edge.
21365         (optimize_inline_calls): Use TODO flags to update frequnecies.
21366         * passes.h: Include predict.h
21367         (init_optimization_passes): Move profile ahead.
21368         (execute_function_todo): Handle TODO_rebuild_frequencies.
21370 2007-02-09  Roger Sayle  <roger@eyesopen.com>
21372         * config/alpha/alpha.c (emit_insxl): Force the first operand of
21373         the insbl or inswl pattern into a register.
21375 2007-02-09  Roger Sayle  <roger@eyesopen.com>
21377         * config/ia64/ia64.md (bswapdi2): New define_insn.
21379 2007-02-09  Richard Henderson  <rth@redhat.com>
21381         * config/i386/constraints.md (Ym): New constraint.
21382         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
21383         (movdi_1_rex64): Split sse and xmm general register moves from
21384         memory move alternatives.  Use conditional register constraints.
21385         (movsf_1, movdf_integer): Likewise.
21386         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
21387         (movdf_integer_rex64): New.
21388         (pushsf_rex64): Fix output constraints.
21389         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
21390         (sse2_stored): Likewise.
21391         (sse2_storeq_rex64): New.
21392         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
21393         amd and not generic.
21394         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
21395         for optimize_size.  Remove SF/DFmode hack.
21397 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
21399         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
21400         (bit_SSE4a): New.
21402 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
21403             Richard Sandiford  <richard@codesourcery.com>
21405         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
21406         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
21407         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
21408         m68k/t-mlib to tmake_file.
21409         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
21410         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
21411         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
21412         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
21413         variable is not empty, add t-$m68k_arch_family to tmake_file.
21414         Add t-mlibs to tmake_file.
21415         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
21416         * config/m68k/t-cf: New file.
21417         * config/m68k/t-m68k: Likewise.
21418         * config/m68k/t-mlibs: Likewise.
21419         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
21420         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
21421         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
21422         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
21423         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
21424         Delete.
21425         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
21426         (INSTALL_LIBGCC): Delete.
21427         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
21428         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
21429         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
21430         (M68K_MLIB_CPU): Define.
21431         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
21432         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
21433         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
21435 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
21436             Richard Guenther  <rguenther@suse.de>
21438         PR middle-end/23361
21439         * fold-const.c (fold_comparison): Handle obfuscated comparisons
21440         against INT_MIN/INT_MAX.
21441         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
21442         file if a loop is removed.
21444 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
21446         * calls.c (store_one_arg): Pass correct alignment to
21447         emit_push_insn for non-BLKmode values.
21448         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
21449         unaligned stack slot via a suitably aligned slot.
21451 2007-02-08  DJ Delorie  <dj@redhat.com>
21453         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
21454         warnings.
21455         (legal_subregs): Use unsigned char, make const.
21456         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
21458 2007-02-08  Paul Brook  <paul@codesourcery.com>
21460         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
21461         special interworking needed.
21463 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
21465         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
21466         conditional to __SSE2__.
21467         (Entries below should have been added to first ChangeLog
21468         entry for amdfam10 dated 2007-02-05)
21469         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
21470         defined.
21471         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
21472         defined.
21473         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
21474         defined.
21476 2007-02-08  DJ Delorie  <dj@redhat.com>
21478         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
21479         * config/m32c/m32c.c (legal_subregs): New.
21480         (m32c_illegal_subreg_p): New.
21481         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
21482         unsupported subregs of hard regs.
21484 2007-02-08  Jan Hubicka  <jh@suse.cz>
21486         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
21487         the same one; always update histograms.
21489 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
21491         * passes.c (init_optimization_passes): Tidy comment.
21493 2007-02-08  Roger Sayle  <roger@eyesopen.com>
21495         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
21496         strip zero_extend, bswap and rotates from POCOUNT's argument.
21497         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
21498         zero_extend and rotates from PARITY's argument.
21499         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
21500         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
21501         of an integer constant at compile-time.
21503 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
21505         PR 30562
21506         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
21507         Update all users.
21508         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
21509         users.
21510         (init_alias_info):
21511         * tree-ssa-live.c (remove_unused_locals): Do not remove
21512         TREE_ADDRESSABLE variables.
21513         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
21514         * tree-ssa-operands.c (add_virtual_operand): Remove argument
21515         FOR_CLOBBER.  Update all users.
21516         If VAR has an associated alias set, add a virtual operand for
21517         it if no alias is found to conflict with the memory reference.
21519 2007-02-07  Jan Hubicka  <jh@suse.cz>
21520             Robert Kidd <rkidd@crhc.uiuc.edu>
21522         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
21524 2007-02-07  Ian Lance Taylor  <iant@google.com>
21526         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
21528 2007-02-07  Roger Sayle  <roger@eyesopen.com>
21530         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
21531         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
21532         tablejumpdi, movsi_to_cr_one): Remove constraints from
21533         define_expand's match_operands.
21535 2007-02-07  Roger Sayle  <roger@eyesopen.com>
21537         * global.c (compute_regsets): Move declatation of "i" inside of
21538         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
21540 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
21542         PR c++/30703
21543         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
21544         of INDIRECT_REF <RESULT_DECL>.
21546         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
21548 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
21549             Kaz Kojima  <kkojima@gcc.gnu.org>
21551         PR target/29746
21552         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
21553         properly.
21554         (sh_initialize_trampoline): Add parentheses to avoid a warning.
21556 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
21558         * doc/loop.texi: Document possibility not to perform disambiguation
21559         of loops with multiple latches.
21560         * cfgloopmanip.c (alp_enum_p): Removed.
21561         (add_loop): Handle subloops.  Use get_loop_body_with_size.
21562         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
21563         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
21564         the new forwarder block.
21565         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
21566         Handle the case latch is NULL.
21567         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
21568         modifications when marking loop exits.
21569         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
21570         be modified.
21571         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
21572         disambiguate_loops_with_multiple_latches.
21573         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
21574         before fix_loop_structure.
21575         * cfgloop.c: Include pointer-set.h and output.h.
21576         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
21577         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
21578         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
21579         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
21580         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
21581         disambiguate_multiple_latches, get_loop_body_with_size,
21582         disambiguate_loops_with_multiple_latches): New functions.
21583         (flow_loop_dump): Dump multiple latch edges.
21584         (flow_loop_nodes_find): Handle loops with multiple latches.
21585         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
21586         (glb_enum_p): Modified.
21587         (get_loop_body): Use get_loop_body_with_size.
21588         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
21589         (AVOID_CFG_MODIFICATIONS): New constant.
21590         (disambiguate_loops_with_multiple_latches, add_loop,
21591         get_loop_body_with_size): Declare.
21592         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
21594 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
21596         PR inline-asm/28686
21597         * global.c (compute_regsets): New function.
21598         (global_alloc): Refactored ELIMINABLE_REGSET
21599         and NO_GLOBAL_ALLOC_REGS computation out.
21600         (rest_of_handle_global_alloc): Call compute_regsets()
21601         for non-optimizing case.
21603 2007-02-06  Richard Henderson  <rth@redhat.com>
21605         * config/i386/constraints.md (Y2): Rename from Y.
21606         (Yi): New constraint.
21607         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
21608         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
21609         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
21610         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
21611         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
21612         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
21613         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
21614         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
21615         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
21616         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
21617         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
21618         vec_extractv2si_1): Change Y constraints to Y2.
21619         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
21620         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
21621         Change Y constraints to Y2.
21622         (sse2_loadld): Change Y constraints to x.
21624 2007-02-06  Roger Sayle  <roger@eyesopen.com>
21626         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
21627         (parity<mode>2): New define_expand using rs6000_emit_parity.
21628         * config/rs6000/rs6000.c (rs6000_emit_popcount,
21629         rs6000_emit_parity): New functions.
21630         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
21631         rs6000_emit_parity): Prototype here.
21633 2007-02-06  Ian Lance Taylor  <iant@google.com>
21635         * lower-subreg.c (simple_move_operand): Reject CONST.
21636         (resolve_clobber): Call validate_change rather than directly
21637         assigning to XEXP (pat, 0).
21639 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
21641         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
21642         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
21643         (tree-cfg.o): Remove hashtab.h dependency.
21645         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
21646         (struct ivopts_data): Change niters to pointer_map_t.
21647         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
21648         (niter_for_exit): Create pointer_map on demand.  Change for
21649         pointer_map API.
21650         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
21651         (free_loop_data): Destroy data->niters if created and reset field.
21652         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
21653         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
21655         * tree-ssa-reassoc.c: Include pointer-set.h.
21656         (bb_rank): Change to long *.
21657         (operand_rank): Change to pointer_map_t.
21658         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
21659         (insert_operand_rank): Accept long.
21660         (operand_entry_hash, operand_entry_eq): Remove.
21661         (get_rank): Return long.  Adjust for changes above.
21662         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
21663         and operand_rank.
21664         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
21666         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
21667         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
21668         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
21669         is not NULL.
21670         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
21671         directly since it cannot be NULL.
21672         (get_vi_for_tree): Rewrite for pointer_map API.
21673         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
21674         (init_alias_vars): Create vi_for_tree as pointer_map.
21675         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
21677         * tree-cfg.c: Don't include hashtab.h.
21678         (edge_to_cases): Declare as pointer_map.
21679         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
21680         Delete.
21681         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
21682         (start_recording_case_labels): Create edge_to_cases as pointer_map.
21683         (end_recoding_case_labels): Cleanup edge_to_cases manually before
21684         destroying it.
21685         (record_switch_edge): Delete.
21686         (get_cases_for_edge): Adjust for pointer_map API, inline
21687         record_switch_edge (rewritten for new API), remove goto.
21689 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
21691         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
21692         * tree-nested.c: Include pointer-set.h.
21693         (var_map_elt, var_map_eq, var_map_hash): Delete.
21694         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
21695         to pointer_map_t's.
21696         (nesting_info_bitmap_obstack): New.
21697         (lookup_field_for_decl): Adjust for pointer_map API.
21698         (lookup_tramp_for_decl): Adjust for pointer_map API.
21699         (get_nonlocal_debug_decl): Adjust for pointer_map API.
21700         (get_local_debug_decl): Adjust for pointer_map API.
21701         (convert_nl_goto_reference): Adjust for pointer_map API.
21702         (convert_nl_goto_receiver): Adjust for pointer_map API.
21703         (create_nesting_tree): Create outside GGC space.  Create bitmap on
21704         the new obstack.  Create field_map and var_map as pointer_maps.
21705         (free_nesting_tree): Adjust for changes to create_nesting_tree.
21706         (root): Delete.
21707         (lower_nested_functions): Move root here, no need to NULL it.
21708         Initialize and release the obstack.
21710 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
21712         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
21713         Remove prototypes and make them non-static.
21714         (struct tree_int_map): Remove.
21715         * tree.h (struct tree_int_map): Move here, turning TO into an
21716         unsigned int.
21717         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
21719         * tree.h (TREE_COMPLEXITY): Remove.
21720         (struct tree_exp): Remove complexity field.
21721         * tree.c (build1_stat): Don't set it.
21723 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
21724             Victor Kaplansky  <victork@il.ibm.com>
21726         * tree-vectorizer.c (vect_is_simple_use): Support induction.
21727         (vect_is_simple_reduction): Support reduction with induction as
21728         one of the operands.
21729         (vect_is_simple_iv_evolution): Fix formatting.
21730         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
21731         formatting.  Don't mark induction phis for vectorization.
21732         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
21733         * tree-vect-transform.c (get_initial_def_for_induction): New function.
21734         (vect_get_vec_def_for_operand): Support induction.
21735         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
21736         induction case.
21737         (vectorizable_reduction): Support reduction with induction as one of
21738         the operands.
21739         (vectorizable_type_demotion): Use def-type of stmt argument rather
21740         than dummy def-type.
21742         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
21743         flag_tree_scev_cprop.
21744         * common.opt (tree-scev-cprop): New flag.
21746         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
21747         call to vect_get_new_vect_var.
21749 2007-02-06  Ira Rosen  <irar@il.ibm.com>
21751         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
21752         vectype is not NULL.
21753         (vect_pattern_recog_1): Likewise.
21755 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21757         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
21758         (fold_negate_expr): Likewise.
21760 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
21762         PR debug/30189
21763         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
21764         even if cv-qualification is the same.
21766 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
21768         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
21769         __enable_execute_stack on completion.
21771 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21773         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
21774         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
21775         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
21776         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
21777         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
21778         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
21779         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
21780         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
21782 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21784         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
21785         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
21786         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
21787         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
21788         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
21789         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
21790         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
21791         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
21792         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
21793         umuldi3_highpart_rex64, umulsi3_highpart_insn,
21794         umulsi3_highpart_zext, smuldi3_highpart_rex64,
21795         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
21796         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
21797         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
21798         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
21799         sqrtextenddfxf2_i387): Added amdfam10_decode.
21801         * config/i386/athlon.md (athlon_idirect_amdfam10,
21802         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
21803         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
21804         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
21805         athlon_ivector_store_amdfam10): New define_insn_reservation.
21806         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
21807         amdfam10.
21809 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21811         * config/i386/athlon.md (athlon_call_amdfam10,
21812         athlon_pop_amdfam10, athlon_lea_amdfam10): New
21813         define_insn_reservation.
21814         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
21815         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
21816         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
21818 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21820         * config/i386/athlon.md (athlon_sseld_amdfam10,
21821         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
21822         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
21824 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21826         * config/i386/athlon.md (athlon_sseins_amdfam10): New
21827         define_insn_reservation.
21828         * config/i386/i386.md (sseins): Added sseins to define_attr type
21829         and define_attr unit.
21830         * config/i386/sse.md: Set type attribute to sseins for insertq
21831         and insertqi.
21833 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21835         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
21836         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
21837         ssecomi_load_amdfam10, ssecomi_amdfam10,
21838         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
21839         define_insn_reservation.
21840         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
21842 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21844         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
21845         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
21846         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
21847         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
21848         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
21849         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
21850         define_insn_reservation.
21852         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
21853         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
21854         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
21855         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
21856         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
21858 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21860         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
21861         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
21862         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
21863         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
21864         athlon_ssemul_load_k8): Added amdfam10.
21866 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21868         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
21869         (x86_sse_unaligned_move_optimal): New variable.
21871         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
21872         m_AMDFAM10.
21873         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
21874         for unaligned vector SSE double/single precision loads for AMDFAM10.
21876 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21878         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
21879         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
21880         Define TARGET_CPU_DEFAULT_amdfam10.
21881         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
21882         (processor_type): Add PROCESSOR_AMDFAM10.
21884         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
21885         processor_type in config/i386/i386.h.
21886         Enable imul peepholes for TARGET_AMDFAM10.
21888         * config.gcc: Add support for --with-cpu option for amdfam10.
21890         * config/i386/i386.c (amdfam10_cost): New variable.
21891         (m_AMDFAM10): New macro.
21892         (m_ATHLON_K8_AMDFAM10): New macro.
21893         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
21894         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
21895         x86_promote_QImode, x86_integer_DFmode_moves,
21896         x86_partial_reg_dependency, x86_memory_mismatch_stall,
21897         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
21898         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
21899         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
21900         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
21901         Enable/disable for amdfam10.
21902         (override_options): Add amdfam10_cost to processor_target_table.
21903         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
21904         processor_alias_table.
21905         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
21906         (ix86_adjust_cost): Add code for amdfam10.
21908 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21910         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
21911         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
21912         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
21913         * config/i386/i386.h: Add builtin definition for SSE4A.
21914         * config/i386/i386.md: Add support for ABM instructions
21915         (popcnt and lzcnt).
21916         * config/i386/sse.md: Add support for SSE4A instructions
21917         (movntss, movntsd, extrq, insertq).
21918         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
21919         Add -march=amdfam10 flag.
21920         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
21921         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
21922         and amdfam10.
21923         * doc/extend.texi: Add documentation for SSE4A builtins.
21925 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
21927         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
21929 2007-02-05  Richard Guenther  <rguenther@suse.de>
21931         * tree-vectorizer.h (vectorizable_function): Add argument type
21932         argument, change return type.
21933         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
21934         * tree-vect-transform.c (vectorizable_function): Handle extra
21935         argument, return vectorized function decl.
21936         (build_vectorized_function_call): Remove.
21937         (vectorizable_call): Handle calls with result and argument types
21938         differing.  Handle loop vectorization factor correctly.
21939         * targhooks.c (default_builtin_vectorized_function): Adjust for
21940         extra argument.
21941         * targhooks.h (default_builtin_vectorized_function): Likewise.
21942         * target.h (builtin_vectorized_function): Add argument type
21943         argument.
21944         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
21945         extra argument, allow vectorizing of lrintf.
21946         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
21947         documentation of target hook.
21949 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
21951         PR target/30665
21952         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
21953         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
21954         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
21956 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21958         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
21959         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
21960         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
21961         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
21962         before canonicalizing sincos to cexpi.
21963         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
21965 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21967         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
21968         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
21969         (alpha_init_builtins): Use alpha_add_builtins to process tables.
21971 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21973         * mips-tfile.c (initialize_init_file): Correct endianness test.
21975 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
21977         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
21978         the 'y' constraint.
21980 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
21982         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
21983         saves in a PARALLEL before the register assignments.
21985 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
21987         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
21988         DWARF_FRAME_RETURN_COLUMN to be a general register.
21989         * dwarf2out.c (init_return_column_size): New function, split from...
21990         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
21991         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
21992         to be nongeneral registers.
21993         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
21994         integer registers.
21995         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
21996         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
21998 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
22000         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
22002 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
22004         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
22005         (remove_path): Use can_remove_branch_p and remove_branch instead
22006         of loop_delete_branch_edge.
22007         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
22008         (tree_transform_and_unroll_loop): Remove dead branches immediately.
22009         Update profile using scale_dominated_blocks_in_loop.
22010         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
22011         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
22012         (can_remove_branch_p, remove_branch): Declare.
22013         * tree-cfg.c (tree_can_remove_branch_p): New function.
22014         (tree_cfg_hooks): Add tree_can_remove_branch_p.
22015         * cfgrtl.c (rtl_can_remove_branch_p): New function.
22016         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
22018 2007-02-05  Jan Hubicka  <jh@suse.cz>
22020         PR middle-end/30696
22021         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
22022         nodes in cgraph, don't remove offline copy of the function.
22024 2007-02-04  Jan Hubicka  <jh@suse.cz>
22026         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
22027         vectors might cause maybe_lookup_element_for_expr to be called
22028         on non-sra-candidate.
22030 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
22032         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
22033         config/bfin/bfin.md, config/bfin/predicates.md: Follow
22034         spelling conventions.
22036 2007-02-04  Richard Guenther  <rguenther@suse.de>
22038         PR middle-end/30636
22039         * fold-const.c (try_move_mult_to_index): Make sure to not
22040         overflow one dimension of a multi-dimensional array access.
22042 2007-02-04  Jan Hubicka  <jh@suse.cz>
22044         * passes.c (init_optimization_passes): Reindent.
22046 2007-02-04  Jan Hubicka  <jh@suse.cz>
22047             Eric Botcazou  <ebotcazou@adacore.com>
22049         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
22050         (execute_fixup_cfg): Break out the abnormal goto code.
22051         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
22052         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
22053         (optimize_inline_calls): Call make_nonlocal_label_edges.
22055 2007-02-04  Jan Hubicka  <jh@suse.cz>
22057         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
22058         true when something was changed.
22059         (rename_ssa_copies): When something was changed, do
22060         TODO_remove_unused_locals.
22061         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
22062         add TODO_remove_unused_locals when instruction was removed.
22064 2007-02-04  Jan Hubicka  <jh@suse.cz>
22066         * ipa-inline.c (try_inline): Improve debug output; work on already
22067         inline edges too.
22068         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
22069         call try_inline for already inlined edges too when flattening;
22070         inline also functions that make callee growth but overall unit size
22071         reduce.
22073 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
22075         * config/m32c/bitops.md, config/m32c/jump.md,
22076         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
22077         config/m32r/m32r.h, config/m32r/m32r.md,
22078         config/m32r/predicates.md, config/m68hc11/larith.asm,
22079         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
22080         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
22081         config/mips/mips-protos.h, config/mips/mips.c,
22082         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
22083         config/mn10300/mn10300.h, config/mn10300/predicates.md,
22084         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
22085         spelling conventions.
22087         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
22088         Follow spelling conventions.
22090 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
22092         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
22093         warn about C++0x compatibility.
22095 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
22097         * config/h8300/h8300.c, config/h8300/h8300.h,
22098         config/h8300/h8300.md: Follow spelling conventions.
22100 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
22102         PR middle-end/30667
22103         * combine.c (try_combine): Do not substitute source operand
22104         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
22106 2007-02-03  Jan Hubicka  <jh@suse.cz>
22108         PR gcov-profile/30650
22109         * value-prof.c (stringop_block_profile): Fix handling of size counter;
22110         do not divide by zero for never executed counters.
22111         (tree_find_values_to_profile): Fix counters.
22112         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
22114 2007-02-03  Ian Lance Taylor  <iant@google.com>
22116         * lower-subreg.c (simple_move_operand): New static function,
22117         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
22118         operands.
22119         (simple_move): Call simple_move_operand.
22120         (find_decomposable_subregs): Add special handling of MEMs.
22121         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
22122         meaning of return value.  If we see a hard register, test whether
22123         it can store a word_mode value.  Change all callers.
22125 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22127         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
22128         ftrapv insns and expanders.
22129         (subdi3): Change define_expand operand 1 to arith11_operand, and
22130         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
22131         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
22132         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
22133         respectively.
22135         PR middle-end/30174
22136         * varasm.c (notice_global_symbol): Treat global objects as weak when
22137         flag_shlib is true.
22139 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22141         * emit-rtl.c (dconstpi): Delete.
22142         (dconstsqrt2): New.
22143         (init_emit_once): Delete dconstpi and init dconstsqrt2.
22144         * real.h (dconstpi): Delete.
22145         (dconstsqrt2): New.
22146         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
22147         (fold_builtin_hypot): Likewise.
22149 2007-02-03  Tom Tromey  <tromey@redhat.com>
22151         PR driver/30246
22152         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
22153         -gcoff3, -gxcoff3, -gvms3 implies -dD.
22155 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
22157         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
22158         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
22159         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
22160         config/rs6000/cell.md, config/rs6000/darwin.h,
22161         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
22162         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
22163         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
22164         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
22165         typos.  Follow spelling conventions.
22166         * doc/invoke.texi: Follow spelling conventions.
22168 2007-02-03  Roger Sayle  <roger@eyesopen.com>
22170         * simplify-rtx.c (simplify_relational_operation_1): Implement some
22171         canonicalization transformations that attempt to simplify integer
22172         constant comparisons to become comparisons against zero.
22174 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22176         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
22177         fabs(x)*sqrt(2).
22178         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
22179         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
22181 2007-02-02  Mike Stump  <mrs@apple.com>
22183         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
22184         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
22185         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
22186         generate a branch island.
22188 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
22190         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
22191         (xtensa_legitimate_address_p): New.
22192         (xtensa_legitimize_address): New.
22193         (xtensa_output_addr_const_extra): New.
22194         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
22195         (BASE_REG_P): New.
22196         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
22197         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
22198         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
22199         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
22200         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
22201         (xtensa_legitimize_address): New.
22202         (xtensa_output_addr_const_extra): New.
22204 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
22206         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
22208 2007-02-02  Ian Lance Taylor  <iant@google.com>
22210         * expmed.c (expand_divmod): Add comment.
22212 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
22214         * emit-rtl.c (renumber_insns): Remove.
22215         * flags.h: Remove the extern for flag_renumber_insns.
22216         * rtl.h: Remove the prototype for renumber_insns.
22217         * toplev.c (flag_renumber_insns): Remove.
22219 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
22221         Revert for x86 darwin:
22222         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
22224         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
22225         code before the following patch under TARGET_MACHO.
22226         (ix86_function_value_regno_p): Likewise.
22228 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22230         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
22231         COMPLEX_EXPR.
22233 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
22235         PR target/29682
22236         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
22237         loads to general or fp registers.  Add comments.
22238         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
22240 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
22242         * pointer-set.c (insert_aux): Only return insertion slot.
22243         (pointer_set_insert): Adjust.
22244         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
22245         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
22246         pointer_map_traverse): New.
22247         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
22248         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
22249         pointer_map_contains, pointer_map_traverse): Declare.
22251 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
22253         PR middle-end/30473
22254         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
22255         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
22257 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
22259         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
22261         (struct _dep): New type.
22262         (dep_t): New typedef.
22263         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
22264         (DEP_STATUS): New access macro.  The macro with the same name was
22265         renamed to DEP_LINK_STATUS.
22266         (dep_init): Declare function
22268         (struct _dep_link): New type.
22269         (dep_link_t): New typedef.
22270         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
22271         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
22272         (DEP_LINK_STATUS): New macro.
22273         (debug_dep_links): New debug function.
22275         (struct _deps_list): New type.
22276         (deps_list_t): New typedef.
22277         (DEPS_LIST_FIRST): New access macro.
22278         (FOR_EACH_DEP_LINK): New cycle macro.
22279         (create_deps_list, free_deps_list, delete_deps_list): Declare
22280         functions.
22281         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
22282         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
22283         (copy_deps_list_change_con): Ditto.
22285         (move_dep_link): Declare function.
22287         (struct _dep_node): New type.
22288         (dep_node_t): New typedef.
22289         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
22291         (struct haifa_insn_data.back_deps): New field to hold backward
22292         dependencies of the insn.
22293         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
22294         to deps_list_t.
22295         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
22296         Change its type to deps_list_t.
22297         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
22298         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
22299         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
22301         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
22303         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
22305         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
22306         and all callers.
22307         (dep_cost): Declare.
22309         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
22310         (ds_to_dk, dk_to_ds): New functions.
22312         (init_dep_1): New static function.
22313         (init_dep): New function.
22314         (copy_dep): New static function.
22316         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
22317         functions.
22318         (detach_dep_link): New static function.
22319         (move_dep_link): New function.
22321         (dep_links_consistent_p, dump_dep_links): New static functions.
22322         (debug_dep_links): New debugging function.
22324         (deps_obstack, dl_obstack, dn_obstack): New static variables.
22326         (alloc_deps_list, init_deps_list): New static functions.
22327         (create_deps_list): New function.
22328         (clear_deps_list): New static function.
22329         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
22330         (deps_list_consistent_p, dump_deps_list): New static functions.
22331         (debug_deps_list): New function.
22332         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
22333         functions.
22334         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
22336         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
22337         use new scheduler dependencies lists.
22338         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
22339         (sched_analyze): Ditto.  Initialize dependencies lists.
22340         (add_forw_dep, compute_forward_dependences): Update to use new
22341         scheduler dependencies lists.
22343         (init_dependency_caches): Init deps_obstack.
22344         (free_dependency_caches): Free deps_obstack.
22346         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
22347         new scheduler dependencies lists.
22348         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
22349         (add_back_forw_dep, delete_back_forw_dep): Ditto.
22351         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
22352         Update to use new scheduler dependencies lists.
22353         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
22354         (debug_dependencies): Ditto.
22355         (schedule_region): Update comments.
22357         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
22358         scheduler dependencies lists.
22359         (schedule_ebb): Update comments.
22361         * rtl.def (DEPS_LIST): Remove.
22363         * lists.c (unused_deps_list): Remove.
22364         (free_list): Update assertions.
22366         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
22367         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
22369         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
22370         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
22372         * haifa-sched.c (comments): Update.
22373         (insn_cost1): Remove.  Inline the code into insn_cost ().
22374         (insn_cost): Update to use new scheduler dependencies lists.  Move
22375         processing of the dependency cost to dep_cost ().
22376         (dep_cost): New function.  Use it instead of insn_cost () when
22377         evaluating cost of the dependency.  Use compatible interface to
22378         interact with the target.
22379         (priority): Update to use new scheduler dependencies lists.
22380         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
22381         with greater number of insns that depend on the insn.
22382         (schedule_insn): Update to use new scheduler dependencies lists.  Add
22383         code to free backward dependencies lists.  Inline and optimize code
22384         from resolve_dep () - see PR28071.
22385         (ok_for_early_queue_removal): Update to use new scheduler dependencies
22386         lists.  Update call to targetm.sched.is_costly_dependence hook.
22388         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
22389         scheduler dependencies lists.
22391         (resolve_dep): Remove.  Move the logic to schedule_insn ().
22392         (init_h_i_d): Initialize dependencies lists.
22394         (process_insn_depend_be_in_spec): Rename to
22395         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
22396         dependencies lists.
22397         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
22398         Update to use new scheduler dependencies lists.
22399         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
22401         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
22402         new scheduler dependencies lists.
22403         (build_intra_loop_deps): Ditto.
22405         * target.h (struct _dep): Declare to use in
22406         gcc_target.sched.is_costly_dependence.
22407         (struct gcc_target.sched.adjust_cost): Fix typo.
22408         (struct gcc_target.sched.is_costly_dependence): Change signature to
22409         use single dep_t parameter instead of an equivalent triad.
22410         (struct gcc_target.sched.adjust_cost_2): Remove.
22412         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
22414         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
22416         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
22417         documentation.
22418         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
22420         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
22421         (REG_DEP_TRUE): Document.
22423         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
22424         Change signature to correspond to the targetm.sched.adjust_cost hook.
22425         Update use in TARGET_SCHED_ADJUST_COST_2.
22426         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
22427         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
22428         new scheduler dependencies lists.
22429         (ia64_gen_check): Ditto.
22431         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
22432         scheduler dependencies lists.
22434         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
22435         signature to correspond to the targetm.sched.is_costly_dependence hook.
22436         (is_costly_group): Update to use new scheduler dependencies lists.
22438         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
22439         instead of INSN_COST () macro.
22441 2007-02-01  Ian Lance Taylor  <iant@google.com>
22443         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
22445 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
22447         * pa.md (tp_load): Correct mfctl instruction syntax.
22449 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
22451         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
22452         altivec_padding_size calculation on AIX.  Improve comment, add
22453         assert to verify that it's right.
22455         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
22456         64-bit.
22458 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
22460         PR inline-asm/28686
22461         * global.c (global_alloc): Add mising initialization of
22462         ELIMINABLE_REGSET.
22464 2007-02-01  Roger Sayle  <roger@eyesopen.com>
22466         * alias.c (init_alias_analysis): Correct whitespace.
22467         * bb-reorder.c (fix_edges_for_rarely_executed_code,
22468         partition_hot_cold_basic_blocks): Likewise.
22469         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
22470         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
22471         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
22472         fold_builtin_snprintf_chk, fold_builtin_printf,
22473         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
22474         do_mpfr_arg3, do_mpfr_sincos): Likewise.
22475         * cfgcleanup.c (cleanup_cfg): Likewise.
22476         * cfgexpand.c (tree_expand_cfg): Likewise.
22477         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
22478         * function.c (get_next_funcdef_no): Likewise.
22479         * gengtype.c (main): Likewise.
22480         * genmodes.c (main): Likewise.
22481         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
22482         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
22483         * ifcvt.c (noce_emit_move_insn): Likewise.
22484         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
22485         Likewise.
22486         * stor-layout.c (get_best_mode): Likewise.
22487         * tree-ssa-loop-niter.c (get_val_for): Likewise.
22488         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
22489         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
22490         perform_var_substitution, solve_graph): Likewise.
22491         * tree-vrp.c (vrp_finalize): Likewise.
22493 2007-02-01  Ian Lance Taylor  <iant@google.com>
22495         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
22496         high part of a paradoxical subreg, return a constant zero.
22498 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
22500         * toplev.c (lang_dependent_init): Call init_set_costs.
22501         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
22503 2007-02-01  Richard Guenther  <rguenther@suse.de>
22505         PR middle-end/30656
22506         * fold-const.c (fold_negate_expr): Allow negating a
22507         constant if overflow does not change.
22509 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22511         * doc/c-tree.texi (Expression trees): Improve markup.
22512         * doc/tm.texi (Register Classes, Addressing Modes)
22513         (Floating Point): Fix spacing after abbreviations.  Fix some
22514         typos.
22516 2007-02-01  Ben Elliston  <bje@au.ibm.com>
22518         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
22519         * doc/contrib.texi: Likewise.
22520         * doc/install.texi: Likewise.
22522 2007-01-31  Richard Henderson  <rth@redhat.com>
22523             Ian Lance Taylor  <iant@google.com>
22525         * lower-subreg.c: New file.
22526         * rtl.def (CONCATN): Define.
22527         * passes.c (init_optimization_passes): Add pass_lower_subreg and
22528         pass_lower_subreg2.
22529         * emit-rtl.c (update_reg_offset): New static function, broken out
22530         of gen_rtx_REG_offset.
22531         (gen_rtx_REG_offset): Call update_reg_offset.
22532         (gen_reg_rtx_offset): New function.
22533         * regclass.c: Revert patch of 2006-03-05, restoring
22534         reg_scan_update.
22535         (clear_reg_info_regno): New function.
22536         * dwarf2out.c (concatn_loc_descriptor): New static function.
22537         (loc_descriptor): Handle CONCATN.
22538         * common.opt (fsplit_wide_types): New option.
22539         * opts.c (decode_options): Set flag_split_wide_types when
22540         optimizing.
22541         * timevar.def (TV_LOWER_SUBREG): Define.
22542         * rtl.h (gen_reg_rtx_offset): Declare.
22543         (reg_scan_update): Declare.
22544         * regs.h (clear_reg_info_regno): Declare.
22545         * tree-pass.h (pass_lower_subreg): Declare.
22546         (pass_lower_subreg2): Declare.
22547         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
22548         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
22549         -fsplit-wide-types.
22550         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
22551         * Makefile.in (OBJS-common): Add lower-subreg.o.
22552         (lower-subreg.o): New target.
22554 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22556         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
22558 2007-01-31  Anatoly Sokolov <aesok@post.ru>
22560         PR target/19087
22561         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
22563 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22565         PR middle-end/29335
22566         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
22568 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
22570         * cfgloop.h: Include vec-prim.h.
22571         (enum li_flags): Remove LI_ONLY_OLD.
22572         (loop_iterator): Changed.
22573         (fel_next, fel_init): Iterate over loop tree.
22574         (FOR_EACH_LOOP_BREAK): New macro.
22575         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
22576         FOR_EACH_LOOP.
22577         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
22578         * modulo-sched.c (sms_schedule): Ditto.
22579         * tree-vectorizer.c (vectorize_loops): Ditto.
22580         * doc/loop.texi: Update information on loop numbering and behavior of
22581         FOR_EACH_LOOP wrto new loops.
22582         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
22583         add_to_evolution_1): Test nestedness of loops instead of comparing
22584         their numbers.
22585         * tree-chrec.c (chrec_fold_plus_poly_poly,
22586         chrec_fold_multiply_poly_poly, chrec_evaluate,
22587         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
22588         reset_evolution_in_loop): Ditto.
22589         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
22591 2007-01-31  Dirk Mueller  <dmueller@suse.de>
22593         * c-common.c (warn_about_parentheses): Separate warning about
22594         un-parenthized sequence of comparison operators from the one
22595         which is supposed to warn about x <= y <= z.
22597 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
22599         * optabs.h (enum optab_index): Add new OTI_isinf.
22600         (isinf_optab): Define corresponding macro.
22601         * optabs.c (init_optabs): Initialize isinf_optab.
22602         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
22603         patterns.
22604         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
22605         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
22606         using isinf_optab.
22607         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
22608         expand_builtin_interclass_mathfn.
22609         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
22610         * config/i386/i386.md (UNSPEC_FXAM): New constant.
22611         (fxam<mode>2_i387): New insn pattern.
22612         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
22613         built-in functions as x87 inline asm.
22615 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22617         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
22619 2007-01-30  Eric Christopher  <echristo@apple.com>
22621         * config.gcc: Add geode.
22623 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22625         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
22626         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
22627         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
22628         value-prof.c: Fix comment typos.
22630 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22632         PR c++/24745
22633         * doc/invoke.texi (Wpointer-arith): Document warning.
22635 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
22637         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
22638         the list of discrepancies from the draft TR.
22640 2007-01-30  Dirk Mueller  <dmueller@suse.de>
22642         PR c++/30601
22643         * doc/invoke.texi (-Wreturn-type): Update description to
22644         match new behavior.
22646 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
22648         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
22650 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
22652         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
22653         to handle optabs that operate on floating point input argument and
22654         output to integer output.
22655         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
22656         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
22657         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
22658         expand_builtin_interclass_mathfn ().
22659         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
22660         (ilogbsi2): Remove.
22661         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
22662         ilogbl built-in functions as x87 intrinsics.
22664 2007-01-30  Richard Guenther  <rguenther@suse.de>
22666         PR middle-end/27657
22667         * dwarf2out.c (reference_to_unused): Query varpool if the
22668         variable was output.
22670 2007-01-30  Richard Guenther  <rguenther@suse.de>
22672         PR middle-end/30313
22673         * passes.c (execute_one_pass): Reset in_gimple_form to not
22674         confuse non-unit-at-a-time mode.
22676 2007-01-29  Roger Sayle  <roger@eyesopen.com>
22677             Richard Guenther  <rguenther@suse.de>
22679         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
22680         avoid undefined behaviour on overflow.  Use force_fit_type_double
22681         to construct the constant with the specified TREE_OVERFLOW.
22683 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
22685         * config/dfp-bit.c: Add parameterized support for fp exceptions.
22686         * config/dfp-bit.h: Ditto.
22688 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22690         * c-decl.c (pop_scope): Replace warnings with call to
22691         warn_for_unused_label.
22692         * c-common.h (warn_for_unused_label): Declare.
22693         * c-common.c (warn_for_unused_label): Define.
22695 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22697         * tree-optimize.c (update_inlined_to_pointers): Delete unused
22698         function.
22700 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
22702         * Makefile.in (USER_H): Remove decfloat.h.
22703         * ginclude/decfloat.h: Delete, moving contents to ...
22704         * ginclude/float.h: Add support for decimal floating point,
22705         guarded by __STDC_WANT_DEC_FP__.
22707 2007-01-29  Mike Stump  <mrs@apple.com>
22709         * doc/gccint.texi (Top): Rename Loop Representation to Loop
22710         Analysis and Representation to resolve case insensitive conflict.
22711         * doc/loop.texi (Loop Analysis and Representation): Likewise.
22713 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
22715         * tree.h (struct tree_memory_tag): Add aliases member.
22716         (MTAG_ALIASES): New macro.
22717         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
22718         (add_may_alias): Remove pointer-set. Update for may_aliases being
22719         a bitmap.
22720         (mark_aliases_call_clobbered): Update for may_aliases being a
22721         bitmap.
22722         (compute_tag_properties): Ditto.
22723         (create_partition_for): Ditto.
22724         (compute_memory_partitions): Ditto.
22725         (dump_may_aliases_for): Ditto.
22726         (is_aliased_with): Ditto.
22727         (add_may_alias_for_new_tag): Ditto.
22728         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
22729         (compute_is_aliased): New function.
22730         (compute_may_aliases): Call compute_is_aliased).
22731         (init_alias_info): Initialize alias_bitmap_obstack.
22732         (union_alias_set_into): New function.
22733         (compute_flow_sensitive_aliasing): Use union_aliases_into.
22734         (have_common_aliases_p): Rewrite to take two bitmaps and use
22735         intersection.
22736         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
22737         Update for bitmaps.
22738         (finalize_ref_all_pointers): Update for add_may_alias changes.
22739         (new_type_alias): Ditto.
22740         * tree-flow-inline.h (may_aliases): Return a bitmap.
22741         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
22742         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
22743         may_aliases being a bitmap.
22744         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
22745         may_aliases now returns a bitmap.
22746         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
22747         being a bitmap.
22748         * tree-ssa-operands.c (add_virtual_operand): Update for
22749         may_aliases being a bitmap.
22751 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
22753         PR tree-optimization/30630
22754         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
22755         variable as changed.
22757 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
22759         PR c++/28266
22760         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
22761         expanded only once even if an error occurs.
22763 2007-01-29  Ben Elliston  <bje@au.ibm.com>
22765         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
22766         (__gcov_average_profiler): Likewise.
22767         (__gcov_ior_profiler): Likewise.
22768         (__gcov_merge_ior): Likewise.
22770 2007-01-28  Jan Hubicka  <jh@suse.cz>
22772         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
22773         * value-prof.c (stringop_block_profile): Likewise.
22775 2007-01-28  Jan Hubicka  <jh@suse.cz>
22777         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
22778         Add variant handling histograms; add wrapper.
22779         (clear_storage_via_libcall): Export.
22780         (emit_block_move_hints): Break out from ...; add histograms.
22781         (emit_block_move): ... this one.
22782         (clear_storage_hints): Break out from ...; add histograms.
22783         (clear_storage): ... this one.
22784         (set_storage_via_memset): Handle histogram.
22785         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
22786         (clear_storage_hints, clear_storage_via_libcall): Declare.
22787         (set_storage_via_setmem): Update prototype.
22788         * doc/md.texi (movmem, setmem): Document new arguments.
22790         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
22791         Add new histograms.
22792         (stringop_block_profile): New global function.
22793         (tree_stringops_values_to_profile): Profile block size and alignment.
22794         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
22795         HIST_TYPE_IOR.
22796         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
22797         (stringop_block_profile): Declare.
22798         * builtins.c: Include value-prof.h.
22799         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
22800         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
22801         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
22802         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
22803         * profile.c (instrument_values): Add new counters.
22804         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
22805         calls.
22806         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
22807         (tree_init_edge_profiler): Build new profilers.
22808         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
22809         (pass_tree_profile): Add dump.
22810         (tree_profile_hooks): Update.
22811         * Makefile.in (LIBGCOV): Add new constants.
22812         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
22813         __gcov_ior_profiler): New.
22814         * i386.md (movmem/setmem expanders): Add new optional arguments.
22816 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
22818         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
22820 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
22822         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
22823         (tree_unswitch_single_loop): Pass eni_size_weights to
22824         tree_num_loop_insns.
22825         * tree-ssa-loop-manip.c: Include tree-inline.h.
22826         (can_unroll_loop_p): Pass eni_size_weights to
22827         tree_num_loop_insns.
22828         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
22829         Pass eni_size_weights to estimate_num_insns.
22830         * tree.h (init_inline_once): Export.
22831         * toplev.c (backend_init): Call init_inline_once.
22832         * cgraphunit.c (cgraph_process_new_functions,
22833         cgraph_analyze_function): Pass eni_inlining_weights to
22834         estimate_num_insns.
22835         * ipa-inline.c (compute_inline_parameters): Ditto.
22836         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
22837         to estimate_num_insns.
22838         (try_unroll_loop_completely): Pass eni_size_weights to
22839         tree_num_loop_insns.
22840         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
22841         ot estimate_num_insns.
22842         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
22843         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
22844         * tree-inline.c (eni_inlining_weights, eni_size_weights,
22845         eni_time_weights): New variables.
22846         (init_inline_once): Initialize them.
22847         (struct eni_data): Mew.
22848         (estimate_num_insns_1, estimate_num_insns): Use weights.
22849         * tree-inline.h (struct eni_weights_d): New.
22850         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
22851         (estimate_num_insns): Declaration changed.
22852         * cfgloop.h (tree_num_loop_insns): Declaration changed.
22853         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
22854         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
22856 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
22858         * tree-data-ref.c (conflict_fn): Assert that the number of affine
22859         relations in the conflict function is valid.
22861 2007-01-27  Ian Lance Taylor  <iant@google.com>
22863         * common.opt: Add fstrict-overflow.
22864         * opts.c (decode_options): Set flag_strict_overflow if -O2.
22865         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
22866         (TYPE_OVERFLOW_UNDEFINED): Define.
22867         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
22868         Replace all uses.
22869         * tree.h (TYPE_TRAP_SIGNED): Don't define.
22870         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
22871         (fold_negate_expr): Likewise.
22872         (make_range): Likewise.
22873         (extract_muldiv_1): Likewise.
22874         (maybe_canonicalize_comparison): Likewise.
22875         (fold_comparison): Likewise.
22876         (fold_binary): Likewise.
22877         (tree_expr_nonnegative_p): Likewise.
22878         (tree_expr_nonzero_p): Likewise.
22879         * tree-vrp.c (compare_values): Likewise.
22880         (extract_range_from_binary_expr): Likewise.
22881         (extract_range_from_unary_expr): Likewise.
22882         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
22883         Likewise.
22884         (nowrap_type_p): Likewise.
22885         * tree-scalar-evolution.c (simple_iv): Likewise.
22886         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
22887         (build_range_check): Likewise.
22888         (extract_muldiv_1): Likewise.
22889         (fold_comparison): Likewise.
22890         * tree-vrp.c (vrp_int_const_binop): Likewise.
22891         (extract_range_from_unary_expr): Likewise.
22892         * convert.c (convert_to_integer): Likewise.
22893         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
22894         (fold_comparison): Likewise.
22895         (fold_binary): Likewise.
22896         * optabs.c (optab_for_tree_code): Likewise.
22897         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
22898         * simplify-rtx.c (simplify_const_relational_operation): Check
22899         flag_strict_overflow and flag_trapv.
22900         (simplify_const_relational_operation): Likewise.
22901         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
22902         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
22903         -fstrict-overflow.
22905 2007-01-27  Roger Sayle  <roger@eyesopen.com>
22907         * tree.c (tree_fold_gcd): Delete.
22908         * tree.h (tree_fold_gcd): Remove prototype.
22909         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
22910         test whether one constant integer is a multiple of another.  Instead
22911         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
22912         * fold-const.c (multiple_of_p):  We've determined both TOP and
22913         BOTTOM are integer constants so we can call int_const_binop directly
22914         instead of the more generic const_binop.
22916 2007-01-27  Roger Sayle  <roger@eyesopen.com>
22918         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
22919         1*X check that the constant hasn't overflowed, to preserve the
22920         TREE_OVERFLOW bit.
22921         (round_up): Provide an efficient implementation when rouding-up an
22922         INTEGER_CST to a power-of-two.
22924 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22926         * doc/sourcebuild.texi: Add comma for clarity.
22927         * doc/extend.texi: Fix some typos.
22928         * doc/passes.texi: Likewise.
22929         * doc/cppinternals.texi: Likewise.
22930         * doc/c-tree.texi: Likewise.
22931         * doc/tree-ssa.texi: Likewise.
22932         * doc/install.texi: Likewise.
22934 2007-01-27  Jan Hubicka  <jh@suse.cz>
22936         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
22937         (pass_sra): Do not require alias information.
22938         * passes.c (init_optimization_passes): Add SRA
22940 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
22942         * tracer.c (rest_of_handle_tracer): We already cleaned
22943         up the CFG in tracer() so don't do it here again.
22944         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
22945         cleanup_cfg here, either.  And don't call renumber_insns.
22947         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
22948         and BB_HEAD are in the insn stream here.  Instead make sure
22949         that BB_INSN is valid on all insns.  Also, do check here that
22950         there are no pending branch predictions...
22951         (rtl_verify_flow_info): ...instead of doing it here.  Checks
22952         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
22953         here.
22955 2007-01-26  Roger Sayle  <roger@eyesopen.com>
22957         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
22958         function to simplify/factorize operand order canonicalization.
22959         (ix86_fixup_binary_operands): Reorganize using the above function.
22960         (ix86_binary_operator_ok): Likewise.
22962 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
22964         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
22965         file scope from optimize_attrs.
22966         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
22967         up search.
22968         (optimize_attrs): Clear insn_code_values after freeing it.
22970 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
22972         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
22973         a parts.base assignment.
22975 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
22977         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
22978         (compute_subscript_distance, initialize_data_dependence_relation,
22979         finalize_ddr_dependent, analyze_ziv_subscript,
22980         analyze_siv_subscript_cst_affine,
22981         compute_overlap_steps_for_affine_univar,
22982         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
22983         analyze_siv_subscript, analyze_miv_subscript,
22984         analyze_overlapping_iterations, subscript_dependence_tester_1,
22985         compute_self_dependence, free_dependence_relation): Work
22986         with affine_fn instead of chrecs.
22987         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
22988         common_affine_function, affine_function_base,
22989         affine_function_constant_p, affine_fn_op, affine_fn_plus,
22990         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
22991         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
22992         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
22993         (all_chrecs_equal_p): Removed.
22994         * tree-data-ref.h (affine_fn, conflict_function): New types.
22995         (struct subscript): Change type of conflicting_iterations_in_a
22996         and conflicting_iterations_in_b.
22998 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
23000         PR other/30182
23001         * config/pa/pa.h (TARGET_HPUX_11): New.
23002         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
23003         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
23005 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
23006         Richard Guenther  <rguenther@suse.de>
23008         * tree-ssa-structalias.c (solve_graph): Handle case
23009         we merged the variable to another.
23011 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23013         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
23014         functions.
23016         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
23017         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
23019 2007-01-25  DJ Delorie  <dj@redhat.com>
23021         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
23022         allow changes to modes which don't fit in those registers.
23024         * reload1.c (choose_reload_regs): Check for invalid subregs before
23025         computing their locations, not after.
23027 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
23029         PR 25127
23030         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
23031         save Altivec registers in an eh_return function.
23032         (compute_vrsave_mask): Likewise.
23033         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
23034         for saving Altivec registers.
23035         (rs6000_emit_prologue): Don't allocate stack twice in
23036         eh_return function.  Correct expected value of altivec_save_offset
23037         when using save_world.  Describe save of R0 to stack when using
23038         save_world.  Describe stack pointer adjustment when using
23039         save_world.  Remove duplicated eh_return parameter register saving.
23040         Update sp_offset variable after save_world.
23041         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
23042         darwin-world.asm.
23043         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
23044         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
23045         implies Altivec.
23047 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
23049         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
23051 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
23053         PR other/30182
23054         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
23055         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
23057 2007-01-25  Richard Guenther  <rguenther@suse.de>
23059         * doc/invoke.texi (-Wcoverage-mismatch): Document.
23060         * common.opt (-Wcoverage-mismatch): New warning option.
23061         * coverage.c (get_coverage_counts): Ignore coverage mismatch
23062         if -Wcoverage-mismatch is given.
23064 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
23066         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
23067         (ipcp_driver): Change to static definition.
23068         Add dumping of the ifunctions.
23069         (constant_val_insert): Remove unused parameter. Support for SSA.
23070         (ipcp_propagate_const): Support for SSA.
23071         (ipcp_profile_bb_print): Print only analyzed nodes.
23072         (ipcp_replace_map_create): Remove support for Fortran constant
23073         for now.
23074         * ipa-prop.c (ipa_method_modify_stmt,
23075         ipa_callsite_compute_param): Support for SSA.
23076         * ipa-prop.h (ipcp_driver): Remove declaration.
23077         (IS_VALID_TREE_MAP_INDEX): Add define.
23079 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
23081         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
23083 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23085         PR middle-end/30447
23086         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
23087         constant argument to cabs and do it without checking for
23088         -funsafe-math-optimizations.
23090 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
23092         * c-common.h (RID_FIRST_CXX0X): New.
23093         (RID_LAST_CXX0X): New.
23094         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
23095         by -Wall.
23096         * c.opt (Wc++0x-compat): New.
23097         * doc/invoke.texi (-Wc++0x-compat): Document.
23099 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23101         * builtins.c (fold_builtin_carg): New.
23102         (fold_builtin_1): Use it.
23104 2007-01-24  Jan Hubicka  <jh@suse.cz>
23106         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
23108         * ipa-inline.c (initial_insns, max_insns): Delete.
23109         (compute_max_insns): New function.
23110         (cgraph_decide_inlining_of_small_function): Use it; take minimal
23111         amount of insns as base for code growth.
23112         (cgraph_decide_inlining): Make initial_insns local; do not compute
23113         max_insns.
23114         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
23115         * doc/invoke.texi (inline-unit-growth): Update docs.
23117 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
23119         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
23120         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
23121         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
23122         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
23123         for CPUs that have PTA_CX16 set.
23125         PR middle-end/27416
23126         * gimplify.c (omp_check_private): New function.
23127         (gimplify_scan_omp_clauses): Use it for
23128         firstprivate/lastprivate/reduction.
23130         PR middle-end/30494
23131         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
23132         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
23134         PR middle-end/30421
23135         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
23136         If lower_lastprivate_clauses emits some statements, append them
23137         to dlist rather than body_p and to body_p append an initializer.
23138         (lower_omp_for): Adjust caller.
23140 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
23142         * target.h (globalize_decl_name): New.
23143         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
23144         * output.h (default_globalize_decl_name): New.
23145         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
23146         globalize_label.
23147         (globalize_decl): Ditto.
23148         (default_globalize_decl_name): New.
23149         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
23150         (ia64_handle_version_id_attribute): New.
23151         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
23152         (ia64_asm_output_external): Use globalize_decl_name instead
23153         of globalize_label.
23154         * doc/extend.texi (version_id): New pragma.
23155         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
23157 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23159         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
23160         _uleb128_t and _Unwind_SWord with _sleb128_t.
23161         * unwind-dw2.c (extract_cie_info, execute_stack_op,
23162         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
23163         Likewise.
23164         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
23165         * unwind-pe.h (read_uleb128, read_sleb128,
23166         read_encoded_value_with_base): Likewise.
23167         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
23169 2007-01-24  Richard Guenther  <rguenther@suse.de>
23171         * builtins.c (expand_builtin_cexpi): Get the fndecl
23172         for cexp in the correct way.
23174 2007-01-24  Jan Hubicka  <jh@suse.cz>
23176         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
23177         of calls.
23179 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23181         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
23182         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
23183         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
23184         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
23185         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
23186         __SIZEOF_PTRDIFF_T__.
23187         * doc/cpp.texi: Documentation for the new builtin macros added.
23189 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
23191         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
23192         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
23193         instead of operands[2] to avoid access past the end of array.
23195 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
23197         * reload1.c (emit_reload_insns): Pass the reload register
23198         for a non-spill output reload through forget_old_reloads_1.
23200 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
23202         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
23203         _SOFT_DOUBLE if doubles use software floating-point.
23204         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
23205         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
23206         * config/rs6000/darwin-ldouble.c: Also compile functions for
23207         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
23208         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
23209         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
23210         commented-out long double override.
23211         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
23212         * config/rs6000/eabispe.h: Likewise.
23213         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
23214         long double for non-SPE.
23215         (rs6000_handle_option): Likewise.
23216         (invalid_e500_subreg): Disallow more subregs involding DImode,
23217         DFmode, TImode or TFmode.
23218         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
23219         E500 double.
23220         (legitimate_lo_sum_address_p): Also check for TFmode for E500
23221         double.
23222         (rs6000_legitimize_address): Also handle TFmode for E500 double.
23223         (rs6000_legitimize_reload_address): Also handle TFmode for E500
23224         double.
23225         (rs6000_legitimate_address): Also check for TFmode for E500
23226         double.
23227         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
23228         (spe_build_register_parallel): Handle TFmode and TCmode.
23229         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
23230         double.
23231         (function_arg): Handle TFmode and TCmode for E500 double.
23232         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
23233         in general.
23234         (print_operand): Handle TFmode and TImode for %y.
23235         (rs6000_generate_compare): Handle TFmode comparisons for E500
23236         double.
23237         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
23238         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
23239         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
23240         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
23241         TFmode for E500 double.
23242         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
23243         (floatsidf2): Enable for E500 double.
23244         (movtf_softfloat): Use rs6000_nonimmediate_operand.
23245         (extenddftf2): Change to extenddftf2_fprs.
23246         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
23247         depending on TARGET_E500_DOUBLE.
23248         (extendsftf2): Enable for E500 double.
23249         (trunctfdf2): Enable for E500 double.
23250         (trunctfsf2): Change to trunctfsf2_fprs.
23251         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
23252         depending on TARGET_E500_DOUBLE.
23253         (floatsitf2): Enable for E500 double.
23254         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
23255         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
23256         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
23257         (negtf2): Change to negtf2_internal.
23258         (negtf2): New expander.
23259         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
23260         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
23261         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
23262         (movdi_internal32): Use rs6000_nonimmediate_operand.
23263         (unnamed splitter): Likewise.
23264         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
23265         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
23266         (SPE64TF, DITI): New mode macros.
23267         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
23268         modes.
23269         (frob_tf_ti): New.
23270         (frob_<mode>_di_2): New.
23271         (frob_tf_di_8_2): New.
23272         (frob_di_df): Change to frob_di_<mode>; allow more modes.
23273         (frob_ti_tf): New.
23274         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
23275         more modes.
23276         (frob_ti_<mode>_8_2): New.
23277         (frob_ti_tf_2): New.
23278         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
23279         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
23280         TFmode.
23281         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
23282         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
23283         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
23284         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
23285         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
23286         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
23287         tsttflt_gp): New.
23289 2007-01-23  Ian Lance Taylor  <iant@google.com>
23291         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
23292         insn-*.o first.
23293         (OBJS-archive): Reformat, alphabetize.
23294         (OBJS): Change out_object_file to OBJS-md.
23296 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
23298         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
23299         JUMP_P and CALL_P predicates where applicable.
23300         * config/i386/i386.c: Ditto.
23301         * config/i386/i386.md: Ditto.
23302         * config/i386/mmx.md: Ditto.
23303         * config/i386/predicates.md: Ditto.
23305 2007-01-22  Andreas Schwab  <schwab@suse.de>
23307         * config/m68k/m68k.h: Fix comment.
23309 2007-01-22  Jan Hubicka  <jh@suse.cz>
23311         * passes.c (init_optimization_passes): Do not rerun
23312         pass_early_warn_uninitialized.
23314 2007-01-22  Richard Guenther  <rguenther@suse.de>
23316         PR tree-optimization/30038
23317         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
23318         function.
23319         (execute_cse_sincos_1): Likewise.
23320         (execute_cse_sincos): Likewise.
23321         (gate_cse_sincos): Likewise.
23322         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
23323         the cexpi() canonicalization of sincos().
23324         * tree-pass.h (pass_cse_sincos): Declare.
23325         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
23327 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
23329         PR rtl-optimization/29329
23330         * combine.c (replaced_rhs_insn): Rename to i2mod.
23331         (replaced_rhs_value): Rename to i2mod_new_rhs.
23332         (i2mod_old_rhs): New global variable.
23333         (combine_instructions): Adjust for above change.  Save a copy of
23334         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
23335         note are substituted in the second instruction.
23336         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
23337         ditch the note if it pertains to the second eliminated register
23338         and this register is mentioned in i2mod_old_rhs.
23340         Revert:
23341         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
23343         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
23344         the insn to which the note was originally attached.
23346 2007-01-21  Jan Hubicka  <jh@suse.cz>
23348         * ipa-inline.c (inlining_mode): Comment, move up.
23349         (cgraph_decide_inlining_incrementally): Do not perform inlining
23350         itself; fix handling of flattening of self recursive functions.
23351         (cgraph_find_cycles): Remove.
23352         (cgraph_flatten_node): Remove.
23353         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
23354         (try_inline): New function.
23355         (cgraph_early_inlining): Update call of
23356         cgraph_decide_inlining_incrementally.  Apply inlining here.
23357         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
23359 2007-01-21  Dirk Mueller  <dmueller@suse.de>
23361         PR bootstrap/30511
23362         * tree-vrp.c (check_array_bounds): do not warn
23363         about ADDR_EXPR's of ARRAY_REF's which are immediately
23364         used in binary expressions.
23366 2007-01-21  Ira Rosen  <irar@il.ibm.com>
23368         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
23369         read_write_dep and macros for its access.
23370         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
23371         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
23372         argument, call vect_check_interleaving for every independent pair of
23373         data-refs. Mark loads that access the same memory location as a store
23374         in the loop.
23375         (vect_check_dependences): Remove.
23376         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
23377         call, fix the call to vect_analyze_data_ref_dependence.
23378         (vect_analyze_data_ref_access): For statements that access the same
23379         data-ref, check that they are not stores; for loads, check that there
23380         is no store that access the same location.
23382 2007-01-20  Roger Sayle  <roger@eyesopen.com>
23383             Joseph Myers  <joseph@codesourcery.com>
23385         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
23386         (-fdump-rtl-stack): Likewise.
23387         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
23388         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
23389         (-mpt-fixed): Use @minus{} for minus sign.
23390         (Using Precompiled Headers): Fix under/overfull hbox.
23392 2007-01-20  Jan Hubicka  <jh@suse.cz>
23394         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
23395         place within annotation.
23397 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23399         * pa.c (output_move_double): Change array size of xoperands to 4.
23401 2007-01-20  Jan Hubicka  <jh@suse.cz>
23403         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
23404         as temporary.
23406 2007-01-19  Ian Lance Taylor  <iant@google.com>
23408         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
23409         constant to unsigned HOST_WIDE_INT before negating.
23411 2007-01-19  Ian Lance Taylor  <iant@google.com>
23413         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
23414         to unsigned.
23415         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
23416         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
23417         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
23418         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
23419         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
23420         (realloc_vdef, realloc_vuse): Change second parameter to
23421         unsigned.
23422         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
23423         fields to unsigned.
23424         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
23425         unsigned. Change x and lim locals to unsigned.
23426         (realloc_vdef, realloc_vuse): Change num_elem parameter to
23427         unsigned.
23428         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
23429         (copy_virtual_operands): Change i and n locals to unsigned.
23431 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23433         PR middle-end/29335
23434         * builtins.c (fold_builtin_1): Handle builtin fdim.
23436 2007-01-20  Jan Hubicka  <jh@suse.cz>
23438         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
23439         * tree-ssa-structalias.c (compute_points_to_sets): Do call
23440         init_alias_heapvars.
23441         (init_alias_heapvars): Initialize only when not already initialized.
23442         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
23444 2007-01-19  Roger Sayle  <roger@eyesopen.com>
23446         * common.opt (fsigned-zeros): New command line option.
23447         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
23448         of flag_unsafe_math_optimizations.
23449         * opts.c (set_fast_math_flags): The -ffast-math command line option
23450         implies -fno-signed-zeros.
23451         (fast_math_flags_set_p): Likewise.
23453         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
23454         the documentation of -ffast-math appropriately.  Wrap long lines.
23456 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
23458         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
23459         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
23461 2007-01-19  Tomas Bily  <tbily@suse.cz>
23463         * cgraphunit.c (cgraph_finalize_function): Updating of pid
23464         * tree-profile.c:
23465         (tree_init_ic_make_global_vars): New function
23466         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
23467         (tree_gen_ic_profiler): New function
23468         (tree_gen_ic_func_profiler): New function
23469         (tree_profiling): Added calling of tree_gen_ic_func_profiler
23470         (tree_profile_hooks): Added hook for indirec/virtual calls
23471         * value-prof.c (tree_find_values_to_profile): New case for
23472         indirect calls
23473         (tree_values_to_profile): Call for determining indirect/virtual
23474         counters
23475         (tree_indirect_call_to_profile): New function
23476         (tree_ic_transform): New function
23477         (tree_ic): New function
23478         (find_func_by_pid): New function
23479         (init_pid_map): New function
23480         (tree_value_profile_transformations): Added check for
23481         indirect/virtual call transformation
23482         * value-prof.h (enum hist_type): New counter type for
23483         indirect/virtual calls
23484         (profile_hooks): Added new hook for profiling indirect/virtual
23485         calls
23486         * profile.c (instrument_values): New case for indirect/virtual
23487         call added
23488         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
23489         (GCOV_COUNTER_V_INDIR): New counter type
23490         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
23491         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
23492         call added
23493         * cgraph.c: Definition of cgraph_max_pid
23494         (cgraph_create_node): Default init of pid attribute
23495         * cgraph.h: Declaration of cgraph_max_pid
23496         (struct cgraph_node): Added pid attribute
23497         * libgcov.c (__gcov_indirect_call_profiler): New function
23498         (__gcov_one_value_profiler_body): New function
23499         (__gcov_one_value_profiler): Body was moved to
23500         __gcov_one_value_profiler_body and calls it
23502 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
23504         * doc/gty.texi (Options): Document the mark_hook option to GTY.
23505         * gengtype.c (write_types_data, write_func_for_structure,
23506         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
23507         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
23508         (walk_type, write_func_for_structure): Generate the mark_hook if
23509         needed.
23511 2007-01-19  Jan Hubicka  <jh@suse.cz>
23513         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
23514         'early' argument take inlining mode argument specifying whether to
23515         inline for size/speeed or all functions; add support for flattening;
23516         improve dumpting.
23517         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
23519 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23521         PR c++/17947
23522         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
23523         the name of the declared identifier.
23525 2007-01-19  Dirk Mueller  <dmueller@suse.de>
23527         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
23528         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
23529         duplicate evaluation.
23531 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
23533         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
23534         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
23535         to XFMode, use acosxf2 and truncate result to requested mode.
23536         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
23537         (asin<mode>2): Similarly, with asin expanders.
23538         (*fscalexf4_i387): Rename from *fscalexf4.
23539         (expNcorexf3): New expander.
23540         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
23541         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
23542         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
23543         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
23544         patterns for SSE math.
23545         (exp10<mode>2): Similarly, with exp10 expanders.
23546         (exp2<mode>2): Similarly, with exp2 expanders.
23547         (expm1<mode>2): Similarly, with expm1 expanders.
23548         (ldexp<mode>3): Similarly, with ldexp expanders.
23549         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
23550         Use gen_truncxf<mode>2_i387_noop to truncate result.
23552 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23554         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
23555         for ColdFire targets.
23557 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
23558             Richard Sandiford  <richard@codesourcery.com>
23560         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
23561         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
23562         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
23563         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
23564         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
23565         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
23567 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23569         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
23570         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
23571         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
23572         (*adddi_dilshr32_cf): New pattern.
23573         (adddi3, subdi3): Remove first alternatives.
23575 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23577         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
23578         implemented using move.l, do not use its cc result for floating-point
23579         comparisons.
23581 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23583         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
23584         from accepting 's' constraints if flag_pic.
23586 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23588         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
23589         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
23590         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
23591         condition from TARGET_68881 to TARGET_HARD_FLOAT.
23593 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
23595         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
23596         ColdFire alternatives.
23597         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
23598         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
23599         architectures that support ff1 instruction.
23601 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23602             Julian Brown  <julian@codesourcery.com>
23604         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
23605         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
23606         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
23607         Add commentary.
23609 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23611         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
23612         and return a bool.
23613         (output_move_const_into_data_reg, output_move_simode_const): Delete.
23614         * config/m68k/m68k.c (const_method, const_int_cost): Take a
23615         HOST_WIDE_INT instead of an rtx.
23616         (m68k_rtx_costs): Update call accordingly.
23617         (output_move_const_into_data_reg): Likewise.  Fix formatting.
23618         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
23619         Return a bool.
23620         (output_move_simode_const): Update calls after above changes.
23621         Rework to use automatic variables and predicates like MEM_P.
23622         * config/m68k/m68k.md (pushexthisi_const): Update call to
23623         valid_mov3q_const.
23625 2007-01-19  Dirk Mueller  <dmueller@suse.de>
23627         * tree-ssa-alias.c (perform_var_substitution): Fix typo
23628         in dump_flags test.
23630 2007-01-19  Richard Guenther  <rguenther@suse.de>
23632         * builtins.c (expand_builtin_cexpi): Fall back to expanding
23633         via cexp in case sincos is not available.
23635 2007-01-19  Richard Guenther  <rguenther@suse.de>
23637         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
23638         * defaults.h (TARGET_HAS_SINCOS): Default to off.
23639         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
23640         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
23641         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
23642         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
23643         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
23644         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
23646 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
23648         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
23649         New insn patterns.
23650         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
23651         (atan2xf3): Directly generate RTL pattern.
23652         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
23653         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
23654         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23655         disable patterns for SSE math.
23656         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
23657         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
23658         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23659         disable patterns for SSE math.
23661 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
23663         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
23665 2007-01-18  Roger Sayle  <roger@eyesopen.com>
23667         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
23668         VIEW_CONVERT_EXPR to the same type as it's operand.
23670 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
23672         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
23673         configured for long double 128.
23675 2007-01-18  Mike Stump  <mrs@apple.com>
23677         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
23678         error.
23680 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
23682         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
23683         type correct.
23685 2007-01-18  Jan Hubicka  <jh@suse.cz>
23687         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
23688         greater than NUM_VOP_FREE_BUCKETS.
23690 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
23692         * tree-ssa-structalias.c: Update comments.
23693         (ptabitmap_obstack): Removed.
23694         (pta_obstack): New.
23695         (oldpta_obstack): Ditto.
23696         (stats): Add a few members.
23697         (struct variable_info): Remove node, complex, address_taken, and
23698         indirect_target members. Add oldsolution member.
23699         (new_var_info): Do not initialize removed members.
23700         (constraint_expr_type): Remove INCLUDES.
23701         (constraint_graph): Add size, implicit_preds, rep,
23702         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
23703         (FIRST_REF_NODE): New macro.
23704         (LAST_REF_NODE): Ditto.
23705         (FIRST_ADDR_NODE): Ditto.
23706         (find): New function.
23707         (unite): Ditto.
23708         (dump_constraint): Do not handle INCLUDES.
23709         (insert_into_complex): Do not insert duplicate constraints.
23710         (condense_varmap_nodes): Renamed and rewritten into ...
23711         (merge_node_constraints): This. Also fix bug in handling of
23712         offseted copy constraints.
23713         (clear_edges_for_node): No longer need to deal with preds at all,
23714         or removing associated preds/succs.
23715         (merge_graph_nodes): Deal with indirect_cycles.
23716         Don't deal with predecessors.
23717         (add_implicit_graph_edge): New function.
23718         (add_pred_graph_edge): Ditto.
23719         (add_graph_edge): Don't deal with predecessors.
23720         (build_constraint_graph): Removed.
23721         (build_pred_graph): New function.
23722         (build_succ_graph): Ditto.
23723         (struct scc_info): Removed in_component. Added roots, dfs, and
23724         node_mapping. Remove visited_index, unification_queue.
23725         (scc_visit): Deal with union-find we do now.
23726         Deal with cycles with REF nodes.
23727         (collapse_nodes): Renamed and rewritten to ...
23728         (unify_nodes): This.
23729         (process_unification_queue): Removed.
23730         (topo_visit): Cleanup
23731         (do_da_constraint): Use find.
23732         (do_sd_constraint): Ditto.
23733         (do_ds_constraint): Ditto.
23734         (do_complex_constraint): Ditto.
23735         (init_scc_info): Update for removed and added members.
23736         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
23737         (find_indirect_cycles): This.
23738         (equivalence_class): New variable.
23739         (label_visit): New function.
23740         (perform_variable_substitution): Rewritten.
23741         (free_var_substitution_info): New function.
23742         (find_equivalent_node): Ditto.
23743         (move_complex_constraints): Ditto.
23744         (eliminate_indirect_cycles): Ditto.
23745         (solve_graph): Only propagate changed bits.
23746         Use indirect cycle elimination.
23747         Use find.
23748         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
23749         (tree_id_eq): Renamed to ...
23750         (tree_vi_eq): This. Update for member change
23751         (insert_id_for_tree): Renamed and rewritten to ...
23752         (insert_vi_for_tree): This.
23753         (lookup_id_for_tree): Renamed and rewritten to ...
23754         (lookup_vi_for_tree): This.
23755         (get_id_for_tree): Renamed and rewritten to ...
23756         (get_vi_for_tree): Ditto.
23757         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
23758         (process_constraint): Don't handle INCLUDES.
23759         Remove special ADDRESSOF case.
23760         (find_func_aliases): Rewrite to use vi functions instead of id
23761         ones.
23762         (create_function_info_for): Ditto.
23763         (create_variable_info_for): Ditto.
23764         (intra_create_variable_infos): Ditto.
23765         (merge_smts_into): Ditto.
23766         (find_what_p_points_to): Ditto.
23767         (init_base_vars): Ditto.
23768         (init_alias_vars): Ditto.
23769         (remove_preds_and_fake_succs): New function.
23770         (dump_sa_points_to_info): Dump new stats.
23771         (dump_solution_for_var): Use find.
23772         (set_used_smts): Fix formatting.
23773         (compute_points_to_sets): Updated for new functions.
23774         (ipa_pta_execute): Ditto.
23776 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23777             Richard Sandiford  <richard@codesourcery.com>
23779         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
23780         parallels.
23781         * calls.c (expand_call): If the return value is a PARALLEL,
23782         extract its first member.
23783         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
23784         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
23785         use FUNCTION_EXTRA_EPILOGUE.
23786         (m68k_function_value): Return a PARALLEL if the return value
23787         is of a pointer type.
23788         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
23789         (FUNCTION_EXTRA_EPILOGUE): Remove.
23790         * config/m68k/m68k.md (D0_REG): New constant.
23792 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23794         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
23795         output a NOP for empty epilogues.
23797 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23799         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
23800         before function.  Extend register save check to include all
23801         registers, not just integer ones.
23803 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23805         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
23806         (m68k_use_return_insn): ...this.
23807         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
23808         * config/m68k/m68k.c (use_return_insn): Rename to...
23809         (m68k_use_return_insn): ...this.
23810         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
23811         of USE_RETURN_INSN.
23813 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23815         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
23816         nearest even, fix denormal rounding overflow.
23818 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23820         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
23821         f%$smove and f%$move.
23822         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
23823         (extendsfdf2_cf): Use fdmove instead of f%&move.
23824         (truncdfsf2_cf): Use fsmove instead of f%$smove.
23825         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
23827 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23829         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
23830         GPR<-GPR moves.
23832 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23834         * real.h (real_format): Add a canonical_nan_lsbs_set field.
23835         (coldfire_single_format): Declare.
23836         (coldfire_double_format): Likewise.
23837         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
23838         of qnan_msb_set to determine the lower bits of a canonical
23839         NaN significand.
23840         (encode_ieee_double): Likewise.
23841         (encode_ieee_quad): Likewise.
23842         (ieee_single_format): Initialize canonical_nan_lsbs_set.
23843         (mips_single_format): Likewise.
23844         (ieee_double_format): Likewise.
23845         (mips_double_format): Likewise.
23846         (ieee_extended_motorola_format): Likewise.
23847         (ieee_extended_intel_96_format): Likewise.
23848         (ieee_extended_intel_128_format): Likewise.
23849         (ieee_extended_intel_96_round_53_format): Likewise.
23850         (ibm_extended_format): Likewise.
23851         (mips_extended_format): Likewise.
23852         (ieee_quad_format): Likewise.
23853         (mips_quad_format): Likewise.
23854         (vax_f_format): Likewise.
23855         (vax_d_format): Likewise.
23856         (vax_g_format): Likewise.
23857         (i370_single_format): Likewise.
23858         (i370_double_format): Likewise.
23859         (decimal_single_format): Likewise.
23860         (decimal_double_format): Likewise.
23861         (decimal_quad_format): Likewise.
23862         (c4x_single_format): Likewise.
23863         (c4x_extended_format): Likewise.
23864         (real_internal_format): Likewise.
23865         (coldfire_single_format): New real_format.
23866         (coldfire_double_format): Likewise.
23867         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
23868         canonical_nan_lsbs_set.
23869         (pdp11_d_format): Likewise.
23870         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
23871         if TARGET_COLDFIRE_CPU.
23873 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23875         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
23876         (output_call, m68k_legitimize_call_address): Declare.
23877         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
23878         parenthesees.  Add support for a 'W' constraint.
23879         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
23880         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
23881         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
23882         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
23883         variables.
23884         (override_options): Initialize them.  Do not set flag_no_function_cse
23885         for TARGET_ID_SHARED_LIBRARY.
23886         (m68k_output_pic_call): Delete.
23887         (m68k_legitimize_call_address): New function.
23888         (print_operand): Remove the %o prefix.  Handle the %p prefix.
23889         (output_call): New function.
23890         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
23891         target address from the GOT if symbolic jumps are not allowed.
23892         * config/m68k/m68k.md (call, general_operand): Do not set
23893         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
23894         Merge separate flag_pic and !flag_pic define_insns into...
23895         (*call, *call_value): ...these new patterns.  Match the address
23896         rather than the containing MEM and require it to be a call_operand.
23897         Use output_call to generate the asm template.
23898         * config/m68k/predicates.md (const_call_operand): New predicate.
23899         (call_operand): Likewise.
23901 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23903         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
23904         (STACK_GROWS_DOWNWARD): Define to 1.
23905         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
23906         comments, emphasizing that these values are only defaults.
23907         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
23908         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
23910 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23912         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
23914 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23915             Richard Sandiford  <richard@codesourcery.com>
23917         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
23918         (FP_REGNO_P): New macros.
23919         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
23920         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
23921         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
23922         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
23924 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23926         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23927         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
23928         to $tmake_file.
23929         * config/m68k/t-floatlib: New file, extracting common code from...
23930         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
23931         * config/m68k/t-uclinux: Here.
23932         * config/m68k/fpgnulib.c: Do not compile extendeed precision
23933         routines on ColdFire targets.
23935 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23937         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23938         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
23939         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
23940         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
23941         explicitly set MOTOROLA to 1.
23942         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
23944 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23945             Nathan Sidwell  <nathan@codesourcery.com>
23947         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
23948         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
23949         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
23950         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
23951         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
23952         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
23953         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
23954         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
23955         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
23956         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
23957         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
23958         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
23959         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
23960         (DBX_REGISTER_NUMBER): Delete.
23961         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
23962         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
23963         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
23965 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23967         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
23968         * config/flat.h: New file.
23969         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
23970         OBJECT_FORMAT_FLAT.
23971         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
23972         indirect references for -msep-data or -mid-shared-library.
23973         Do not use PC-relative code addresses either.
23974         * config/m68k/m68k.c (override_options): Restrict -fPIC error
23975         to -mpcrel.
23976         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
23977         for shared libraries and crt1.o for executables.  Use crti.o and
23978         crtbegin.o.
23979         (ENDFILE_SPEC): Use crtend.o and crtn.o.
23980         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
23981         Do not add -elf2flt or -shared-lib-id options here.
23982         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
23983         Pass -shared-lib-id if -mid-shared-library, taking the library
23984         identifier from -mshared-library-id if given, otherwise
23985         defaulting to 0.
23986         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
23987         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
23988         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
23989         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
23990         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
23991         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
23992         and crtend.o.
23993         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
23994         jump sequence for ISA A and ISA A+.
23995         (PICJUMP): Likewise.
23997 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23999         * config.gcc (m68k-*-uclinux*): Base the port on the common
24000         and m68k GNU/Linux files rather than on the generic ELF ones.
24001         * config/m68k/uclinux.h (TARGET_VERSION): Override.
24002         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
24004 2007-01-18  Julian Brown  <julian@codesourcery.com>
24005             Richard Sandiford  <richard@codesourcery.com>
24007         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
24008         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
24009         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
24010         before redefining.
24011         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
24012         80 unconditionally.
24013         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
24015 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
24017         * doc/install.texi: Document m68k-uclinuxoldabi.
24018         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
24019         * config/m68k/uclinux-oldabi.h: New file, copied from
24020         config/m68k/uclinux.h.
24022 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
24024         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
24025         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
24026         (m32r_compute_frame_size): Use unsigned for regno.
24027         (m32r_reload_lr): Use gen_frame_mem.
24028         (pop): New.
24029         (m32r_output_function_epilogue): Don't output the function epilogue
24030         textually here.
24031         (m32r_expand_epilogue): New.
24032         (direct_return): Return false if the function has the interrupt
24033         attribute.
24034         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
24035         * config/m32r/m32r.md (epilogue): New expander.
24036         (return_lr, return_rte): New insns.
24037         (return): Make it expander.
24038         (return_normal): New expander.
24040 2007-01-18  Josh Conner  <jconner@apple.com>
24042         PR target/30485
24043         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
24044         support for UNLE, UNLT, UNGE, and UNGT.
24046 2007-01-18  Jan Hubicka  <jh@suse.cz>
24048         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
24049         * tree-tailcall (add_virtual_phis): Likewise.
24050         (optimize_tail_call): Return TODOs.
24051         (execute_tail_calls): Return TODOs.
24052         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
24053         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
24054         changed.
24055         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
24056         Cleanup cfg using TODO.
24057         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
24058         * passes.c (execute_function_todo): When cleanup did something, remove
24059         unused locals.
24060         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
24061         (make_edges): Don't cleanup_cfg.
24063 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
24065         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
24066         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
24067         operate on the top of stack.
24068         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
24069         register handling of instructions that output to the second
24070         stack slot.
24071         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
24072         (move_for_stack_reg): Special-case check for dead destination
24073         stack slot for constant load of 1.0 inside UNSPEC_TAN.
24075         * config/i386/i386.md (UNSPEC_TAN): New constant.
24076         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
24077         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
24078         to correctly model move of constant 1.0 to top stack slot.
24079         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
24080         (unnamed peephole2 pattern): Remove corresponding peephole2
24081         pattern that optimizes tan insn and loading of constant 1.0.
24082         (tanxf2): Use fptanxf4_i387.
24083         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
24084         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
24085         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
24086         disable patterns for SSE math.
24087         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
24088         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
24090 2007-01-18  Dirk Mueller  <dmueller@suse.de>
24091             Richard Guenther <rguenther@suse.de>
24093         PR diagnostic/8268
24094         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
24095         * common.opt (Warray-bounds): Add new warning option.
24096         * c-opts.c (c_common_handle_option): Define -Warray-bounds
24097         if -Wall is given.
24098         * Makefile.in: make tree-vrp.o depend on toplev.h
24099         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
24100         is enabled.
24101         (check_array_refs, check_array_bounds, check_array_ref): New.
24103 2007-01-18  Jan Hubicka  <jh@suse.cz>
24105         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
24106         (execute_ssa_ccp): Return flags conditionally.
24107         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
24108         changed.
24109         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
24111 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
24113         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
24114         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
24116         * Makefile.c (GTFILES): Add cfglayout.h.
24117         * gengtype.c (open_base_files): Likewise.
24118         * cfglayout.c (cfg_layout_function_footer,
24119         cfg_layout_function_header) Reindent to make gengtype happy.
24120         * cfglayout.h (cfg_layout_function_footer,
24121         cfg_layout_function_header): Add GTY(()) marker.
24123         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
24125 2007-01-18  Ben Elliston  <bje@au.ibm.com>
24127         * genautomata.c (write_automata): Include xstrerror output in the
24128         error message if writing the DFA description file fails.
24130 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
24132         * config/mips/mips-protos.h (mips_output_external): Make it
24133         return void.
24134         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
24135         * config/mips/mips.c (irix_output_external_libcall): Likewise.
24136         (extern_list): Likewise.
24137         (extern_head): Likewise.
24138         (TARGET_ASM_FILE_END): Likewise.
24139         (mips_file_end): Likewise.
24140         (mips_output_external): Rewritten.
24142 2007-01-18  Ben Elliston  <bje@au.ibm.com>
24144         * genpreds.c (write_insn_preds_c): Only write out the function
24145         body for regclass_for_constraint if we have register constraints.
24147 2007-01-17  Tom Tromey  <tromey@redhat.com>
24149         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
24150         * doc/install.texi (Testing): Use sourceware.org.
24151         (Binaries): Likewise.
24152         (Specific): Likewise.
24153         * doc/contrib.texi (Contributors): Use sourceware.org.
24155 2007-01-17  Anatoly Sokolov <aesok@post.ru>
24157         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
24158         (AVR_ENHANCED): Rename to ...
24159         (AVR_HAVE_MUL): ... new.
24160         (avr_enhanced_p): Rename to ...
24161         (avr_have_mul_p): ... new.
24162         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
24163         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
24164         * config/avr/avr.c (avr_enhanced_p): Rename to ...
24165         (avr_have_mul_p): ... new.
24166         (base_arch_s): Rename 'enhanced' to 'have_mul'.
24167         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
24168         'avr_enhanced_p' and 'enhanced'.
24169         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
24170         AVR_HAVE_MUL instead of AVR_ENHANCED.
24171         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
24172         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
24173         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
24174         instead of AVR_ENHANCED.
24175         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
24176         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
24177         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
24179 2007-01-17  Ian Lance Taylor  <iant@google.com>
24181         * vec.h (VEC_reserve_exact): Define.
24182         (vec_gc_p_reserve_exact): Declare.
24183         (vec_gc_o_reserve_exact): Declare.
24184         (vec_heap_p_reserve_exact): Declare.
24185         (vec_heap_o_reserve_exact): Declare.
24186         (VEC_OP (T,A,reserve_exact)): New static inline function, three
24187         versions.
24188         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
24189         negative parameter.
24190         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
24191         (VEC_OP (T,A,copy)) [all versions]: Likewise.
24192         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
24193         * vec.c (calculate_allocation): Add exact parameter.  Change all
24194         callers.
24195         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
24196         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
24197         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
24198         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
24199         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
24200         (vec_heap_p_reserve_exact): New function.
24201         (vec_heap_o_reserve_exact): New function.
24203 2007-01-17  Jan Hubicka  <jh@suse.cz>
24205         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
24207 2007-01-17  Eric Christopher  <echristo@apple.com>
24209         * config.gcc: Support core2 processor.
24211 2007-01-16  Jan Hubicka  <jh@suse.cz>
24213         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
24214         the names, just unlink the chain so we don't crash on dangling
24215         pointers
24216         to dead SSA names.
24218 2007-01-16  Jan Hubicka  <jh@suse.cz>
24220         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
24221         * tree-pass.h: Reorder to make IPA passes appear toegher.
24222         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
24223         Declare.
24224         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
24225         parameters, do not call early inliner.
24226         * ipa-inline.c: Update comments.  Include tree-flow.h
24227         (cgraph_decide_inlining): Do not compute inlining parameters.
24228         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
24229         be called with function context set up.
24230         (pass_ipa_inline): Remove unreachable functions before pass.
24231         (cgraph_early_inlining): Simplify assuming to be called from the
24232         PM as local pass.
24233         (pass_early_inline): New pass.
24234         (cgraph_gate_ipa_early_inlining): New gate.
24235         (pass_ipa_early_inline): Turn into simple wrapper.
24236         (compute_inline_parameters): New function.
24237         (gate_inline_passes): New gate.
24238         (pass_inline_parameters): New pass.
24239         (apply_inline): Move here from tree-optimize.c
24240         (pass_apply_inline): New pass.
24241         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
24242         transforming.
24243         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
24244         doing them by hand.
24245         (tree_function_versioning): Do not allocate dummy struct function.
24246         * tree-inline.h (optimize_inline_calls): Update prototype.
24247         * tree-optimize.c (execute_fixup_cfg): Export.
24248         (pass_fixup_cfg): Remove
24249         (tree_rest_of_compilation): Do not apply inlines.
24250         * tree-flow.h (execute_fixup_cfg): Declare.
24251         * Makefile.in (gt-passes.c): New.
24252         * passes.c: Include gt-passes.h
24253         (init_optimization_passes): New passes.
24254         (nnodes, order): New static vars.
24255         (do_per_function_toporder): New function.
24256         (execute_one_pass): Dump current pass here.
24257         (execute_ipa_pass_list): Don't dump current pass here.
24259 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
24261         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
24262         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
24264 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
24266         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
24267         (strong_alias): Define.
24268         (__gcc_qmul): Provide non-FMA for soft-float.
24269         (__gcc_qdiv): Same.
24270         (__gcc_qneg): New.
24271         (__gcc_qeq): New.
24272         (__gcc_qle): New.
24273         (__gcc_qge): New.
24274         (__gcc_qunord): New.
24275         (__gcc_stoq): New.
24276         (__gcc_dtoq): New.
24277         (__gcc_qtos): New.
24278         (__gcc_qtod): New.
24279         (__gcc_qtoi): New.
24280         (__gcc_qtou): New.
24281         (__gcc_itoq): New.
24282         (__gcc_utoq): New.
24283         (fmsub): New.
24284         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
24285         soft-float functions.
24286         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
24287         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
24288         about long double soft float.
24290 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
24291             Tehila Meyzels  <tehila@il.ibm.com>
24293         * tree-vectorizer.h (is_pattern_stmt_p): New.
24294         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
24295         formatting (tabs instead of spaces). Cleanup and clarify setting
24296         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
24297         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
24298         (vectorizable_type_demotion): Check that types are integral.
24299         (vectorizable_type_promotion): Likewise.
24300         (vectorizable_store): Fix typo.  Eliminate new-line at end of
24301         comments.
24303 2007-01-16  Jan Hubicka  <jh@suse.cz>
24305         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
24306         cgraph edges too.
24308 2007-01-15  Eric Christopher  <echristo@apple.com>
24310         * ifcvt.c: Include vec.h, vecprim.h.
24311         (check_cond_move_block): New argument regs.
24312         Reorganize. Add registers used to regs.
24313         (cond_move_process_if_block): Use regs set above as
24314         loop bounds.
24316 2007-01-15  Eric Christopher  <echristo@apple.com>
24318         * config/darwin.h: Update copyright.
24319         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
24320         (LINK_COMMAND_SPEC): Add -u.
24321         (LINK_SPEC): Fix umbrella for above.
24323 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
24325         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
24326         glibc CVS.
24328 2007-01-15  Tom Tromey  <tromey@redhat.com>
24330         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
24331         * doc/install.texi (Testing): Don't mention jacks.
24332         (Configuration): Document --enable-java-maintainer-mode.  Move
24333         --with-java-home to libgcj-specific section.  Document
24334         --with-ecj-jar.
24335         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
24337 2007-01-15  Jan Hubicka  <jh@suse.cz>
24339         * tree-ssa-dce.c (DCE_TODOs): New.
24340         (propagate_necessity): Return if something changed.
24341         (eliminate_unnecessary_stmts): Likewise.
24342         (perform_tree_ssa_dce): Return TODO flags when needed.
24343         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
24345 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
24347         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
24348         (fyl2x_extend<mode>xf3_i387): New insn pattern.
24349         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
24350         patterns using X87MODEF12 mode macro.  Extend operand 1
24351         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
24352         (log10<mode>2): Ditto.
24353         (log2<mode>2): Ditto.
24354         (log1p<mode>2): Ditto.
24355         (logb<mode>2): Ditto.
24356         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
24357         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
24358         (*fxtractxf3_i387): Rename from *fxtractxf3.
24359         (fxtract_extend<mode>xf3_i387): New insn pattern.
24360         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
24361         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
24362         and gen_fyl2xxf3_i387().
24364 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
24366         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
24367         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
24368         get_loop_exit_edges.  Changed return type to bool.
24369         * cfgloop.h (fix_loop_placement): Declaration removed.
24371 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
24373         * param.h (MIN_VECT_LOOP_BOUND): New.
24374         * params.def (MIN_VECT_LOOP_BOUND): New.
24375         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
24376         argument - minimum threshold for number of iterations.
24377         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
24378         argument to declaration.
24379         * tree-vect-analyze.c (vect_analyze_operations): Check value of
24380         MIN_VECT_LOOP_BOUND.
24381         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
24382         slpeel_tree_peel_loop_to_edge with additional argument.
24383         (vect_do_peeling_for_alignment): Likewise.
24384         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
24386 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
24388         PR target/30413
24389         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
24390         operands of size 1.
24392 2007-01-14  Jan Hubicka  <jh@suse.cz>
24394         * tree-dfa.c (remove_referenced_var): New function.
24395         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
24396         prune referenced vars list too.
24397         * tree-flow.h (remove_referenced_var): Declare.
24399 2007-01-14  Jan Hubicka  <jh@suse.cz>
24401         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
24402         separately.
24403         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
24404         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
24405         * except.h (verify_eh_throw_table_statements): Kill prototype.
24406         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
24407         into call exrepssions.
24408         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
24409         eh trhow verifier.
24410         * tree-cfg.c: Include pointer-set.h.
24411         (verify_node_sharing): Work on pointer set.
24412         (verify_eh_throw_stmt_node): New.
24413         (verify_stmts): Use pointers sets, verify throw_stmt.
24415 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
24417         * ipa-reference.c (analyze_function): Consider also addresses taken
24418         in phi nodes.
24420 2007-01-12  Roger Sayle  <roger@eyesopen.com>
24422         * c-typeck.c (null_pointer_constant_p): Replace use of
24423         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
24424         (build_c_cast): Likewise.
24426 2007-01-12  Roger Sayle  <roger@eyesopen.com>
24428         * tree.h (force_fit_type_double): Remove unused final argument.
24429         * c-common.c (constant_expression_warning): Replace use of
24430         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
24431         (convert_and_check): Likewise.
24432         (shorten_compare): Update call to force_fit_type_double.
24433         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
24434         * convert.c (convert_to_pointer): Update call to
24435         force_fit_type_double.
24436         * fold-const.c (force_fit_type_double): Remove overflowed_const
24437         argument.
24438         (int_const_binop, fold_convert_const_int_from_int,
24439         fold_convert_const_int_from_real, fold_div_compare,
24440         fold_sign_changed_comparison, fold_unary, fold_negate_const,
24441         fold_abs_const, fold_not_const): Remove the final argument from
24442         calls to force_fit_type_double.
24444 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24446         * configure.ac: Set insn to "nop" for spu-*-* also.
24447         * configure: Regenerate.
24449 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
24451         * builtins.def : Add BUILT_IN_FREE.
24453 2007-01-12  Jan Hubicka  <jh@suse.cz>
24455         PR tree-optimization/30443
24456         * tree-inline.c (tree_function_versioning): Do not optimize when
24457         cloning for inlining.
24459 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
24461         * doc/loop.texi: Document recording of loop exits.
24462         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
24463         (update_single_exits_after_duplication,
24464         update_single_exit_for_duplicated_loop,
24465         update_single_exit_for_duplicated_loops): Removed.
24466         (duplicate_loop_to_header_edge): Do not call
24467         update_single_exits_after_duplication and
24468         update_single_exit_for_duplicated_loops.
24469         (loop_version): Do not update single_exit information.
24470         (fix_loop_structure): Use record_loop_exits instead of
24471         mark_single_exit_loops.
24472         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
24473         the lists of loop exits.
24474         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
24475         split_edge, merge_blocks): Update the lists of loop exits.
24476         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
24477         loop_optimizer_init.
24478         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
24479         of mark_single_exit_loops.
24480         (loop_optimizer_finalize): Call release_recorded_exits.
24481         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
24482         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
24483         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
24484         update single exit information.
24485         * lambda-code.c (perfect_nestify): Ditto.
24486         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
24487         (mark_single_exit_loops): Removed.
24488         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
24489         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
24490         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
24491         functions.
24492         (get_loop_exit_edges, single_exit): Use recorded exit lists.
24493         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
24494         (verify_loop_structure): Verify consistency of the exit lists.
24495         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
24496         (set_single_exit): Removed.
24497         * cfgloop.h (struct loop_exit): New function.
24498         (struct loop): single_exit_ field replaced by exits field.
24499         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
24500         LOOPS_HAVE_RECORDED_EXITS.
24501         (struct loops): Added exits hash.
24502         (mark_single_exit_loops, set_single_exit): Declaration removed.
24503         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
24505 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24507         * doc/invoke.texi: Avoid use of @headitem.
24509 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24511         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
24513 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24515         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
24516         list of targets.
24518 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
24519             Richard Sandiford  <richard@codesourcery.com>
24521         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
24522         * config/m68k/m68k.opt: Resort options.
24523         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
24525 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
24526             Richard Sandiford  <richard@codesourcery.com>
24528         * doc/invoke.texi: Document the macros that are defined by
24529         m68k's -mtune and -mhard-float options.
24530         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
24531         (m68k_cpp_cpu_family): Likewise.
24532         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
24533         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
24534         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
24535         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
24536         (m68k_cpp_cpu_family): Likewise.
24538 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24540         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
24541         macros besides mc68000 as tuning macros.  Use a switch statement
24542         to set them and mcpu32.
24544 2007-01-12  Julian Brown  <julian@codesourcery.com>
24546         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
24547         (TARGET_68040_ONLY): Rename to...
24548         (TARGET_68040): ...this.
24549         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
24550         * config/m68k/m68k.md: Likewise.
24552 2007-01-12  Julian Brown  <julian@codesourcery.com>
24553             Nathan Sidwell  <nathan@codesourcery.com>
24554             Richard Sandiford  <richard@codesourcery.com>
24556         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
24557         the -mcpu= argument associated with the --with-cpu setting.
24558         Define M68K_DEFAULT_TUNE to the default -mtune= option,
24559         if different from the one implied by the -mcpu setting.
24560         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
24561         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
24562         * doc/invoke.texi: Mention ColdFire in the introduction to the
24563         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
24564         -mno-div and -mhard-float options.  Make -m68881 a synonym for
24565         -mhard-float.  Document the previously-undocumented -m5206e,
24566         -m528x, -m5307 and -m5407 options.  Tweak the existing option
24567         documentation for consistency.
24568         * doc/install.texi: Mention new --with-cpu arguments.
24569         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
24570         default CPU if neither -mcpu nor -march are specified.
24571         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
24572         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
24573         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
24574         using m68k_tune to decide between families that implement the
24575         same ISA.  Use m68k_tune to set __mcfv4e__.
24576         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
24577         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
24578         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
24579         (FL_ISA_C, FL_ISA_MMU): New macros.
24580         (MASK_COLDFIRE): Delete.
24581         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
24582         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
24583         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
24584         (TARGET_HARD_FLOAT): Do not define here.
24585         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
24586         (TUNE_68000): New macro.
24587         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
24588         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
24589         (TUNE_CFV2): Redefine in terms of m68k_tune.
24590         (uarch_type, target_device, fpu_type): New enums.
24591         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
24592         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
24593         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
24594         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
24595         (FL_FOR_isa_c): New macros.
24596         (m68k_isa): New enum.
24597         (m68k_target_selection): New structure.
24598         (all_devices, all_isas, all_microarchs): New tables.
24599         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
24600         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
24601         (MASK_ALL_CPU_BITS): Delete.
24602         (m68k_find_selection): New function.
24603         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
24604         Map the legacy target options to a combination of the new ones.
24605         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
24606         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
24607         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
24608         settings.
24609         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
24610         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
24611         properties.
24612         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
24613         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
24614         * config/m68k/m68k-devices.def: New file.
24616 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24617             Nathan Sidwell  <nathan@codesourcery.com>
24619         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
24620         (SUBTARGET_EXTRA_SPECS): New macros.
24621         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
24622         use %(asm_cpu_spec) instead.
24623         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
24624         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
24625         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
24626         (EXTRA_SPECS): Rename to...
24627         (SUBTARGET_EXTRA_SPECS): ...this.
24629 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
24630             Richard Sandiford  <richard@codesourcery.com>
24631             Julian Brown  <julian@codesourcery.com>
24633         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
24634         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
24635         to the configuration's default CPU.
24636         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
24637         Remove default masks.
24638         (m680[012]0-*-*): Set the default with_cpu to the first part of
24639         the target name.
24640         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
24641         (m68k*-*-linux): Extend the --with-cpu handling to...
24642         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
24643         and m68010.  Don't set target_cpu_default2.
24644         * doc/install.texi: Document --with-cpu for m68k.
24645         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
24646         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
24647         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
24648         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
24649         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
24650         (ASM_SPEC): Remove use of %(asm_cpu_default).
24651         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
24652         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
24653         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
24654         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
24655         __HAVE_FPU__ if TARGET_HARD_FLOAT.
24656         (TARGET_DEFAULT): Delete.
24657         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
24658         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
24659         (CPP_CPU_SPEC): Delete.
24660         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
24661         the appropriate string.
24662         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
24663         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
24664         (ASM_SPEC): Don't use %(asm_default_spec).
24665         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
24666         TARGET_DEFAULT and add MASK_68881.
24667         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
24669 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24671         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
24672         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
24673         MASK_68010 alongside MASK_68020.
24674         * doc/invoke.texi: Document -m68010.
24675         * config/m68k/m68k.opt (m68010): New.
24676         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
24677         if TUNE_68010.
24678         (TUNE_68010): New macro.
24679         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
24680         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
24681         (M68K_CPU_m68332): Add MASK_68010.
24682         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
24683         fallback definition.
24684         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
24685         defines.
24686         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
24687         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
24688         to all entries that use MASK_68020.
24689         (output_move_simode_const, output_move_himode, output_move_qimode)
24690         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
24691         instead of TARGET_68020 to select clr behavior.  Remove comment
24692         about there being no TARGET_68010.
24693         * config/m68k/m68k.md: Likewise throughout.
24695 2007-01-12  Julian Brown  <julian@codesourcery.com>
24697         * config/m68k/m68k.h (TARGET_ISAB): New macro.
24698         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
24699         * config/m68k/m68k.md: Likewise.
24701 2007-01-12  Julian Brown  <julian@codesourcery.com>
24703         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
24704         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
24706 2007-01-12  Julian Brown  <julian@codesourcery.com>
24708         * config/m68k/m68k.h (TUNE_68040_60): New macro.
24709         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
24710         * config/m68k/m68k.md: Likewise.
24712 2007-01-12  Julian Brown  <julian@codesourcery.com>
24713             Richard Sandiford  <richard@codesourcery.com>
24715         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
24716         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
24717         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
24718         TARGET_CPU32.
24719         (TARGET_CPU32): Rename to...
24720         (TUNE_CPU32): ...this.
24721         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
24722         (TUNE_CFV2): New macros.
24723         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
24724         remove conditions that are implied by TARGET_68020.
24725         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
24726         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
24727         (m68k_output_function_epilogue): Likewise.
24728         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
24729         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
24730         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
24731         non-68000 timings.  Refactor multiplication and division costs.
24732         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
24733         TUNE_CPU32 instead of TARGET_CPU32.
24734         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
24735         and TUNE_68060 instead of TARGET_68060.
24736         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
24737         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
24738         TARGET_CPU32.
24739         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
24740         && !TARGET_COLDFIRE" to choose between moveq and clr.
24741         Likewise in the unnamed movsf pattern.
24742         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
24743         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
24744         ashiftrt pattern.
24746 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24748         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
24749         of tabbing before backslashes.
24751 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24753         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
24754         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
24755         (ASM_OUTPUT_INTERNAL_LABEL): Define.
24757 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
24759         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
24760         find_interesting_uses_cond.
24761         (find_interesting_uses_cond): Use extract_cond_operands.
24762         (rewrite_use_compare): Use extract_cond_operands and
24763         force_gimple_operand_bsi.  Do not call update_stmt.
24764         (determine_use_iv_cost_condition): Use extract_cond_operands.
24765         Return cheaper of using original bound and changing the exit bound.
24767 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
24769         PR tree-optimization/29516
24770         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
24771         most_expensive_mult_to_index, addr_to_parts,
24772         create_mem_ref, maybe_fold_tmr): Make the type of
24773         fields of TARGET_MEM_REF sizetype.
24774         (move_fixed_address_to_symbol, move_pointer_to_base):
24775         New functions.
24776         * tree.def (TARGET_MEM_REF): Add comment on types of
24777         the operands.
24779 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
24781         * c-common.c (vector_types_convertible_p): Treat opaque types as
24782         always convertible if they have the same size, but not otherwise.
24784 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
24786         * ifcvt.c (struct noce_if_info): Add comments to the fields.
24787         Remove the b_unconditional field.
24788         (noce_try_sign_mask): Do not look at b_unconditional.
24789         (noce_process_if_block): Do not use merge_if_blocks.  Update
24790         the CFG here.  Do not set b_unconditional.
24791         (cond_move_process_if_block): Likewise.
24792         (find_cond_trap): Likewise.
24793         (check_cond_move_block): Require simple jump insns at the end
24794         of the basic block.
24796 2007-01-11  Jan Hubicka  <jh@suse.cz>
24798         PR tree-optimization/1046
24799         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
24800         when alias info is not ready.
24801         (pass_tail_recursion): Do not require aliasing.
24802         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
24803         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
24804         * tree-ssa-copy.c (pass_copy_prop): Likewise.
24805         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
24806         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
24807         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
24808         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
24809         before inlining.
24810         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
24811         When aliasing is not build, mark statement as volatile.
24813 2007-01-11  Tom Tromey  <tromey@redhat.com>
24815         PR preprocessor/15185, PR preprocessor/20989:
24816         * doc/cppopts.texi <-MT>: Update description of algorithm for
24817         computing default target.
24818         <-M, -MD>: Reword "basename" text.
24820 2007-01-11  Roger Sayle  <roger@eyesopen.com>
24822         * builtins.c (expand_builtin_pow, expand_builtin_powi,
24823         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
24824         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
24825         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
24826         fold_builtin_bswap, real_constp, fold_builtin_pow,
24827         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
24828         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
24829         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
24830         * convert.c (convert_to_pointer): Likewise.
24831         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
24832         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
24833         const_binop, fold_convert_const_int_from_int,
24834         fold_convert_const_int_from_real,
24835         fold_convert_const_real_from_real, sign_bit_p,
24836         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
24837         fold_sign_changed_comparison, fold_unary, fold_comparison,
24838         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
24839         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
24840         * print-tree.c (print_node_brief, print_node): Likewise.
24841         * stor-layout.c (place_field, layout_type): Likewise.
24842         * tree-chrec.c (keep_cast): Likewise.
24843         * tree.c (build_vector, build_real, build_real_from_int_cst,
24844         build_complex): Likewise.
24846 2007-01-11  Roger Sayle  <roger@eyesopen.com>
24848         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
24849         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
24851 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
24853         * configure.ac (strict1_warn): Rename to strict_warn.
24854         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
24855         cc_set_by_configure, quoted_cc_set_by_configure,
24856         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
24857         all_boot_languages, all_stagestuff): Remove.
24858         (target_list): Remove bootstrap targets.
24859         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
24860         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
24861         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
24862         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
24863         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
24864         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
24865         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
24866         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
24867         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
24868         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
24869         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
24870         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
24871         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
24872         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
24873         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
24874         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
24875         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
24876         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
24877         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
24878         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
24879         (mostlyclean): Adjust.
24880         (clean, distclean): Don't mention bootstrap stuff.
24881         * configure: Regenerate.
24882         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
24883         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
24884         treelang/config-lang.in (stagestuff): Remove.
24885         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
24886         stageprofile, stagefeedback, stagestuff): Remove mention.
24888 2007-01-11  Nick Clifton  <nickc@redhat.com>
24890         * config/mcore/predicates.md (mcore_general_movesrc_operand):
24891         Accept CONSTs.
24892         (mcore_general_movdst_operand): Do not accept CONST_INTs.
24893         (mcore_arith_K_S_operand): Run the test for the S constraint not
24894         the test for the M constraint.
24895         (mcore_addsub_operand): Do not accept integer values that are
24896         larger than 32 bits.
24897         * config/mcore/mcore.md: Remove unused constraints from split.
24898         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
24899         (addsi3): Likewise.
24900         (allocate_stack): Likewise.
24901         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
24902         operands to 32 bits.
24903         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
24904         INTVAL.
24905         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
24906         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
24907         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
24908         mcore_output_bclri, mcore_output_andn, output_inline_const,
24909         mcore_output_move, mcore_output_movedouble): Likewise.
24910         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
24911         (output_inline_const): Likewise.
24912         (output_inline_const): Fix format strings used in sprintf
24913         statements.
24914         * config/mcore/mcore-protos.h: Update prototypes for changed
24915         functions in mcore.c.
24916         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
24917         HOST_WIDE_INT and not int.
24918         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
24919         CONST_OK_FOR_N): Likewise.
24920         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
24921         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
24922         an INTVAL.
24924 2007-01-10  Jan Hubicka  <jh@suse.cz>
24926         * tree-vrp.c (remove_range_assertions): Release defs.
24927         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
24928         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
24930 2007-01-10  Paul Brook  <paul@codesourcery.com>
24932         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
24933         * config/arm/arm.md (mulsi3subsi): New insn.
24935 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
24937         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
24938         (tree_transform_and_unroll_loop): New.
24939         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
24940         Declare.
24942 2007-01-10  Robert Kennedy <jimbob@google.com>
24944         * fold-const.c (fold_comparison): Fold comparisons like (x *
24945         1000 < 0) to (x < 0).
24947 2007-01-10  Ian Lance Taylor  <iant@google.com>
24949         * tree-pretty-print.c (dump_generic_node): Print parentheses when
24950         operands have the same priority.
24952 2007-01-10  Tom Tromey  <tromey@redhat.com>
24954         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
24955         (fold_binary): Likewise.
24956         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
24957         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
24958         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
24959         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
24960         * langhooks.h (struct lang_hooks): Removed field
24961         'can_use_bit_fields_p'.
24963 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
24965         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
24967 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
24969         * function.c (get_last_funcdef_no): New function.
24970         * function.h (get_last_funcdef_no): Declare.
24971         * tree-inline.c (initialize_cfun): Add initialization.
24972         (tree_function_versioning): Cleanup.
24974 2007-01-10  Jan Hubicka  <jh@suse.cz>
24976         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
24977         PHIs.
24979 2007-01-10  Sa Liu  <saliu@de.ibm.com>
24980             Ben Elliston  <bje@au.ibm.com>
24982         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
24983         for SAVE_NONLOCAL and Pmode for any other save level.
24984         * spu-protos.h (spu_restore_stack_block): Declare.
24985         * spu.md (save_stack_block): Remove.
24986         (restore_stack_block): Call spu_restore_stack_block.
24987         * spu.c (spu_restore_stack_block): New function.
24988         (spu_expand_epilogue): Remove old comment.
24990 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
24992         PR tree-optimization/30322
24993         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
24994         (cand_value_at): Return the value as aff_tree.
24995         (may_eliminate_iv): Convert the bound from aff_tree to tree.
24996         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
24997         aff_combination_mult): New functions.
24998         (aff_combination_add): Use aff_combination_add_cst.
24999         (aff_combination_convert): Allow conversions to a wider type.
25000         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
25001         * tree-affine.h (aff_combination_mult): Declare.
25003 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
25005         * doc/tm.texi: Update documentation to reflect reality of exec
25006         and start file search behaviours. Update copyright year.
25007         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
25008         header file directories.
25010 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
25012         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
25013         (*cosxf2): Rename to cosxf2_i387.
25014         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
25015         using X87MODEF12 mode macro. Rename patterns to
25016         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
25017         for SSE math.
25018         (*cosdf2, *cossf2): Ditto.
25019         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
25020         to match extended input operands.
25021         (sincos<mode>3): New expander.
25022         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
25023         insn patterns and corresponding splitters.
25025 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
25027         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
25028         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
25030 2007-01-09  Nicolas Pitre  <nico@cam.org>
25032         PR target/30173
25033         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
25035 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
25037         * target.h (struct gcc_target): New field library_rtti_comdat.
25038         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
25039         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
25040         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
25041         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
25043 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
25045         * doc/invoke.texi (Optimize Options): Correct description of -O0.
25047 2007-01-08  Richard Guenther  <rguenther@suse.de>
25049         * tree.h (force_fit_type_double): Export.
25050         (force_fit_type): Remove.
25051         * fold-const.c (force_fit_type_double): New function.
25052         (force_fit_type): Remove.
25053         (int_const_binop): Use it.
25054         (fold_convert_const_int_from_int): Likewise.
25055         (fold_convert_const_int_from_real): Likewise.
25056         (fold_div_compare): Likewise.
25057         (fold_sign_changed_comparison): Likewise.
25058         (fold_unary): Likewise.
25059         (fold_negate_const): Likewise.
25060         (fold_abs_const): Likewise.
25061         (fold_not_const): Likewise.
25062         * c-common.c (shorten_compare): Use force_fit_type_double.
25063         * convert.c (convert_to_pointer): Likewise.
25065 2007-01-08  Richard Guenther  <rguenther@suse.de>
25067         * tree.h (build_int_cst_wide_type): Export.
25068         * tree.c (build_int_cst_wide_type): New function.
25069         (build_int_cst_wide): Fix comment.
25070         * builtins.c (fold_builtin_object_size): Use build_int_cst
25071         to build -1 or 0 of the correct type.  Use fit_double_type
25072         to check for overflow.
25073         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
25074         to build the mask.
25075         (decode_field_reference): Likewise.
25076         (all_ones_mask_p): Likewise.
25077         (native_interpret_int): Use build_int_cst_wide_type.
25078         (fold_binary): Use build_int_cst_type to build an all-ones
25079         value.
25080         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
25082 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
25084         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
25086 2007-01-09  Ben Elliston  <bje@au.ibm.com>
25088         * genautomata.c (STATS_OPTION): New option.
25089         (stats_flag): New flag.
25090         (gen_automata_option): Handle it.
25091         (initiate_automaton_gen): Ditto.
25092         (write_automata): Output statistics only if stats_flag is
25093         set. Likewise, output time statistics only if time_flag is set.
25094         * doc/md.texi (Processor pipeline description): Document new flag.
25096 2007-01-08  Richard Guenther  <rguenther@suse.de>
25098         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
25099         * tree.c (build_int_cst_type): Likewise.
25100         (size_in_bytes): Don't call force_fit_type on the result.
25101         (int_fits_type_p): Use fit_double_type.
25102         * fold-const.c (fit_double_type): New function.
25103         (force_fit_type): Use it.
25104         * tree.h (fit_double_type): Export.
25106 2007-01-08  Jan Hubicka  <jh@suse.cz>
25108         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
25109         * ipa.c (function_and_variable_visibility): Fix return type.
25111 2007-01-08  Richard Guenther  <rguenther@suse.de>
25113         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
25114         of offset to build the index.
25115         * tree-pretty-print.c (dump_generic_node): Don't build negated
25116         const just for printing.
25117         * c-pretty-print.c (pp_c_integer_constant): Likewise.
25118         * builtins.c (fold_builtin_int_roundingfn): Check if result
25119         fits the type by using force_fit_type and comparing the result.
25120         * predict.c (predict_loops): Use compare_tree_int for comparison.
25121         * tree.c (build_int_cst): Fall back to integer_type_node for
25122         NULL_TREE type.
25123         (build_int_cst_wide): Assert type is non-null.
25125 2007-01-08  Roberto Costa  <roberto.costa@st.com>
25127         * tree-vrp.c (extract_range_from_cond_expr): New.
25128         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
25129         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
25130         as expressions.
25131         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
25132         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
25133         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
25134         used as expressions.
25135         * tree-object-size.c (cond_expr_object_size): New.
25136         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
25138 2007-01-08  Jan Hubicka  <jh@suse.cz>
25140         * tree-ssa-forwprop.c (forward_propagate_into_cond,
25141         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
25142         statement.
25144 2007-01-08  Richard Guenther  <rguenther@suse.de>
25146         PR tree-optimization/23603
25147         * tree-vrp.c (set_value_range_to_truthvalue): New function.
25148         (extract_range_from_binary): Fall back to truthvalue instead of
25149         varying for TRUTH_*_EXPR.
25150         (extract_range_from_comparison): Fall back to truthvalue instead of
25151         varying.
25152         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
25153         if all visited PHI values were constant.
25155 2007-01-08  Jan Hubicka  <jh@suse.cz>
25157         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
25158         (cgraph_analyze_function): break out from ...
25159         (cgraph_finalize_compilation_unit): ... here.
25160         (cgraph_expand_function): Remove forgoten commented out line.
25161         (cgraph_optimize): Analyze functions.
25163 2007-01-08  Jan Hubicka  <jh@suse.cz>
25165         * tree-pas.h (TODO_remove_function): New flag.
25166         (TODO_update*): Renumber.
25167         (pass_ipa_increase_alignment,
25168         pass_ipa_function_and_variable_visibility): New passes.
25169         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
25170         (cgraph_function_and_variable_visibility): Move to ipa.c
25171         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
25172         cgraph_increase_alignment.
25173         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
25174         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
25175         calling tree-inline.
25176         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
25177         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
25178         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
25179         (gate_increase_alignment): New function.
25180         (pass_ipa_increase_alignment): New pass.
25181         * ipa.c: Inline tree-pass.h and timevar.h
25182         (function_and_variable_visibility): Move here from cgraphunit.c
25183         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
25184         * passes.c (init_optimization_passes): Add the two new passes.
25185         (execute_todo): Handle cgraph_remove_functions.
25187 2007-01-08  Nick Clifton  <nickc@redhat.com>
25189         * config/frv/predicates.md (reg_or_0_operand): Accept
25190         CONST_DOUBLEs.
25192 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
25194         * config/bfin/rtems.h, config/bfin/t-rtems: New.
25195         * config.gcc: Add bfin*-rtems*.
25197 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
25199         * c.opt: Add -flax-vector-conversions.
25200         * c-typeck.c (convert_for_assignment): Pass flag to
25201         vector_types_convertible_p to allow emission of note.
25202         (digest_init): Likewise.
25203         * c-opts.c: Handle -flax-vector-conversions.
25204         * c-common.c (flag_lax_vector_conversions): New.
25205         (vector_types_convertible_p): Unless -flax-vector conversions
25206         has been passed, disallow conversions between vectors with
25207         differing numbers of subparts and/or element types.  If such
25208         a conversion is disallowed, possibly emit a note on the first
25209         occasion only to inform the user of -flax-vector-conversions.
25210         The new last argument specifies this.
25211         * c-common.h (flag_lax_vector_conversions): New.
25212         (vector_types_convertible_p): Add extra argument.
25213         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
25214         char_type_node for V*QI type vectors.
25215         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
25216         Update to satisfy new typechecking rules.
25217         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
25218         C and C++ variants.
25219         * doc/invoke.texi (C Dialect Options): Document
25220         -flax-vector-conversions.
25222 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
25224         PR tree-optimization/29877
25225         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
25226         a register variable on the RHS to not be replaceable.
25228 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
25229         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
25230         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
25231         const_simm15, const_pow2, const_npow2): Added.
25232         * config/score/misc.md (insv, extv, extzv, movmemsi,
25233         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
25234         * config/score/score.c (score_address_cost, score_select_cc_mode):
25235         Added.
25236         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
25237         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
25238         Update score_print_operand.
25239         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
25240         Adjust register allocate order and update some macro define.
25241         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
25242         mdx_block_move_straight, mdx_block_move_loop_head,
25243         mdx_block_move_loop_body, mdx_block_move_loop_foot,
25244         mdx_block_move_loop, mdx_block_move): Added.
25245         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
25246         mdp_limm): Updated and fix some bug and typo.
25247         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
25248         (movsf, movdf, doloop_end): Added.
25250 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
25252         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
25253         config/arm/thumb2.md: Fix comment typos.
25254         * doc/extend.texi: Fix a typo.
25256 2007-01-07  Eric Christopher  <echristo@apple.com>
25258         * configure.ac: Check for __stack_chk_fail for darwin.
25259         * configure: Regenerate.
25261 2007-01-07  Richard Guenther  <rguenther@suse.de>
25263         * tree-vrp.c (extract_range_from_assert): CSE calls to
25264         compare_values where possible.
25265         (extract_range_from_unary_expr): Likewise.
25267 2007-01-07  Anatoly Sokolov <aesok@post.ru>
25269         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
25270         * config/avr/avr.c (call_insn_operand): Delete function.
25271         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
25272         instead of register number. Use predicates.
25273         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
25274         call_insn_operand): Add.
25276 2007-01-06  Jan Hubicka  <jh@suse.cz>
25278         * tree-pass.h (pass_build_cgraph_edges): Declare.
25279         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
25280         (visited_nodes): Remove.
25281         (cgraph_create_edges): Move to cgraphbuild.c; rename to
25282         build_cgrpah_edges; make visited_nodes local.
25283         (cgraph_process_new_functions): DO not call initialize_inline_failed.
25284         (record_references_in_initializer): Move to cgraphbuild.c
25285         (initialize_inline_failed, rebuild_cgraph_edges,
25286         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
25287         (verify_cgraph_node): Make visited_nodes local.
25288         (cgraph_analyze_function): Do not call cgraph_create_edges and
25289         initialize_inline_failed.
25290         (cgraph_expand_function): Do not call cgraph_lower_function;
25291         assert that function is already lowered.
25292         * Makefile.in (cgraphbuild.o): New.
25293         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
25294         at the end of lowering passes.
25296 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
25298         * ifcvt.c (cond_move_convert_if_block): New function, code
25299         factored out from...
25300         (cond_move_process_if_block): ...here.  Call the new function
25301         on the THEN and ELSE blocks.
25302         (merge_if_block): Do not copy global_live_at_end, merge_blocks
25303         already takes care of this.
25305 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25307         PR c/19978
25308         * tree.h (TREE_OVERFLOW_P): New.
25309         * c-typeck.c (parser_build_unary_op): Warn only if result
25310         overflowed and operands did not.
25311         (parser_build_binary_op): Likewise.
25312         (convert_for_assignment): Remove redundant overflow_warning.
25313         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
25315 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25317         * c-typeck.c (store_init_value): Split over two lines to follow
25318         the GNU coding style.
25320 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
25322         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
25323         __GXX_EXPERIMENTAL_CXX0X__.
25324         * doc/cpp.texi: Same.
25326 2007-01-05  Richard Guenther  <rguenther@suse.de>
25328         PR middle-end/27826
25329         * tree.c (get_narrower): Do not construct COMPONENT_REFs
25330         with mismatched types.  Instead explicitly build a
25331         conversion NOP_EXPR.
25333 2007-01-05  Ian Lance Taylor  <iant@google.com>
25335         * c-common.c (decl_with_nonnull_addr_p): New function.
25336         (c_common_truthvalue_conversion): Call it.
25337         * c-typeck.c (build_binary_op): Likewise.
25338         * c-common.h (decl_with_nonnull_addr_p): Declare.
25340 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
25342         PR c/30360
25343         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
25344         denom against 0.0.
25346 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
25348         * doc/install.texi (Final install): Document the fact that
25349         the GNAT runtime should not be stripped.
25351 2007-01-04  Jan Hubicka  <jh@suse.cz>
25353         * tree-inline.c (fold_marked_statements): Update operand caches
25354         and EH after folding
25356 2007-01-04  Ian Lance Taylor  <iant@google.com>
25358         * c-common.c (check_function_nonnull): Whitespace fix.
25360 2007-01-04  Jan Hubicka  <jh@suse.cz>
25362         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
25363         comitted older version of patch.
25364         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
25365         function, celanup cfg and collect garbage.
25367 2007-01-04  Mike Stump  <mrs@apple.com>
25369         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
25370         (clean): Likewise.
25372 2007-01-04  Eric Christopher  <echristo@apple.com>
25374         * libgcc2.c (__bswapsi2): Use SItype.
25375         (__bswapdi2): Use DItype.
25376         * libgcc2.h: Update for above.
25378 2007-01-04  Paul Brook  <paul@codesourcery.com>
25380         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
25381         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
25382         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
25383         umulsidi3, umulsidi3adddi, smulsi3_highpart,
25384         umulsi3_highpart): Make conditional on !arm_arch6.
25385         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
25386         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
25387         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
25388         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
25389         umulsi3_highpart_v6): New insns.
25391 2007-01-04  Roger Sayle  <roger@eyesopen.com>
25393         * fold-const.c (fold_convert): When casting an expression to void,
25394         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
25395         have a type.  Instead of attempting to build a NOP_EXPR, return
25396         these "special" trees directly.
25398 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
25400         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
25401         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
25402         rs6000_cost->fp not 0 as adjustment for outer NEG.
25404 2007-01-04  Jan Hubicka  <jh@suse.cz>
25406         * cgraph.c (cgraph_release_function_body): New function.
25407         (cgraph_remove_node): Use it.
25408         * cgraph.h (cgraph_release_function_body): Declare.
25409         * cgraphunit.c (cgraph_expand_function): Use it.
25410         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
25411         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
25412         is initialized and while compilation of other function is running.
25413         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
25414         statement CFG annotations from here to ...
25415         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
25417 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
25419         * cfgloop.h (enum li_flags): Make the constants powers of two.
25421 2007-01-04  Jan Hubicka  <jh@suse.cz>
25423         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
25424         set.
25425         (fold_marked_statements): New function.
25426         (optimize_inline_calls, tree_function_versioning): Fold new statements.
25427         * tree-inline.h (copy_body_data): Add statements_to_fold.
25429 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
25431         * config.gcc: Mention libgcc/config.host.
25432         * Makefile.in: Update comments mentioning libgcc.
25433         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
25434         (all.cross, start.encap, rest.encap, rest.cross): Update
25435         dependencies for libgcc move.
25436         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
25437         (clean-target, clean-target-libgcc): Delete.
25438         (srcdirify, GCC_EXTRA_PARTS): New macros.
25439         (libgcc-support, libgcc.mvars): New rules.
25440         (distclean): Remove mention of mklibgcc.
25441         (install): Don't reference INSTALL_LIBGCC.
25442         (install-common): Don't reference EXTRA_PARTS.
25443         (install-libgcc, install-multilib): Delete rules.
25444         * mklibgcc.in: Delete file.
25445         * doc/configfiles.texi: Don't mention mklibgcc.
25447         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
25448         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
25449         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
25450         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
25451         (mklibgcc, ldblspecs): Likewise.
25453         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
25454         (posixpre.def): Use $(T).
25455         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
25456         (SHLIB_SRC, SHLIB_INSTALL): Delete.
25457         (SHLIB_LINK): Make dummy.
25458         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
25460         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
25462         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
25463         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
25464         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
25465         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
25467         * configure.ac (all_outputs): Remove mklibgcc.
25468         * configure: Regenerated.
25470 2007-01-03  Josh Conner  <jconner@apple.com>
25472         PR middle-end/29683
25473         * calls.c (compute_argument_addresses): Set stack and stack_slot
25474         for partial args, too.
25475         (store_one_arg): Use locate.size.constant for the size when
25476         generating a save_area.
25478 2007-01-03  Robert Kennedy <jimbob@google.com>
25480         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
25481         whose definitions are deleted due to basic block merging.
25483 2007-01-03  Paul Brook  <paul@codesourcery.com>
25485         PR target/16634
25486         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
25487         functions.
25488         (use_return_insn): Return 0 for Thumb interrupt functions.
25489         (print_multi_reg): Add rfe argument for IRQ returns.
25490         (arm_output_epilogue): Pop interrupt return address directly into PC.
25491         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
25493 2007-01-03  Paul Brook  <paul@codesourcery.com>
25495         Merge from sourcerygxx-4_1.
25496         * config/arm/thumb2.md: New file.
25497         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
25498         Thumb-2.
25499         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
25500         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
25501         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
25502         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
25503         tables.
25504         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
25505         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
25506         comptibility.
25507         * config/arm/ieee754-sf.S: Ditto.
25508         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
25509         (thumb1_base_register_rtx_p): ... to this.
25510         (thumb_index_register_rtx_p): Rename...
25511         (thumb1_index_register_rtx_p): ... to this.
25512         (thumb_output_function_prologue): Rename...
25513         (thumb1_output_function_prologue): ... to this.
25514         (thumb_legitimate_address_p): Rename...
25515         (thumb1_legitimate_address_p): ... to this.
25516         (thumb_rtx_costs): Rename...
25517         (thumb1_rtx_costs): ... to this.
25518         (thumb_compute_save_reg_mask): Rename...
25519         (thumb1_compute_save_reg_mask): ... to this.
25520         (thumb_final_prescan_insn): Rename...
25521         (thumb1_final_prescan_insn): ... to this.
25522         (thumb_expand_epilogue): Rename...
25523         (thumb1_expand_epilogue): ... to this.
25524         (arm_unwind_emit_stm): Rename...
25525         (arm_unwind_emit_sequence): ... to this.
25526         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
25527         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
25528         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
25529         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
25530         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
25531         thumb2_output_casesi): New functions.
25532         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
25533         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
25534         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
25535         THUMB2_WORK_REGS): Define.
25536         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
25537         arm_condexec_mask, arm_condexec_masklen)): New variables.
25538         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
25539         (arm_override_options): Check new CPU capabilities.
25540         Set new architecture flag variables.
25541         (arm_isr_value): Handle v7m interrupt functions.
25542         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
25543         Thumb-2.
25544         (const_ok_for_arm): Handle Thumb-2 constants.
25545         (arm_gen_constant): Ditto.  Use movw when available.
25546         (arm_function_ok_for_sibcall): Return false for v7m interrupt
25547         functions.
25548         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
25549         (thumb_find_work_register, arm_load_pic_register,
25550         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
25551         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
25552         print_multi_reg, output_mov_long_double_fpa_from_arm,
25553         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
25554         output_mov_double_fpa_from_arm, output_move_double,
25555         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
25556         output_return_instruction, arm_output_function_prologue,
25557         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
25558         arm_output_mi_thunk, thumb_set_return_address): Ditto.
25559         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
25560         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
25561         (arithmetic_instr, shift_op): Use arm_shift_nmem.
25562         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
25563         '!' and 'L'.
25564         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
25565         (thumb_expand_prologue): Use thumb_set_frame_pointer.
25566         (arm_file_start): Output directive for unified syntax.
25567         (arm_unwind_emit_set): Handle stack alignment instruction.
25568         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
25569         Add v6t2, v7, v7a, v7r and v7m.
25570         (RETLDM): Add Thumb-2 code.
25571         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
25572         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
25573         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
25574         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
25575         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
25576         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
25577         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
25578         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
25579         ADJUST_INSN_LENGTH): Define.
25580         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
25581         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
25582         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
25583         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
25584         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
25585         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
25586         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
25587         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
25588         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
25589         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
25590         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
25591         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
25592         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
25593         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
25594         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
25595         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
25596         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
25597         cortex-m3.
25598         * config/arm/arm-tune.md: Regenerate.
25599         * config/arm/arm-protos.h: Update prototypes.
25600         * config/arm/vfp.md: Enable patterns for Thumb-2.
25601         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
25602         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
25603         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
25604         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
25605         * config/arm/libunwind.S: Add Thumb-2 code.
25606         * config/arm/constraints.md: Update include Thumb-2.
25607         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
25608         * config/arm/ieee754-df.S: Ditto.
25609         * config/arm/bpabi.S: Ditto.
25610         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
25611         * config/arm/predicates.md (low_register_operand,
25612         low_reg_or_int_operand, thumb_16bit_operator): New.
25613         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
25614         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
25615         * config/arm/t-arm-elf: Add armv7 multilib.
25616         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
25617         Include thumb2.md.
25618         (UNSPEC_STACK_ALIGN, ce_count): New.
25619         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
25620         arm_zero_extendsidi2, arm_zero_extendqidi2): New
25621         insns/expanders.
25622         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
25623         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
25624         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
25625         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
25626         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
25627         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
25628         insns.
25629         * doc/extend.texi: Document ARMv7-M interrupt functions.
25630         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
25632 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
25634         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
25635         (struct _Unwind_Context): Rename args_size to flags, remove
25636         signal_frame field, add a new args_size field and version field.
25637         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
25638         _Unwind_IsExtendedContext): New inline functions.
25639         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
25640         Assume by_value array is only present if _Unwind_IsExtendedContext.
25641         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
25642         _Unwind_IsSignalFrame.
25643         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
25644         (uw_update_context_1): Use _Unwind_SetSignalFrame.
25645         (uw_init_context_1): Initialize context->flags to
25646         EXTENDED_CONTEXT_BIT.
25647         * config/rs6000/linux-unwind.h (frob_update_context): Use
25648         _Unwind_SetSignalFrame.
25650 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25652         PR middle-end/30353
25653         * gimplify.c (gimplify_modify_expr_complex_part): Move below
25654         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
25655         the value.
25657 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
25659         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
25660         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
25661         RET, AT_SP): Remove.
25662         * config/i386/i386.md (*sse_prologue_save_insn): Use return
25663         instead of RET.
25665         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25666         * cfgbuild.c (find_basic_blocks): Likewise.
25667         * cfgrtl.c (rtl_create_basic_block): Likewise.
25668         * function.c (temp_slots_at_level): Likewise.
25669         * reg-stack.c (stack_regs_mentioned): Likewise.
25670         * regclass.c (allocate_reg_info): Likewise.
25671         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25672         set_bb_for_stmt, move_block_to_fn): Likewise.
25673         * tree-complex.c (tree_lower_complex): Likewise.
25674         * vec.h (VEC_safe_grow_cleared): New.
25676         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
25678 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
25680         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
25681         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
25682         to loop_version.
25683         * cfgloopmanip.c (scale_loop_frequencies): Export.
25684         (loopify): Scale the frequencies by prescribed coefficients.
25685         (set_zero_probability): New function.
25686         (duplicate_loop_to_header_edge): Improve updating of frequencies.
25687         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
25688         and frequencies according to arguments.
25689         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
25690         correctly.
25691         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
25692         * modulo-sched.c (sms_schedule): Set probabilities for entering
25693         versioned loop correctly.
25694         * tree-vect-transform.c (vect_transform_loop): Ditto.
25695         * cfgloop.h (loopify, loop_version): Declaration changed.
25696         (scale_loop_frequencies): Declared.
25698 2007-01-02  Jan Hubicka  <jh@suse.cz>
25700         * cgraph.c: Include tree-flow.h
25701         (cgraph_add_new-function): Handle IPA_SSA mode; execute
25702         early_local_passes.
25703         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
25704         * tree-pass.h (pass_all_early_optimizations): Declare.
25705         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
25706         early_local_passes.
25707         (cgraph_analyze_function): Do early_local_passes.
25708         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
25709         Do not add referenced vars.
25710         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
25711         SSA form.
25712         (gate_all_early_local_passes): New gate.
25713         (pass_early_local_passes): Use new gate.
25714         (execute_early_local_optimizations): New functions.
25715         (gate_all_early_optimizations): New gate.
25716         (pass_all_early_optimizations): New pass.
25717         (execute_free_datastructures): Free SSA only when initialized.
25718         (gate_init_datastructures): Init only when optimizing.
25719         (tree_lowering_passes): Do early local passes when called late.
25720         * tree-profile.c (do_tree_profiling): Don't profile functions added
25721         late.
25722         (do_early_tree_profiling, pass_early_tree_profile): Kill.
25723         * tree-cfg.c (update_modified_stmts): Do not update when operands are
25724         not active.
25725         * passes.c (init_optimizations_passes): Reorder so we go into SSA
25726         during early_local_passes.
25727         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
25730 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
25732         * Makefile.in: Update copyright year.
25734 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
25736         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
25737         in $(lang_checks) and check-consistency targets.
25739 2007-01-02  Jan Hubicka  <jh@suse.cz>
25741         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
25742         Do not add referenced vars.
25743         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
25744         are not active.
25745         * passes.c (init_optimization_passes): Put mudflap_2 after
25746         free_datastructures.
25748 2007-01-02  Jan Hubicka  <jh@suse.cz>
25750         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
25751         Set NOTHROW flag on call statements proved to be nothrow.
25752         Update statement of local calls so new pure/const functions are
25753         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
25754         goto receivers.
25755         (tree_rest_of_compilation): Register hooks and initialize bitmap
25756         early. Do not set after_inlining flag.
25758 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
25760         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
25761         HOST_BITS_PER_LONGLONG
25763 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
25765         PR c/19977
25766         * c-typeck.c (store_init_value): Don't emit pedantic overflow
25767         warning for non-static initializers.
25769 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
25771         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
25772         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
25773         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
25774         Always use set_unique_reg_note to add REG_EQUAL notes.
25776 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25778         Revert:
25779         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25781         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25782         * cfgbuild.c (find_basic_blocks): Likewise.
25783         * cfgrtl.c (rtl_create_basic_block): Likewise.
25784         * function.c (temp_slots_at_level): Likewise.
25785         * reg-stack.c (stack_regs_mentioned): Likewise.
25786         * regclass.c (allocate_reg_info): Likewise.
25787         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25788         set_bb_for_stmt, move_block_to_fn): Likewise.
25789         * tree-complex.c (tree_lower_complex): Likewise.
25790         * vec.h (VEC_safe_grow_cleared): New.
25792 2007-01-02  Ian Lance Taylor  <iant@google.com>
25794         * c-common.c (c_common_truthvalue_conversion): When warning about
25795         using an assignment as a truth value, set TREE_NO_WARNING.
25797 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25799         PR middle-end/7651
25800         * c.opt (Wold-style-declaration): New.
25801         * doc/invoke.texi (C-only Warning Options): New.
25802         (Wold-style-declaration): Document it.
25803         (Wextra): Enabled by -Wextra.
25804         * c-opts.c (c_common_post_options): Enabled by -Wextra.
25805         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
25806         -Wold-style-declaration.
25808 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25810         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25811         * cfgbuild.c (find_basic_blocks): Likewise.
25812         * cfgrtl.c (rtl_create_basic_block): Likewise.
25813         * function.c (temp_slots_at_level): Likewise.
25814         * reg-stack.c (stack_regs_mentioned): Likewise.
25815         * regclass.c (allocate_reg_info): Likewise.
25816         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25817         set_bb_for_stmt, move_block_to_fn): Likewise.
25818         * tree-complex.c (tree_lower_complex): Likewise.
25819         * vec.h (VEC_safe_grow_cleared): New.
25821 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
25823         * c-common.c (c_common_nodes_and_builtins): Since variants of
25824         void_type_node get built before it is given a name, we need to
25825         give those variants the name, too.
25826         (complete_array_type): We need to work with the canonical main
25827         type of the array, from which we will build the qualified version.
25828         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
25829         * print-tree.c (print_node): Display canonical type information
25830         for each type.
25831         * stor-layout.c (layout_type): When we don't know the
25832         alignment of a type for which we're building an array, we end up
25833         guessing wrong, so make the type require structural equality.
25834         * tree.c (make_node_stat): When we build a new type, it is its
25835         own canonical type.
25836         (build_type_attribute_qual_variant): When building an attribute
25837         variant, its canonical type is the non-attribute variant. However,
25838         if the attributes are target-dependent and they differ, we need to
25839         use structural equality checks for this type.
25840         (build_qualified_type): A qualified type is not equivalent to its
25841         unqualified variant; set the canonical type appropriately.
25842         (build_distinct_type_copy): When building a distinct type from
25843         another type, the new type is its own canonical type.
25844         (build_variant_type_copy): When building a new type variant, we
25845         assume that it is equivalent to the original type.
25846         (build_pointer_type_for_mode): When building a pointer type, also
25847         build a canonical type pointer.
25848         (build_reference_type_for_mode): When building a reference type,
25849         also build a canonical type reference.
25850         (build_index_type): When we can't hash an index type (e.g.,
25851         because its maximum value is negative), the index type requires
25852         structural equality tests.
25853         (build_array_type): Build the canonical form of an array type.
25854         (build_function_type): Function types require structural equality,
25855         because they contain default arguments, attributes, etc.
25856         (build_method_type_directly): Ditto for method types.
25857         (build_offset_type): Build the canonical offset type.
25858         (build_complex_type): Build the canonical vector type.
25859         (make_vector_type): Build the canonical vector type.
25860         * tree.h (TYPE_CANONICAL): New.
25861         (TYPE_STRUCTURAL_EQUALITY_P): New.
25862         (SET_TYPE_STRUCTURAL_EQUALITY): New.
25863         (struct tree_type): Added "canonical" field.
25864         * params.h (VERIFY_CANONICAL_TYPES): New.
25865         * doc/c-tree.texi (TYPE_CANONICAL): Document.
25866         (TYPE_STRUCTURAL_EQUALITY_P): Document.
25867         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
25868         * doc/invoke.texi (verify-canonical-types): Document --param
25869         parameter for verifying canonical types.
25871 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25873         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
25874         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
25875         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
25876         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
25877         tm_file.
25878         * config/rs6000/e500.h: New.
25879         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
25880         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
25881         Remove.
25882         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
25883         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
25884         TARGET_E500_DOUBLE): Remove.
25885         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
25886         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
25887         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
25888         * config/rs6000/rs6000.c (rs6000_override_options): Use
25889         CHECK_E500_OPTIONS.
25891 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25893         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
25894         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
25895         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
25896         rs6000_emit_cmove): Don't check TARGET_E500.
25897         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
25898         sordered): Don't check TARGET_E500.
25900 2007-01-01  Eric Christopher  <echristo@apple.com>
25902         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
25903         HARD_REGISTER_NUM_P.
25905 2007-01-01  Roger Sayle  <roger@eyesopen.com>
25907         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
25908         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
25909         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
25910         eq/ne Y".
25912 2007-01-01  Mike Stump  <mrs@apple.com>
25914         * configure.ac: Remove support for building with Apple's gcc-3.1.
25916 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25918         PR middle-end/30311
25919         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
25920         REG is a hard register.  Do not modify REG before calling
25921         subreg_nregs.
25922         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
25923         multiple of the size of YMODE for certain lowpart cases.
25925 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25927         PR middle-end/30253
25928         * gimplify (voidify_wrapper_expr): Update for
25929         GIMPLE_MODIFY_STMT.
25931 2007-01-01  Andreas Schwab  <schwab@suse.de>
25933         PR target/29166
25934         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
25935         save of BR0 in extra_spill_size instead of spill_size.
25936         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
25937         area.
25938         (ia64_expand_epilogue): Restore BR0 from its new location.
25940 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25942         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
25943         Use a temporary variable if the left hand side is not a gimple
25944         register.
25946 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25948         * gimplify.c (gimplify_return_expr): Make the temporary variable
25949         for the return expression, a gimple register variable.
25951 2007-01-01  Jan Hubicka  <jh@suse.cz>
25953         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
25954         INSN_LIST.
25956 2007-01-01  Mike Stump  <mrs@apple.com>
25958         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
25959         .literal16.
25960         * config/darwin.c (machopic_select_rtx_section): Use
25961         HAVE_GAS_LITERAL16.
25962         (darwin_mergeable_constant_section): Likewise.
25963         * configure: Regenerate.
25964         * config.in: Regenerate.
25966 2007-01-01  Jan Hubicka  <jh@suse.cz>
25967             Andrew Pinski  <pinskia@gmail.com>
25969         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
25970         before starting IPA passes.