OSDN Git Service

35822ba7e9fddfb8aa71790eb0678245bb7a092d
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-08-20  Richard Guenther  <rguenther@suse.de>
2
3         * c-typeck.c (convert_for_assignment): Use the type of
4         the member for the initialization.
5
6 2007-08-20  Richard Guenther  <rguenther@suse.de>
7
8         * c-objc-common.c (c_disregard_inline_limits): Remove.
9         * c-objc-common.h (c_disregard_inline_limits): Likewise.
10         * cgraphunit.c (cgraph_process_new_functions): Call
11         disregard_inline_limits_p.
12         (cgraph_preserve_function_body_p): Likewise.
13         * ipa-inline.c (compute_inline_parameters): Likewise.
14         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
15         Remove.
16         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
17         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
18         disregard_inline_limits langhook.
19         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
20         Remove.
21         * langhooks.h (lang_hooks_for_tree_inlining): Remove
22         disregard_inline_limits langhook.
23         * tree-inline.c (disregard_inline_limits_p): New function.
24         * tree-inline.h (disregard_inline_limits_p): Declare.
25
26 2007-08-20  Richard Guenther  <rguenther@suse.de>
27
28         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
29         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
30         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
31         auto_var_in_fn_p langhook.
32         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
33         move ...
34         * tree.c (auto_var_in_fn_p): ... here.
35         (find_var_from_fn): Call auto_var_in_fn_p directly.
36         * langhooks.h (lang_hooks_for_tree_inlining): Remove
37         auto_var_in_fn_p langhook.
38         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
39         (copy_body_r): Likewise.
40         (self_inlining_addr_expr): Likewise.
41         * tree.h (auto_var_in_fn_p): Declare.
42
43 2007-08-20  Richard Guenther  <rguenther@suse.de>
44
45         * tree.c (WALK_SUBTREE): Call walk_tree_1.
46         (walk_type_fields): Take lh parameter.
47         (walk_tree): Rename to ...
48         (walk_tree_1): ... this.  Do not call the walk_subtrees
49         langhook but the now passed callback.  Pass lh on recursion.
50         (walk_tree_without_duplicates): Rename to ...
51         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
52         and call walk_tree_1.
53         * tree.h (walk_tree_lh): New typedef.
54         (walk_tree_1): Declare.
55         (walk_tree_without_duplicates_1): Likewise.
56         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
57         (walk_tree_without_duplicates): New define to
58         walk_tree_without_duplicates_1 with NULL lh parameter.
59         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
60         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
61         langhook.
62         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
63         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
64         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
65         initializer.
66
67 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
68
69         PR middle-end/30564
70         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
71         code in front of the compacting of basic blocks.
72         Move the folding of statements inbetween the cgraph checking
73         and compacting of basic blocks.
74
75 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
76            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
77
78         PR target/32522
79         * config/alpha/alpha.c (va_list_skip_additions): Check for
80         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
81         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
82         PLUS_EXPR when checking ap.__base.
83         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
84         when doing addition on pointer types.  Use size_int instead of
85         build_int_cst.
86         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
87         ptr_type in the second operand.
88
89 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
90
91         PR target/33115
92         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
93
94 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
95
96         PR middle-end/32940
97         * cfgexpand.c  (expand_one_register_var): Mark pointer
98         DECL_ARTIFICIAL as REG_POINTER also.
99         * stmt.c (expand_decl): Likewise.
100
101 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
102
103         Fix PR 32772
104         Fix PR 32716
105         Fix PR 32328
106         Fix PR 32303
107
108         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
109         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
110         on_worklist argument and avoid adding things to worklist multiple
111         times.
112         (add_to_worklist): Ditto.
113         (mark_aliases_call_clobbered): Mark entire structure clobbered if
114         single SFT is clobbered.
115         (set_initial_properties): Ditto.
116         (compute_call_clobbered): Update for changes to function
117         arguments.
118         (create_overlap_variables_for): Always create SFT for offset 0.
119         (create_structure_vars): Handle PHI's, since we are in SSA form at
120         this point.
121         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
122         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
123         TARGET_MEM_REF.
124         (add_vars_for_offset): Figure out aliases from access + points-to.
125         (add_virtual_operand): Use add_vars-for_offset.
126         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
127         (add_call_clobber_ops): Remove makes_clobbering_call set.
128         (get_expr_operands): Always pass through the INDIRECT_REF
129         reference.
130         * tree-ssa-structalias.c (struct constraint_graph): Remove
131         variables member.
132         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
133         address_taken, pt_used, number_incoming.
134         (FIRST_ADDR_NODE): Removed.
135         (merge_graph_nodes): Remove broken code for the moment.
136         (init_graph): New function.
137         (build_pred_graph): Remove code to init_graph.
138         Add location equivalence support.
139         (struct scc_info): Rename roots to deleted.
140         (scc_visit): Ditto.
141         (init_scc_info): Ditto
142         (init_topo_info): Use graph->size.
143         (compute_topo_order): Ditto.
144         (do_da_constraint): Removed.
145         (do_sd_constraint): Remove calls to find().
146         set_union_with_increment should always get 0 as last arg here.
147         (do_complex_constraint): Replace do_da_constraint with assert.
148         Stop calling find.
149         (struct equiv_class_label): New.
150         (pointer_equiv_class_table): Ditto.
151         (location_equiv_class_table): Ditto.
152         (equiv_class_label_hash): Ditto.
153         (equiv_class_label_eq): Ditto
154         (equiv_class_lookup): Ditto.
155         (equiv_class_ladd): Ditto.
156         (pointer_equiv_class): Ditto.
157         (location_equiv_class): Ditto.
158         (condense_visit): Rename and rewrite from label_visit to do only
159         SCC related stuff for HU.
160         (label_visit): Do HU work for HU.
161         (perform_var_substitution): Update to do HU and location
162         equivalence.
163         (free_var_substitution_info): Update to free HU and location
164         equivalence structures.  */
165         (find_equivalent_node): Update for pointer but not location
166         equivalence.
167         (unite_pointer_equivalences): New function.
168         (move_complex_constraints): Rewrite to only do moving.
169         (rewrite_constraints): Split out of move_complex_constraints.
170         (solve_graph): Use graph->size.
171         (process_constraint_1): Add from_call argument, use it.
172         Split *a = &b into two constraints.
173         (process_constraint): Use new process_constraint_1.
174         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
175         (get_constraint_for): Handle non-pointer integers properly.
176         Remove code that used to handle structures.
177         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
178         with unknown addends.
179         (handle_rhs_call): New function.
180         (find_func_aliases): Use handle_rhs_call.
181         (set_uids_in_ptset): Add an assert.
182         (set_used_smts): Fix bug in not considering unified vars.
183         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
184         (compute_points_to_sets): Update for other function changes.
185         (delete_points_to_sets): Ditto.
186         (ipa_pta_execute): Ditto.
187         (pass_ipa_pta): We need to update SSA after ipa_pta.
188         
189 2007-08-19  Jan Hubicka  <jh@suse.cz>
190
191         * i386.md: Replace "rim" and "mri" constraints by "g".
192
193 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
194
195         * dwarf2out.c (text_section_used, cold_text_section_used,
196         cold_text_section, dwarf2out_note_section_used): New.
197         (dwarf2out_init): Initialize cold_text_section.
198         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
199         dwarf2out_note_section_used.
200         (size_of_aranges): Only count entry for text section if it was
201         used.  Count entry for cold text section if it was used.
202         (output_aranges): Only output entries for text section and cold
203         text section if they were used.
204
205 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
206
207         * tree-pretty-print.c (debug_generic_expr): Add a comment about
208         the function.
209         (debug_generic_stmt): Likewise.
210         (debug_tree_chain): Likewise.
211
212 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
213
214         * tree-data-refs.c (split_constant_offset): Expose.
215         * tree-data-refs.h (split_constant_offset): Add declaration.
216
217         * tree-vectorizer.h (dr_alignment_support): Renamed
218         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
219         Added a new value dr_explicit_realign.
220         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
221         dr_offset, dr_step, and dr_aligned_to, along with new access
222         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
223         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
224         STMT_VINFO_DR_ALIGNED_TO.
225
226         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
227         documentation.
228         In case of outer-loop vectorization with non-fixed misalignment - use
229         the dr_explicit_realign scheme instead of the optimized realignment
230         scheme.
231         (new_stmt_vec_info): Initialize new fields.
232
233         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
234         'nested_in_vect_loop' case. Change verbosity level.
235         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
236         Don't fail on zero step in the outer-loop for loads.
237         (vect_analyze_data_refs): Call split_constant_offset to calculate base,
238         offset and init relative to the outer-loop.
239
240         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
241         BSI function argument with a new function argument - at_loop.
242         Simplify the condition that determines STEP. Takes additional argument
243         INV_P. Support outer-loop vectorization (handle the nested_in_vect_loop
244         case), including zero step in the outer-loop. Call
245         vect_create_addr_base_for_vector_ref with additional argument.
246         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
247         Updated function documentation. Handle the 'nested_in_vect_loop' case.
248         Fixed and simplified calculation of step.
249         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
250         of bsi, and with additional argument. Call bump_vector_ptr with
251         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
252         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
253         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
254         when the realignment setup needs to take place inside the loop.  Support
255         the dr_explicit_realign scheme. Allow generating the optimized
256         realignment scheme for outer-loop vectorization. Added documentation.
257         (vectorizable_load): Support the dr_explicit_realign scheme. Handle the
258         'nested_in_vect_loop' case, including loads that are invariant in the
259         outer-loop and the realignment schemes. Handle the case when the
260         realignment setup needs to take place inside the loop. Call
261         vect_setup_realignment with additional arguments.  Call
262         vect_create_data_ref_ptr with additional argument and with loop instead
263         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
264         (vect_gen_niters_for_prolog_loop): Call
265         vect_create_addr_base_for_vector_ref with additional arguments.
266         (vect_create_cond_for_align_checks): Likewise.
267         (bump_vector_ptr): Updated to support the new dr_explicit_realign
268         scheme: takes additional argument bump; argument ptr_incr is now
269         optional; updated documentation.
270         (vect_init_vector): Takes additional argument (bsi). Use it, if
271         available, to insert the vector initialization.
272         (get_initial_def_for_induction): Pass additional argument in call to
273         vect_init_vector.
274         (vect_get_vec_def_for_operand): Likewise.
275         (vect_setup_realignment): Likewise.
276         (vectorizable_load): Likewise.
277
278 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
279
280         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
281         as argument instead of struct loop.
282         (nested_in_vect_loop_p): New function.
283         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
284         vect_used_in_outer.
285         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
286         from other phis in the loop.
287         (destroy_loop_vec_info): Add additional argument to declaration.
288
289         * tree-vectorizer.c (supportable_widening_operation): Also check if
290         nested_in_vect_loop_p (don't allow changing the order in this case).
291         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
292         of struct loop. Call nested_in_vect_loop_p and don't require
293         flag_unsafe_math_optimizations if it returns true.
294         (new_stmt_vec_info): When setting def_type for phis differentiate 
295         loop-header phis from other phis.
296         (bb_in_loop_p): New function.
297         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so just
298         update their loop_vinfo.  Order of BB traversal now matters - call
299         dfs_enumerate_from with bb_in_loop_p.
300         (destroy_loop_vec_info): Takes additional argument to control whether
301         stmt_vinfo of the loop stmts should be destroyed as well.
302         (vect_is_simple_reduction): Allow the "non-reduction" use of a
303         reduction stmt to be defines by a non loop-header phi.
304         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
305
306         * tree-vect-transform.c (vectorizable_reduction): Call
307         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
308         (vectorizable_call): Likewise.
309         (vectorizable_conversion): Likewise.
310         (vectorizable_operation): Likewise.
311         (vectorizable_type_promotion): Likewise.
312         (vectorizable_type_demotion): Likewise.
313         (vectorizable_store): Likewise.
314         (vectorizable_live_operation): Likewise.
315         (vectorizable_reduction): Likewise. Also pass loop_info to
316         vect_is_simple_reduction instead of loop.
317         (vect_init_vector): Call nested_in_vect_loop_p.
318         (get_initial_def_for_reduction): Likewise.
319         (vect_create_epilog_for_reduction): Likewise.
320         (vect_init_vector): Check which loop to work with, in case there's an
321         inner-loop.
322         (get_initial_def_for_inducion): Extend to handle outer-loop
323         vectorization. Fix indentation.
324         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
325         In the case vect_induction_def get the vector def from the induction
326         phi node, instead of calling get_initial_def_for_inducion.
327         (get_initial_def_for_reduction): Extend to handle outer-loop 
328         vectorization.
329         (vect_create_epilog_for_reduction): Extend to handle outer-loop
330         vectorization.
331         (vect_transform_loop): Change assert to just skip this case.  Add a
332         dump printout.
333         (vect_finish_stmt_generation): Add a couple asserts.
334
335         (vect_estimate_min_profitable_iters): Multiply
336         cost of inner-loop stmts (in outer-loop vectorization) by estimated
337         inner-loop bound.
338         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
339         this is an inner-loop reduction in outer-loop vectorization.
340
341         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
342         Same code as what used to be vect_analyze_scalar_cycles, only with
343         additional argument loop, and loop_info passed to
344         vect_is_simple_reduction instead of loop.
345         (vect_analyze_scalar_cycles): Code factored out into
346         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
347         Updated documentation.
348         (analyze_operations): Check for inner-loop loop-closed exit-phis during
349         outer-loop vectorization that are live or not used in the outerloop,
350         cause this requires special handling.
351         (vect_enhance_data_refs_alignment): Don't consider versioning for
352         nested-loops.
353         (vect_analyze_data_refs): Check that there are no datarefs in the
354         inner-loop.
355         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
356         and vect_used_in_outer_by_reduction cases.
357         (process_use): Also consider the case of outer-loop stmt defining an
358         inner-loop stmt and vice versa.
359         (vect_analyze_loop_1): New function.
360         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
361         loops.  Call vect_analyze_loop_1.
362         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
363         been vectorized.  Call destroy_loop_vec_info with additional argument.
364
365         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
366         in the inner-loop when doing outer-loop vectorization. Add
367         documentation and printout.
368         (vect_recog_dot_prod_pattern): Likewise. Also add check for
369         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
370
371 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
372
373         * tree-affine.h (print_aff): New prototype.
374         (debug_aff): Likewise.
375         * tree-affine.c (print_aff): New function.
376         (debug_aff): Likewise.
377
378 2007-08-18  Paul Brook  <paul@codesourcery.com>
379             Joseph Myers  <joseph@codesourcery.com>
380
381         * common.opt (-fdebug-prefix-map=): New option.
382         * opts.c: Include debug.h.
383         (common_handle_option): Handle -fdebug-prefix-map.
384         * final.c: Include ggc.h.
385         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
386         remap_debug_filename): New.
387         * Makefile.in (final.o, opts.o): Update dependencies.
388         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
389         * configure.ac: Check for assembler --debug-prefix-map support.
390         * configure, config.in: Regenerate.
391         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
392         (ASM_DEBUG_SPEC): Include ASM_MAP.
393         * doc/install.texi (--with-debug-prefix-map): Document.
394         * doc/invoke.texi (-fdebug-prefix-map): Document.
395         * dbxout.c (dbxout_init, dbxout_start_source_file,
396         dbxout_source_file): Call remap_debug_filename.
397         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
398         dwarf2out_start_source_file, dwarf2out_finish): Call
399         remap_debug_filename.
400         (file_table_relative_p): Do not check d->emitted_number.
401         * toplev.c (output_file_directive): Call remap_debug_filename.
402         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
403         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
404
405 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
406
407         * loop-invariant.c (find_invariants_to_move): Add missing macro
408         argument.
409
410 2007-08-17  Tom Tromey  <tromey@redhat.com>
411
412         * tree.h (struct tree_label_decl): Removed old "java" fields.
413
414 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
415             Nigel Stephens  <nigel@mips.com>
416
417         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
418         Treat -mno-data-in-code and -mcode-xonly as aliases for
419         -mcode-readable=no and -mcode-readable=pcrel respectively.
420         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
421         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
422         (MULTILIB_DIRNAMES): Update accordingly.
423
424 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
425
426         * Makefile.in (version.o): Depend on $(REVISION) only if
427         REVISION_s is defined.
428
429 2007-08-17  Sa Liu  <saliu@de.ibm.com>
430             Ulrich Weigand  <uweigand@de.ibm.com>
431
432         PR middle-end/32970
433         * tree.c (reconstruct_complex_type): For a pointer to a vector,
434         use build_qualified_type to retain qualifiers of the base type.
435
436 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
437
438         * config/score/score.md : Update pattern tablejump.
439         * config/score/score.c : Update score_initialize_trampoline 
440         function.
441         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
442         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
443         * doc/contrib.texi: Add my entry.
444
445 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
446
447         * Makefile.in (REVISION): New.
448         (REVISION_c): New.
449         (REVISION_s): New.
450         (version.o): Also depend on $(REVISION). Add
451         -DREVISION=$(REVISION_s).
452
453         * version.c (version_string): Add REVISION.
454
455 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
456
457         * tree-eh.c (lower_try_finally_onedest): Reset the locus
458         of GOTO that's relocated to a different block.
459
460 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
461
462         * c-common.c (const_strip_array_types): New.
463         * c-common.h (lang_missing_noreturn_ok_p): Delete.
464         (const_strip_array_types): New.
465         * c-objc-common.c (c_disregard_inline_limits,
466         c_warn_unused_global_decl): Constify.
467         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
468         c_vla_type_p, c_incomplete_type_error): Likewise.
469         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
470         * hooks.c (hook_bool_const_tree_false): New.
471         * hooks.h (hook_bool_const_tree_false): Likewise.
472         * langhooks-def.h (lhd_warn_unused_global_decl,
473         lhd_incomplete_type_error, lhd_expr_size,
474         lhd_tree_inlining_disregard_inline_limits,
475         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
476         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
477         * langhooks.c (lhd_warn_unused_global_decl,
478         lhd_incomplete_type_error,
479         lhd_tree_inlining_disregard_inline_limits,
480         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
481         lhd_expr_size): Likewise.
482         * langhooks.h (lang_hooks_for_tree_inlining,
483         lang_hooks_for_tree_dump, lang_hooks_for_types,
484         lang_hooks_for_decls, lang_hooks): Likewise.
485         * pointer-set.c (pointer_set_t, pointer_set_create,
486         pointer_set_contains, insert_aux, pointer_set_insert,
487         pointer_set_traverse, pointer_map_t, pointer_map_create,
488         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
489         Likewise.
490         * pointer-set.h (pointer_set_contains, pointer_set_insert,
491         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
492         pointer_map_traverse): Likewise.
493         * predict.c (assert_is_empty): Likewise.
494         * tree-affine.c (free_name_expansion): Likewise.
495         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
496         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
497         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
498
499 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
500
501         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
502         field.
503         (destroy_loop_vec_info): Add call to VEC_free.
504         * tree-vectorizer.h (may_alias_ddrs): Define.
505         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
506         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
507         Change reporting to dump.
508         (vect_is_duplicate_ddr): New.
509         (vect_mark_for_runtime_alias_test): New.
510         (vect_analyze_data_ref_dependences) Add call to
511         vect_mark_for_runtime_alias_test.
512         (vect_enhance_data_refs_alignment): Define local variable
513         vect_versioning_for_alias_required, don't perform
514         peeling for alignment if versioning for alias is
515         required.
516         (vect_enhance_data_refs_alignment): Use
517         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
518         PARAM_VECT_MAX_VERSION_CHECKS.
519         * tree-vect-transform.c
520         (vect_create_cond_for_alias_checks): New.
521         (vect_transform_loop): Add call to
522         vect_create_cond_for_alias_checks.
523         (vect_vfa_segment_size): New.
524         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
525         Rename.
526         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
527         * gcc/doc/invoke.texi
528         (vect-max-version-for-alignment-checks): Document.
529         (vect-max-version-for-alias-checks): Document.
530         (vect-max-version-checks): Remove.
531      
532 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
533
534         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
535         the same line as the instruction for all asm dialects.
536         (*rep_movsi): Ditto.
537         (*rep_movsi_rex64): Ditto.
538         (*rep_movqi): Ditto.
539         (*rep_movqi_rex64): Ditto.
540         (*rep_stosdi_rex64): Ditto.
541         (*rep_stossi): Ditto.
542         (*rep_stossi_rex64): Ditto.
543         (*rep_stosqi): Ditto.
544         (*rep_stosqi_rex64): Ditto.
545         (*cmpstrnqi_nz_1): Ditto.
546         (*cmpstrnqi_nz_rex_1): Ditto.
547         (*cmpstrnqi_1): Ditto.
548         (*cmpstrnqi_rex_1): Ditto.
549         (*strlenqi_1): Ditto.
550         (*strlenqi_rex_1): Ditto.
551         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
552         prefix on the same line as the instruction for all asm dialects.
553         (sync_double_compare_and_swap<mode>): Ditto.
554         (*sync_double_compare_and_swapdi_pic): Ditto.
555         (*sync_compare_and_swap_cc<mode>): Ditto.
556         (sync_double_compare_and_swap_cc<mode>): Ditto.
557         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
558         (sync_old_add<mode>): Ditto.
559         (sync_add<mode>): Ditto.
560         (sync_sub<mode>): Ditto.
561         (sync_ior<mode>): Ditto.
562         (sync_and<mode>): Ditto.
563         (sync_xor<mode>): Ditto.
564
565 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
566
567         PR middle-end/32897
568         * reload.c (find_reloads): Check that the memory returned by
569         find_reloads_toplev was not the result of forcing a constant
570         to memory.
571         (find_reloads_toplev): Always use simplify_gen_subreg to get
572         the subreg of a constant.  If the result is also a constant,
573         but not a legitimate one, force it into the constant pool
574         and reload its address.
575
576 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
577
578         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
579         POPCOUNT.
580
581 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
582
583         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
584         directive for the current vector ABI.
585
586 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
587
588         PR target/32963
589         * caller-save.c (reg_save_code): Set invalide status on restore code.
590         
591 2007-08-15  Diego Novillo  <dnovillo@google.com>
592
593         * tree-ssa-alias.c (compute_memory_partitions): Use
594         alias_bitmap_obstack to allocate bitmaps.
595         (reset_alias_info): Factor out of init_alias_info.
596         Mark all name tags not associated to an SSA name for renaming.
597         (init_alias_info): Call it.
598         (create_name_tags): Tidy.  Add comments.
599         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
600
601 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
602
603         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
604         scheduler dependencies.
605
606 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
607
608         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
609         "register_operand".
610         (*iorsi_1_zext): Likewise.
611         (*iorsi_1_zext_imm): Likewise.
612         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
613         with "rm"/"xm" constraint.
614         (sse2_vmsqrtv2df2): Likewise.
615
616 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
617
618         PR middle-end/33074
619         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
620         REG_LIBCALL note.
621
622 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
623
624         * tree-pass.h (PROP_pta): Removed.
625         (TODO_rebuild_alias): New.
626         (pass_may_alias): Removed.
627         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
628         aliasing if we changed something.
629         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
630         SSA internally.
631         (pass_may_alias): Removed.
632         (create_structure_vars): Return TODO_rebuild_alias.
633         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
634         * tree-sra.c (tree_sra): Only rebuild aliasing if something
635         changed.
636         (tree_sra_early): We never affect aliasing right now.
637         * tree-flow.h (compute_may_aliases): New prototype.
638         * passes.c: Remove pass_may_alias from the passes.
639         (execute_function_todo): Support TODO_rebuild_alias.    
640
641 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
642
643         * i386.c: (legitimize_address): Move dllimported variable check
644         infront of legitimizing pic address of CONST symbols.
645
646 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
647
648         PR tree-optimization/32941
649         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
650         (goto_queue_cmp): Remove.
651         (find_goto_replacement): Change search method.
652         (maybe_record_in_goto_queue): Add assert.
653         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
654         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
655
656 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
657
658         * alias.c (component_uses_parent_alias_set): Constify.
659         * alias.h (component_uses_parent_alias_set): Likewise.
660         * cfgrtl.c (print_rtl_with_bb): Likewise.
661         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
662         mpz_get_double_int): Likewise.
663         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
664         mpz_get_double_int): Likewise.
665         * expr.c (is_aligning_offset, undefined_operand_subword_p,
666         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
667         Likewise.
668         * expr.h (safe_from_p): Likewise.
669         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
670         Likewise.
671         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
672         zero_sized_type, goa_lhs_expr_p): Likewise.
673         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
674         * rtl.h (print_rtl_with_bb): Likewise.
675         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
676         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
677         * tree-flow-inline.h (bb_stmt_list): Constify.
678         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
679         cbsi_stmt): New.
680         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
681         const_first_stmt, const_last_stmt): New.
682         (block_may_fallthru, empty_block_p): Constify.
683         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
684         EXPR_ONLY_BODY): New.
685         (expr_first, expr_last, expr_only): Use macro for body.
686         (const_expr_first, const_expr_last, const_expr_only): New.
687         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
688         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
689         ctsi_prev, ctsi_stmt): New.
690         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
691         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
692         * tree-ssa-loop-niter.c (loop_only_exit_p,
693         derive_constant_upper_bound): Likewise.
694         * tree-ssa-phiopt.c (empty_block_p): Likewise.
695         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
696         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
697         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
698         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
699         * tree.c (get_type_static_bounds): Likewise.
700         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
701         (get_type_static_bounds): Constify.
702
703 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
704
705         PR target/30315
706         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
707         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
708         (*<addsub><mode>3_cc_overflow): New.
709         (*add<mode>3_cconly_overflow): New.
710         (*sub<mode>3_cconly_overflow): New.
711         (*<addsub>si3_zext_cc_overflow): New.
712         * config/i386/predicates.md (fcmov_comparison_operator): Accept
713         CCCmode for LTU, GTU, LEU and GEU.
714         (ix86_comparison_operator): Likewise.
715         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
716         * config/i386/i386.c (put_condition_code): Support CCCmode.
717         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
718         or MINUS expressions.
719
720 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
721
722         PR c/30428
723         * c-typeck.c (build_binary_op): Disallow vector float types with
724         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
725
726 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
727
728         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
729         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
730         (dep_def): New typedef.
731         (init_dep_1, sd_debug_dep): Declare functions.
732         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
733         (debug_dep_links): Remove.
734         (struct _deps_list): New field 'n_links'.
735         (DEPS_LIST_N_LINKS): New macro.
736         (FOR_EACH_DEP_LINK): Remove.
737         (create_deps_list, free_deps_list, delete_deps_list): Remove
738         declaration.
739         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
740         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
741         (copy_deps_list_change_con, move_dep_link): Ditto.
742         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
743         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
744         'dep_count'.
745         (INSN_BACK_DEPS): Remove.
746         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
747         New macros.
748         (INSN_DEP_COUNT): Remove.
749         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
750         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
751         Declare global variables.
752         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
753         (add_forw_dep, compute_forward_dependences): Remove declarations.
754         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
755         (add_back_forw_dep, delete_back_forw_dep): Ditto.
756         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
757         functions.
758         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW): New
759         constants.
760         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
761         (sd_list_types_def): New typedef.
762         (sd_next_list): Declare function.
763         (struct _sd_iterator): New type.
764         (sd_iterator_def): New typedef.
765         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
766         functions.
767         (FOR_EACH_DEP): New cycle wrapper.
768         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
769         Declare functions.
770         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
771         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
772         Ditto.
773
774         * sched-deps.c (init_dep_1): Make global.
775         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
776         constants.
777         (dump_dep): New static function.
778         (dump_dep_flags): New static variable.
779         (sd_debug_dep): New function.
780         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
781         the list.
782         (move_dep_link): Use remove_from_deps_list (), instead of
783         detach_dep_link ().
784         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
785         (dep_link_is_detached_p): New static function.
786         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
787         instead.
788         (dn_pool, dl_pool): New alloc_pools.
789         (dn_pool_diff, dl_pool_diff): New static variables.
790         (create_dep_node, delete_dep_node): New static function.
791         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
792         (deps_list_empty_p): Make it static.  Use 'n_links' field.
793         (deps_pools_are_empty_p): New static function.
794         (alloc_deps_list, delete_deps_list): Remove.
795         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
796         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
797         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
798         (forward_dependency_cache): Remove.
799         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
800         'back' from the names.  Change signature to use dep_t instead of
801         equivalent quad.
802         (add_back_dep): Ditto.  Make global.
803         (check_dep_status): Rename to check_dep ().
804         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
805         New functions.
806         (sd_finish_insn): Ditto.
807         (sd_find_dep_between_no_cache): New static function.
808         (sd_find_dep_between): New function.
809         (ask_dependency_caches, set_dependency_caches): New static functions.
810         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
811         (add_or_update_dep_1): Separate pieces of functionality into
812         ask_dependency_caches (), update_dependency_caches (),
813         change_spec_dep_to_hard (), update_dep ().
814         (get_back_and_forw_lists): New static function.
815         (sd_add_dep): Separate setting of dependency caches into
816         set_dependency_caches ().
817         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
818         New functions.
819         (sd_delete_dep): Ditto.
820         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
821         (dump_lists): New static function.
822         (sd_debug_lists): New debug function.
823         (delete_all_dependences, fixup_sched_groups): Update to use
824         sd_* infrastructure.
825         (sched_analyze_2): Create data-speculative dependency only if
826         data-speculation is enabled.
827         (sched_analyze_insn): If insn cannot be speculative, make all its
828         dependencies non-speculative.
829         (sched_analyze): Use sd_init_insn ().
830         (add_forw_dep, compute_forward_dependencies): Remove.
831         (delete_dep_nodes_in_back_deps): New static function.
832         (sched_free_deps): New function.
833         (init_dependency_caches): Init alloc_pools.
834         (extend_depedency_caches): Update after removing of
835         forward_dependency_cache.
836         (free_dependency_caches): Ditto.  Free alloc_pools.
837         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
838         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
839         Ditto.
840         (add_back_forw_dep, delete_back_forw_dep): Ditto.
841         (add_dependence): Use init_dep ().
842         (get_dep_weak_1): New static function.
843         (get_dep_weak): Move logic to get_dep_weak_1 ().
844         (dump_ds): New static function moved from haifa-sched.c:
845         debug_spec_status ().
846         (debug_ds): New debug function.
847         (check_dep_status): Rename to check_dep ().  Update to check whole
848         dependencies.
849
850         * haifa-sched.c (spec_info): Make global.
851         (added_recovery_block_p): Rename to
852         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
853         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
854         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
855         to use new interfaces.
856         (ok_for_early_queue_removal): Ditto.
857         (schedule_block): Initialize logical uids of insns emitted by the
858         target.
859         (sched_init): Initialize new variable.
860         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
861         interfaces.
862         (extend_global): Initialize insn data.
863         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
864         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
865         new interfaces.
866         (add_to_speculative_block): Update to use new interfaces.
867         (create_recovery_block): Set new variables.
868         (create_check_block_twin, fix_recovery_deps): Update to use new
869         interfaces.
870         (sched_insn_is_legitimate_for_speculation_p): New function.
871         (speculate_insn): Move checking logic to
872         sched_insn_is_legitimate_for_speculation_p ().
873         (sched_remove_insn): Finalize sched-deps information of instruction.
874         (clear_priorities, add_jump_dependencies): Update to use new
875         interfaces.
876         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
877         
878         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
879         to use new interfaces.
880         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
881         (new_ready): Try to use control speculation only if it is available.
882         (add_branch_dependences): Update to use new interfaces.
883         (compute_block_backward_dependences): Rename to
884         compute_block_dependences ().  Call
885         targetm.sched.dependencies_evaluation_hook ().
886         (free_block_dependencies): New static function.
887         (debug_dependencies): Update to use new interfaces.
888         (schedule_region): Remove separate computation of forward dependencies.
889         Move call of targetm.sched.dependencies_evaluation_hook () to
890         compute_block_dependences ().  Free dependencies at the end of
891         scheduling the region.
892
893         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
894         new interfaces.
895         (add_deps_for_risky_insns): Ditto.
896         (schedule_ebb): Remove separate computation of forward dependencies.
897         Free dependencies at the end of scheduling the ebb.
898
899         * ddg.c (create_ddg_dependence): Update to use new interfaces.
900         (build_intra_loop_deps): Ditto.  Remove separate computation of forward
901         dependencies.  Free sched-deps dependencies.
902
903         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
904         to use new interfaces.
905         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
906
907         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
908         new interfaces.
909         (is_costly_group): Ditto.
910
911 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
912
913         * alias.c (rtx_equal_for_memref_p): Constify.
914         * basic-block.h (const_edge, const_basic_block): New.
915         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
916         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
917         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
918         probably_never_executed_bb_p, edge_probability_reliable_p,
919         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
920         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
921         Likewise.
922         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
923         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
924         Likewise.
925         * cfganal.c (flow_active_insn_p, forwarder_block_p,
926         flow_nodes_print, dfs_enumerate_from): Likewise.
927         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
928         control_flow_insn_p, count_basic_blocks): Likewise.
929         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
930         get_loop_body_with_size, loop_exit_edge_p): Likewise.
931         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
932         average_num_loop_insns, loop_exit_edge_p,
933         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
934         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
935         average_num_loop_insns, seq_cost): Likewise.
936         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
937         * dominance.c (dominated_by_p): Likewise.
938         * emit-rtl.c (validate_subreg): Likewise.
939         * except.c (can_throw_internal, can_throw_external): Likewise.
940         * except.h (can_throw_internal, can_throw_external): Likewise.
941         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
942         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
943         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
944         simple_mem, store_ops_ok, load_kills_store, find_loads,
945         store_killed_in_insn, store_killed_after, store_killed_before,
946         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
947         Likewise.
948         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
949         noce_mem_write_may_trap_or_fault_p): Likewise.
950         * pointer-set.c (pointer_set_contains, pointer_map_contains):
951         Likewise.
952         * pointer-set.h (pointer_set_contains, pointer_map_contains):
953         Likewise.
954         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
955         probably_cold_bb_p, probably_never_executed_bb_p,
956         edge_probability_reliable_p, br_prob_note_reliable_p,
957         can_predict_insn_p): Likewise.
958         * regclass.c (reg_set_to_hard_reg_set): Likewise.
959         * resource.c (return_insn_p): Likewise.
960         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
961         Likewise.
962         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
963         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
964         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
965         verify_gimple_modify_stmt): Likewise.
966         * tree-chrec.c (is_not_constant_evolution,
967         is_multivariate_chrec_rec, is_multivariate_chrec,
968         chrec_contains_symbols, chrec_contains_undetermined,
969         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
970         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
971         eq_evolutions_p, scev_direction): Likewise.
972         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
973         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
974         chrec_contains_symbols_defined_in_loop,
975         chrec_contains_undetermined, tree_contains_chrecs,
976         evolution_function_is_affine_multivariate_p,
977         evolution_function_is_univariate_p, chrec_zerop,
978         evolution_function_is_constant_p, evolution_function_is_affine_p,
979         evolution_function_is_affine_or_constant_p,
980         tree_does_not_contain_chrecs, chrec_type): Likewise.
981         * tree-data-ref.c (tree_fold_divides_p,
982         object_address_invariant_in_loop_p, dr_may_alias_p,
983         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
984         same_access_functions, constant_access_functions,
985         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
986         Likewise.
987         * tree-flow.h (scev_direction): Likewise.
988         * tree-gimple.c (is_gimple_stmt): Likewise.
989         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
990         Likewise.
991         * tree-pretty-print.c (op_prio): Likewise.
992         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
993         analyzable_condition, backedge_phi_arg_p): Likewise.
994         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
995         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
996         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
997         Likewise.
998
999 2007-08-13  Dan Hipschman  <dsh@google.com>
1000
1001         PR c/32953
1002         * c-format.c (check_format_arg): Move check for zero-length
1003         format strings below the check for unterminated strings.
1004
1005 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
1006
1007         PR C/30427
1008         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
1009         types.
1010
1011 2007-08-13  Nick Clifton  <nickc@redhat.com>
1012
1013         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
1014
1015 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1016
1017         PR fortran/32860
1018         * c-format.c (gcc_gfc_length_specs): New array.
1019         (gcc_gfc_char_table): Add unsigned specifier, and references to
1020         the l length modifier.
1021         (format_types_orig): Use the new gcc_gfc_length_specs.
1022
1023 2007-08-12  Sa Liu  <saliu@de.ibm.com>
1024
1025         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
1026         and with REG_RETVAL note after split.
1027
1028 2007-08-11  David Daney  <ddaney@avtrex.com>
1029
1030         * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
1031         as ATTRIBUTE_UNUSED.
1032
1033 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
1034             Segher Boessenkool  <segher@kernel.crashing.org>
1035
1036         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
1037         HAVE_LOCAL_CPU_DETECT not defined.
1038
1039 2007-08-11  Jan Hubicka  <jh@suse.cz>
1040
1041         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
1042         (cgraph_process_new_functions): Honor previous value of
1043         disregard_inline_limits.
1044         * ipa-inline.c (compute_inline_parameters): Likewise.
1045
1046 2007-08-11  Ian Lance Taylor  <iant@google.com>
1047
1048         * alias.h (alias_set_type): Define new type.
1049         (ALIAS_SET_MEMORY_BARRIER): Use it.
1050         * rtl.h: Include alias.h.
1051         (struct mem_attrs): Use alias_set_type.
1052         * tree.h: Include alias.h
1053         (struct tree_type): Use alias_set_type.
1054         (struct tree_struct_field_tag): Likewise.
1055         (struct tree_decl_common): Likewise.
1056         * alias.c (struct alias_set_entry): Use alias_set_type.
1057         (get_alias_set_entry, alias_set_subset_of): Likewise.
1058         (alias_sets_conflict_p): Likewise.
1059         (alias_sets_must_conflict_p): Likewise.
1060         (objects_must_conflict_p): Likewise.
1061         (get_alias_set, new_alias_set): Likewise.
1062         (record_alias_subset, record_component_aliases): Likewise.
1063         (varargs_set, frame_set): Change to alias_set_type.
1064         (get_varargs_alias_set): Use alias_set_type.
1065         (get_frame_alias_set): Likewise.
1066         * builtins.c (setjmp_alias_set): Change to alias_set_type.
1067         * dse.c (struct store_info): Use alias_set_type.
1068         (struct read_info, struct clear_alias_mode_holder): Likewise.
1069         (clear_alias_set_lookup, canon_address): Likewise.
1070         (record_store, check_mem_read_rtx): Likewise.
1071         (dse_record_singleton_alias_set): Likewise.
1072         (dse_invalidate_singleton_alias_set): Likewise.
1073         * emit-rtl.c (get_mem_attrs): Likewise.
1074         (set_mem_attributes_minus_bitpos): Likewise.
1075         (set_mem_alias_set): Likewise.
1076         * expr.c (store_constructor_field, store_field): Likewise.
1077         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
1078         * langhooks.c (lhd_get_alias_set): Likewise.
1079         * langhooks-def.h (lhd_get_alias_set): Likewise.
1080         * reload1.c (alter_reg): Likewise.
1081         * tree-flow.h (struct fieldoff): Likewise.
1082         * tree-ssa-alias.c (struct alias_map_d): Likewise.
1083         (may_alias_p, get_smt_for, create_sft): Likewise.
1084         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
1085         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
1086         (merge_smts_into): Likewise.
1087         * varasm.c (const_alias_set): Likewise.
1088         * c-common.c (strict_aliasing_warning): Likewise.
1089         (c_common_get_alias_set): Likewise.
1090         * dse.h (dse_record_singleton_alias_set): Update declaration.
1091         (dse_invalidate_singleton_alias_set): Likewise.
1092         * emit-rtl.h (set_mem_alias_set): Likewise.
1093         * c-common.h (c_common_get_alias_set): Likewise.
1094         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
1095         * print-tree.c (print_node): Likewise.
1096         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
1097         alias_set_type.
1098         (alpha_setup_incoming_varargs): Use alias_set_type.
1099         * config/i386/i386.c (setup_incoming_varargs_64): Use
1100         alias_set_type.
1101         (setup_incoming_varargs_ms_64): Likewise.
1102         (ix86_GOT_alias_set): Likewise.
1103         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
1104         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
1105         (set): Change to alias_set_type.
1106         (get_TOC_alias_set): Use alias_set_type.
1107         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
1108         declaration.
1109         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
1110         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
1111         alias_set_type.
1112         (struct_value_alias_set): Likewise.
1113         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
1114
1115 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
1116
1117         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
1118         * config/vxworks.h (TARGET_VXWORKS): Override.
1119         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
1120         "mips" if TARGET_VXWORKS.
1121
1122 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
1123
1124         * calls.c (avoid_likely_spilled_reg): New function.
1125         (expand_call): Use it.
1126
1127 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1128
1129         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
1130
1131 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
1132
1133         * config/mips/predicates.md (const_call_insn_operand): Invoke
1134         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
1135
1136 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
1137
1138         PR target/33042
1139         * config/rs6000/driver-rs6000.c: Include link.h.
1140         Use ElfW instead of wordsize-specif typedef.
1141
1142 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1143
1144         * system.h (CONST_CAST): New.
1145         * c-decl.c (c_make_fname_decl): Use it.
1146         * c-lex.c (cb_ident, lex_string): Likewise.
1147         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
1148         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
1149         give_switch, set_multilib_dir): Likewise.
1150         * gengtype-parse.c (string_seq, typedef_name): Likewise.
1151         * passes.c (execute_one_pass): Likewise.
1152         * prefix.c (update_path): Likewise.
1153         * pretty-print.c (pp_base_destroy_prefix): Likewise.
1154         * tree.c (build_string): Likewise.
1155
1156 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
1157
1158         * tree-flow-inline.h (is_exec_stmt): Remove.
1159         (is_label_stmt): Remove.
1160         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
1161         is_label_stmt.
1162
1163 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
1164
1165         * lower-subreg.c (resolve_shift_zext): Don't adjust
1166         src_reg_num for wordmode operands.
1167
1168 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
1169             David Ung  <davidu@mips.com>
1170
1171         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
1172         (TARGET_SCHED_REORDER2): Define.
1173         (mips_maybe_swap_ready): New.
1174         (mips_last_74k_agen_insn): New.
1175         (mips_74k_agen_init): New.
1176         (mips_74k_agen_reorder): New function to group loads and stores
1177         in the ready queue.
1178         (mips_sched_init): New.  
1179         (mips_sched_reorder): Don't do initialization here.  Call
1180         mips_74k_agen_reorder.
1181         (mips_variable_issue): Call mips_74k_agen_init.
1182
1183 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
1184
1185         * tree-flow-inline.h (get_filename): Remove.
1186
1187 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
1188
1189         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
1190         argument.
1191         (mips_fetch_insns): Delete in favor of...
1192         (mips_load_store_insns): ...this new function.
1193         * config/mips/mips.c (mips_address_insns): Add a boolean argument
1194         to say whether multiword moves _might_ be split.
1195         (mips_fetch_insns): Delete in favor of...
1196         (mips_load_store_insns): ...this new function.
1197         (mips_rtx_costs): Update the call to mips_address_insns.
1198         (mips_address_cost): Likewise.
1199         * config/mips/mips.md (length): Use mips_load_store_insns instead
1200         of mips_fetch_insns.
1201         * config/mips/constraints.md (R): Use mips_address_insns rather
1202         than mips_fetch_insns.  Assume that the move never needs to be split.
1203
1204 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
1205
1206         * config/mips/mips.opt (mhard-float, msoft-float):  Make these
1207         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
1208         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
1209         * config/mips/mips.h (mips16_hard_float): Delete.
1210         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI):  Delete these
1211         definitions, and replace with....
1212         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
1213         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
1214         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
1215         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
1216         (override_options):  Replace MASK_SOFT_FLOAT references with
1217         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
1218         and mips16_hard_float when TARGET_MIPS16.
1219         
1220 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1221
1222         PR c/32796
1223         * c-typeck.c (build_binary_op): Check for non pointer types before
1224         calling int_fits_type_p.
1225
1226 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1227
1228         PR middle-end/32813
1229         * fold-const.c (omit_one_operand): Return only the ommitted expression
1230         if the result is an empty statement.
1231         (pedantic_omit_one_operand): Likewise.
1232
1233 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
1234
1235         * c-typeck.c (readonly_error): Improve error for assignment.
1236         
1237         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
1238         expression. 
1239         (pp_c_expression): Ditto.
1240
1241 2007-08-09  Simon Baldwin  <simonb@google.com>
1242
1243         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
1244         break that was preventing simplify_associative_operation() for xor.
1245
1246 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
1247             Nigel Stephens  <nigel@mips.com>
1248
1249         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
1250         Document change in interpretation of value from boolean to
1251         tri-state integer.
1252         * optabs.c (expand_ffs, expand_ctz): New functions to compute
1253         ffs and ctz using clz.
1254         (expand_unop):  Call them.
1255         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
1256         result value.
1257         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
1258         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
1259         enable the new ffs expansion on this target.
1260
1261 2007-08-09  Jan Hubicka  <jh@suse.cz>
1262
1263         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
1264         (expand_ternary_op): Likewise.
1265         (expand_vec_shift_expr): Likewise.
1266         (expand_binop_directly): Likewise.
1267         (expand_binop): Likewise.
1268         (sign_expand_binop): Likewise.
1269         (expand_twoval_unop): Likewise.
1270         (expand_twoval_binop): Likewise.
1271         (expand_twoval_binop_libfunc): Likewise.
1272         (widen_clz): Likewise.
1273         (widen_bswap): Likewise.
1274         (expand_parity): Likewise.
1275         (expand_unop): Likewise.
1276         (expand_abs_nojump): Likewise.
1277         (expand_copysign): Likewise.
1278         (emit_no_conflict_block): Likewise.
1279         (emit_libcall_block): Likewise.
1280         (can_compare_p): Likewise.
1281         (prepare_cmp_insn): Likewise.
1282         (emit_cmp_and_jump_insn_1): Likewise.
1283         (prepare_float_lib_cmp): Likewise.
1284         (emit_conditional_add): Likewise.
1285         (gen_add2_insn): Likewise.
1286         (have_add2_insn): Likewise.
1287         (gen_sub2_insn): Likewise.
1288         (have_sub2_insn): Likewise.
1289         (can_extend_p): Likewise.
1290         (can_fix_p): Likewise.
1291         (can_float_p): Likewise.
1292         (expand_float): Likewise.
1293         (expand_fix): Likewise.
1294         (expand_sfix_optab): Likewise.
1295         (new_optab): Likewise.
1296         (new_convert_optab): Likewise.
1297         (init_libfuncs): Likewise.
1298         (init_interclass_conv_libfuncs): Likewise.
1299         (init_intraclass_conv_libfuncs): Likewise.
1300         (set_conv_libfunc): Likewise.
1301         (init_optabs): Likewise.
1302         (debug_optab_libfuncs): Likewise.
1303         (gen_cond_trap): Likewise.
1304         * optabs.h (optab_handler, convert_optab_hanlder): New.
1305         * genopinit.c: Update optabs generation table.
1306         * reload.c (find_reloads_address_1): Use optabs accestors.
1307         * builtins.c (expand_builtin_mathfn): Likewise.
1308         (expand_builtin_mathfn_2): Likewise.
1309         (expand_builtin_mathfn_3): Likewise.
1310         (expand_builtin_interclass_mathfn): Likewise.
1311         (expand_builtin_sincos): Likewise.
1312         (expand_builtin_cexpi): Likewise.
1313         (expand_builtin_powi): Likewise.
1314         (expand_builtin_strlen): Likewise.
1315         * dojump.c (do_jump): Likewise.
1316         * expr.c (convert_move): Likewise.
1317         (move_by_pieces): Likewise.
1318         (move_by_pieces_ninsns): Likewise.
1319         (can_store_by_pieces): Likewise.
1320         (store_by_pieces_1): Likewise.
1321         (emit_move_via_integer): Likewise.
1322         (emit_move_complex): Likewise.
1323         (emit_move_ccmode): Likewise.
1324         (emit_move_insn_1): Likewise.
1325         (emit_single_push_insn): Likewise.
1326         (store_constructor): Likewise.
1327         (expand_expr_real_1): Likewise.
1328         (do_store_flag): Likewise.
1329         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
1330         (enumerate_modes): Likewise.
1331         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
1332         (supportable_widening_operation): Likewise.
1333         (supportable_narrowing_operation): Likewise.
1334         * expmed.c (store_bit_field_1): Likewise.
1335         (extract_bit_field_1): Likewise.
1336         (expand_mult_highpart_optab): Likewise.
1337         (expand_smod_pow2): Likewise.
1338         (expand_divmod): Likewise.
1339         (emit_store_flag): Likewise.
1340         * tree-vect-patterns.c
1341         (vect_pattern_recog_1): Likewise.
1342         * tree-ssa-loop-prefetch.c
1343         (nontemporal_store_p): Likewise.
1344         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
1345         (vect_create_epilog_for_reduction): Likewise.
1346         (vectorizable_reduction): Likewise.
1347         (vectorizable_operation): Likewise.
1348         (vect_strided_store_supported): Likewise.
1349         (vectorizable_store): Likewise.
1350         (vect_strided_load_supported): Likewise.
1351         (vectorizable_load): Likewise.
1352         * combine.c (simplify_comparison): Likewise.
1353         * tree-vect-generic.c
1354         (type_for_widest_vector_mode): Likewise.
1355         (expand_vector_operations_1): Likewise.
1356         * config/spu/spu.c (spu_expand_mov): Likewise.
1357         (spu_emit_vector_compare): Likewise.
1358         * config/rs6000/rs6000.c
1359         (rs6000_emit_vector_compare): Likewise.
1360         * stmt.c (add_case_node): Likewise.
1361         * reload1.c (gen_reload):
1362
1363 2007-08-09  Michael Matz  <matz@suse.de>
1364
1365         * tree.h (fixed_zerop): Declare as taking a const_tree.
1366         * tree.c (fixed_zerop): Take a const_tree.
1367
1368 2007-08-09  Ira Rosen  <irar@il.ibm.com>
1369
1370         * tree-vect-transform.c (vectorizable_store): Remove call to
1371         copy_virtual_operands() and call mark_symbols_for_renaming() for
1372         the created vector store.
1373         (vect_setup_realignment): Don't call copy_virtual_operands() and
1374         update_vuses_to_preheader(). 
1375         (vectorizable_load): Don't call copy_virtual_operands(). 
1376         (update_vuses_to_preheader): Remove.
1377
1378 2007-08-08  Chao-ying Fu  <fu@mips.com>
1379
1380         * tree.def (FIXED_POINT_TYPE): New type.
1381         (FIXED_CST): New constant.
1382         (FIXED_CONVERT_EXPR): New expr.
1383         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
1384         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
1385         * tree.h (struct tree_base): Add saturating_flag.
1386         Remove one bit of spare for saturating_flag.
1387         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
1388         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
1389         FIXED_POINT_TYPE_P): Define.
1390         (TYPE_SATURATING): Define.
1391         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
1392         (struct tree_fixed_cst): New.
1393         (TYPE_IBIT, TYPE_FBIT): Define.
1394         (tree_node): Add fixed_cst.
1395         (enum tree_index): Add new enumeration values of
1396         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
1397         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
1398         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
1399         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
1400         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
1401         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
1402         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
1403         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
1404         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
1405         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
1406         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
1407         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
1408         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
1409         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
1410         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
1411         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
1412         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
1413         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
1414         (sat_short_fract_type_node, sat_fract_type_node,
1415         sat_long_fract_type_node, sat_long_long_fract_type_node,
1416         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
1417         sat_unsigned_long_fract_type_node,
1418         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
1419         fract_type_node, long_fract_type_node, long_long_fract_type_node,
1420         unsigned_short_fract_type_node, unsigned_fract_type_node,
1421         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
1422         sat_short_accum_type_node, sat_accum_type_node,
1423         sat_long_accum_type_node, sat_long_long_accum_type_node,
1424         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
1425         sat_unsigned_long_accum_type_node,
1426         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
1427         accum_type_node, long_accum_type_node, long_long_accum_type_node,
1428         unsigned_short_accum_type_node, unsigned_accum_type_node,
1429         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
1430         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
1431         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
1432         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
1433         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
1434         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
1435         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
1436         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
1437         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
1438         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
1439         sat_uda_type_node, sat_uta_type_node): New macro.
1440         (make_fract_type, make_accum_type): Declare.
1441         (make_signed_fract_type, make_unsigned_fract_type,
1442         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
1443         make_signed_accum_type, make_unsigned_accum_type,
1444         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
1445         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
1446         make_or_reuse_sat_signed_fract_type,
1447         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
1448         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
1449         make_or_reuse_sat_unsigned_accum_type): New macro.
1450         (fixed_zerop): Declare.
1451         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
1452         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
1453         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
1454         LONG_LONG_ACCUM_TYPE_SIZE): Define.
1455         * treestruct.def: Add TS_FIXED_CST.
1456         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
1457         (tree.o): Likewise.
1458         (tree-dump.o): Likewise.
1459         (print-tree.o): Likewise.
1460         (tree-pretty-print.o): Likewise.
1461         (fold-const.o): Likewise.
1462         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
1463         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
1464         (is_gimple_min_invariant): Handle FIXED_CST.
1465         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
1466         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
1467         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1468         (layout_type): Handle FIXED_POINT_TYPE.
1469         (make_fract_type, make_accum_type): New functions.
1470         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
1471         * tree-dump.c (fixed-value.h): New include.
1472         (dump_fixed): New function.
1473         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
1474         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
1475         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
1476         * tree-pretty-print.c (fixed-value.h): New include.
1477         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
1478         FIXED_CONVERT_EXPR.
1479         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
1480         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
1481         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
1482         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
1483         for non-saturating fixed-point types.
1484         (reassociate_bb): Likewise.
1485         * emit-rtl.c (fixed-value.h): New include.
1486         (fconst0, fconst1): New array.
1487         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
1488         * tree-vect-generic.c expand_vector_operation): Support
1489         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
1490         MODE_VECTOR_UACCUM.
1491         (type_for_widest_vector_mode): Add one parameter for the 
1492         saturating flag.
1493         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
1494         vector mode.
1495         Pass the satp parameter to type_for_mode for fixed-point types.
1496         (expand_vector_operations_1): Pass the saturating flag to
1497         type_for_widest_vector_mode.
1498         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1499         and MODE_VECTOR_UACCUM.
1500         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
1501         (vectorizable_condition): Likewise.
1502         * tree.c (fixed-value.h): New include.
1503         (tree_code_size): Support FIXED_CST.
1504         (build_fixed): New function.
1505         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
1506         (fixed_zerop): New function.
1507         (tree_node_structure): Support FIXED_CST.
1508         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
1509         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
1510         (type_hash_eq): Handle FIXED_POINT_TYPE.
1511         (simple_cst_equal): Support FIXED_CST.
1512         (iterative_hash_expr): Handle FIXED_CST.
1513         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
1514         (get_narrower): Likewise.
1515         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
1516         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
1517         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
1518         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
1519         nodes.
1520         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
1521         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1522         (initializer_zerop): Support FIXED_CST.
1523         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
1524         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
1525         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
1526         (is_base_type): Handle FIXED_POINT_TYPE.
1527         (add_type_attribute): Handle FIXED_POINT_TYPE.
1528         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
1529         * print-tree.c (fixed-value.h): New include.
1530         (print_node_brief): Support FIXED_CST.
1531         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
1532         * c-pretty-print.c (fixed-value.h): New include.
1533         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
1534         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
1535         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
1536         Support fixed-point types for inner items in VECTOR_TYPE.
1537         (pp_c_direct_declarator): Likewise.
1538         (pp_c_declarator): Likewise.
1539         (pp_c_fixed_constant): New function.
1540         (pp_c_constant): Handle FIXED_CST.
1541         (pp_c_primary_expression): Likewise.
1542         (pp_c_expression): Likewise.
1543         * fold-const.c (fixed-value.h): New include.
1544         (negate_expr_p): Return true for FIXED_CST.
1545         (fold_negate_expr): Support FIXED_CST.
1546         (split_tree): Support FIXED_CST.
1547         (const_binop): Support FIXED_CST.
1548         (fold_convert_const_int_from_fixed): New function to convert from
1549         fixed to int.
1550         (fold_convert_const_real_from_fixed): New function to convert from
1551         fixed to real.
1552         (fold_convert_const_fixed_from_fixed): New function to convert from
1553         fixed to another fixed.
1554         (fold_convert_const_fixed_from_int): New function to convert from
1555         int to fixed.
1556         (fold_convert_const_fixed_from_real): New function to convert from
1557         real to fixed.
1558         (fold_convert_const): Support conversions from fixed to int, from
1559         fixed to real, from fixed to fixed, from int to fixed, and from real
1560         to fixed.
1561         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
1562         (operand_equal_p): Support FIXED_CST.
1563         (make_range): For fixed-point modes, we need to pass the
1564         saturating flag as the 2nd parameter.
1565         (tree_swap_operands_p): Handle FIXED_CST.
1566         (fold_plusminus_mult_expr): For fract modes, we cannot generate
1567         constant 1.
1568         (fold_unary): Support FIXED_CONVERT_EXPR.
1569         (fold_binary): Handle FIXED_CST.
1570         Make sure the type is not saturating, before associating operations.
1571         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
1572         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
1573         (fold_negate_const): Support FIXED_CST.
1574         (fold_relational_const): Support FIXED_CST.
1575         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
1576         (gimplify_expr): Handle FIXED_CST.
1577         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
1578         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
1579         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
1580         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
1581         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
1582         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
1583         LONG_LONG_ACCUM_TYPE_SIZE.
1584         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
1585         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
1586         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
1587         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
1588         MODE_ACCUM, and MODE_UACCUM.
1589         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
1590         fixed-point types to disable reduction.
1591         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
1592
1593 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
1594
1595         * config/rs6000/x-rs6000: New file.
1596         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
1597         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
1598         (EXTRA_SPEC_FUNCTIONS): Define.
1599         (HAVE_LOCAL_CPU_DETECT): Define.
1600         (CC1_CPU_SPEC): Define.
1601         * config/rs6000/driver-rs6000.c: New file.
1602         * config/rs6000/aix.h (CC1_SPEC): Define.
1603         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
1604         * config.host: Add x-rs6000 to host_xmake_file if host and target
1605         are rs6000 or powerpc.
1606
1607 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
1608
1609         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
1610
1611 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
1612             Sandra Loosemore  <sandra@codesourcery.com>
1613             Chao-ying Fu  <fu@mips.com>
1614             Nigel Stephens  <nigel@mips.com>
1615             David Ung  <davidu@mips.com>
1616
1617         * doc/invoke.texi (-mcode-readable): Document.
1618         * config/mips/mips.opt (mcode-readable): New option.
1619         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
1620         * config/mips/mips.h (mips_code_readable_setting): New enum.
1621         (mips_code_readable): Declare.
1622         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
1623         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
1624         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
1625         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
1626         boiler-plate comments.
1627         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
1628         * config/mips/mips.c (mips_code_readable): New variable.
1629         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
1630         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
1631         context and -mcode-readable setting to restrict the use of
1632         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
1633         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
1634         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
1635         (mips_blocks_for_constant_p): Only return false for
1636         TARGET_MIPS16_PCREL_LOADS.
1637         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
1638         for MIPS16.  Handle SYMBOL_32_HIGH.
1639         (mips_const_insns): Allow HIGHs for MIPS16 too.
1640         (mips_unspec_address_offset): New function, split out from...
1641         (mips_unspec_address): ...here.
1642         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
1643         16-bit symbolic constants.  Assert approropiate conditions for
1644         using the "la" and "dla" macros.
1645         (mips_handle_option): Handle -mcode-readable=.
1646         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
1647         Set up mips_lo_relocs[SYMBOL_32_HIGH].
1648         (mips_strip_unspec_address): New function, split out from...
1649         (print_operand_reloc): ...here.
1650         (print_operand): Pass constants through mips_strip_unspec_address.
1651         (print_operand_address): Likewise.
1652         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
1653         (mips_select_rtx_section): Remove MIPS16 handling.
1654         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
1655         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
1656         (mips16_lay_out_constants): Do nothing unless
1657         TARGET_MIPS16_PCREL_LOADS.
1658         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
1659         * config/mips/mips.md: Split HIGHs for MIPS16.
1660         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
1661
1662 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
1663
1664         * config/mips/mips-protos.h (mips_emit_move): Declare.
1665         * config/mips/mips.c (mips_emit_move): New function.
1666         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
1667         (mips_legitimize_const_move): Likewise.
1668         (mips_legitimize_move): Likewise.
1669         (mips_split_64bit_move): Likewise.
1670         (mips_restore_gp): Likewise.
1671         (mips_load_call_address): Likewise.
1672         (mips_emit_fcc_reload): Likewise.
1673         (mips_set_return_address): Likewise.
1674         (mips_block_move_straight): Likewise.
1675         (mips_block_move_loop): Likewise.
1676         (mips_setup_incoming_varargs): Likewise.
1677         (mips_save_reg): Likewise.
1678         (mips_expand_prologue): Likewise.
1679         (mips_restore_reg): Likewise.
1680         (mips_expand_epilogue): Likewise.
1681         (mips_output_mi_thunk): Likewise.
1682         (build_mips16_call_stub): Likewise.
1683         (mips_builtin_branch_and_move): Likewise.
1684         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
1685         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
1686         (fixuns_truncdfdi2): Likewise.
1687         (fixuns_truncsfsi2): Likewise.
1688         (fixuns_truncsfdi2): Likewise.
1689         (loadgp_absolute): Likewise.
1690         (builtin_setjmp_setup): Likewise.
1691         (builtin_longjmp): Likewise.
1692         (untyped_call): Likewise.
1693
1694 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
1695
1696         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
1697         an "rtx *" argument.  Return a bool.
1698         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
1699         values and return true if they can be split.  Take the same kind of
1700         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
1701         and store the lo_sum there if nonnull.  Use the symbol type to
1702         determine whether a $gp or HIGH is needed.
1703         (mips_legitimize_address): Update call to mips_split_symbol and
1704         simplify accordingly.
1705         (mips_legitimize_const_move): Likewise.
1706         * config/mips/mips.md: In the combine define_split,
1707         check mips_split_symbol instead of splittable_symbolic_operand.
1708         Update use of mips_split_symbol in the generator code.
1709         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
1710
1711 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
1712
1713         * config/mips/mips.c (mips_symbolic_address_p): Delete.
1714         (mips_symbol_insns_1): New function, split out from...
1715         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
1716         and stores separately from load addresses.
1717         (mips_classify_address): Replace uses of mips_symbolic_address_p
1718         with uses of mips_symbol_insns.
1719         (mips_address_insns): Update calls to mips_symbol_insns.
1720         (mips_const_insns): Likewise.
1721         (mips_legitimize_address): Likewise.
1722
1723 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
1724
1725         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
1726         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
1727         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
1728         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
1729         non-call contexts if TARGET_MIPS16.
1730         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
1731         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
1732         code for SYMBOL_ABSOLUTE.
1733         (mips_symbol_insns): Likewise.
1734
1735 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
1736
1737         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
1738         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
1739         (mips_symbolic_constant_p): Likewise.  Update the call to
1740         mips_classify_symbol.
1741         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
1742         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
1743         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
1744         (print_operand_reloc): Add a context argument.  Update the call to
1745         mips_symbolic_constant_p.
1746         (print_operand): Update the calls to print_operand_reloc.
1747         (print_operand_address): Use print_operand_reloc rather than
1748         print_operand.
1749         (mips_rewrite_small_data_p): Add a context argument.  Update the call
1750         to mips_symbolic_constant_p.
1751         (mips_small_data_pattern_1): Make DATA the containing mem.
1752         Update the call to mips_rewrite_small_data_p.
1753         (mips_rewrite_small_data_1): Likewise.
1754         (mips_use_anchors_for_symbol_p): Update the call to
1755         mips_symbolic_constant_p.
1756         * config/mips/predicates.md (const_call_insn_operand): Likewise.
1757         (splittable_symbolic_operand): Likewise.
1758         (move_operand): Likewise.
1759         (absolute_symbolic_operand): Likewise.
1760         (got_disp_operand): Likewise.
1761         (got_page_ofst_operand): Likewise.
1762
1763 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
1764
1765         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
1766         (SYMBOL_ABSOLUTE): ...this.
1767         (SYMBOL_SMALL_DATA): Rename to...
1768         (SYMBOL_GP_RELATIVE): ...this.
1769         (SYMBOL_CONSTANT_POOL): Rename to...
1770         (SYMBOL_PC_RELATIVE): ...this.
1771         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
1772         (mips_symbolic_address_p, mips_symbol_insns, override_options)
1773         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
1774         after above changes.
1775         * config/mips/predicates.md (const_call_insn_operand): Likewise.
1776         (general_symbolic_operand): Rename to...
1777         (absolute_symbolic_operand): ...this.
1778         * config/mips/mips.md: Update after above changes.
1779
1780 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
1781             Revital Eres  <eres@il.ibm.com>
1782
1783         * ddg.c (print_ddg): Add dump information.
1784         * modulo-sched.c (print_node_sched_params): Add parameter and
1785         verbosity.
1786         (calculate_maxii): Remove function.
1787         (undo_generate_reg_moves): Likewise.
1788         (undo_permute_partial_schedule): Likewise.
1789         (kernel_number_of_cycles): Likewise.
1790         (MAXII_FACTOR): New definition to calculate the upper bound of II.
1791         (sms_schedule): Use it.  Remove profitability checks.
1792         (sms_schedule_by_order): Fix order of nodes within the cycle.
1793
1794 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
1795
1796         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
1797         -profile option, add pie support.
1798         (ENDFILE_SPEC): New spec.
1799         * config/gnu.h (LIB_SPEC): Add -profile option.
1800
1801 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
1802
1803         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
1804         * config/gnu.h (LIB_SPEC): Likewise.
1805
1806 2007-08-07  Yaz Saito  <saito@google.com>
1807             Ian Lance Taylor  <iant@google.com>
1808
1809         * common.opt (finstrument-functions-exclude-function-list): New
1810         option.
1811         (finstrument-functions-exclude-file-list): New option.
1812         * opts.c (char_p): Define and DEF_VEC.
1813         (flag_instrument_functions_exclude_functions): New static
1814         variable.
1815         (flag_instrument_functions_exclude_files): New static variable.
1816         (add_instrument_functions_exclude_list): New static function.
1817         (flag_instrument_functions_exclude_p): New function.
1818         (common_handle_option): Handle new options.
1819         * flags.h (flag_instrument_functions_exclude_p): Declare.
1820         * gimplify.c (gimplify_function_tree): Call
1821         flag_instrument_functions_exclude_p.
1822         * doc/invoke.texi (Option Summary): Mention new options.
1823         (Code Gen Options): Document new options.
1824
1825 2007-08-07  Ian Lance Taylor  <iant@google.com>
1826
1827         PR rtl-optimization/32776
1828         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
1829         (resolve_use): Likewise.
1830         (decompose_multiword_subregs): Remove "changed" local variable.
1831
1832 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
1833
1834         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
1835         * configure: Regenerate.
1836         * config.in: Regenerate.
1837         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
1838         spec string.
1839
1840 2007-08-07  Ian Lance Taylor  <iant@google.com>
1841
1842         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
1843         note, just delete the insn.
1844
1845 2007-08-07  Andreas Schwab  <schwab@suse.de>
1846
1847         PR bootstrap/32973
1848         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
1849         struct definition.
1850
1851 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
1852
1853         * lower-subreg.c (resolve_subreg_use): Remove assertion.
1854         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
1855         (decompose_multiword_subregs): Use the functions above to decompose
1856         multiword shifts and zero-extends.
1857
1858 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1859
1860         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
1861         "assemble" descriptions which were swapped.
1862
1863 2007-08-06  Chao-ying Fu  <fu@mips.com>
1864
1865         * fixed-value.h: New file.
1866         * fixed-value.c: New file.
1867         * Makefile.in (OBJS-common): Add fixed-value.o.
1868         (fixed-value.o): New rule.
1869         (GTFILES): Add fixed-value.h.
1870         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
1871         to compare a.low and b.low.
1872         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
1873
1874 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
1875             Daniel Jacobowitz  <dan@codesourcery.com>
1876
1877         PR target/31868
1878         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
1879         tmake_file.
1880         (x86_64-*-netbsd*): Likewise.
1881         (x86_64-*-linux*): Likewise.
1882         (x86_64-*-kfreebsd*-gnu): Likewise.
1883         (x86_64-*-knetbsd*-gnu): Likewise.
1884         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
1885
1886         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
1887
1888         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
1889         Add -fno-asynchronous-unwind-tables.
1890
1891         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
1892         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
1893         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
1894         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
1895         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
1896
1897 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
1898
1899         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
1900         (TARGET_C_MODE_FOR_SUFFIX): New.
1901
1902 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
1903
1904         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
1905
1906 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
1907
1908         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
1909
1910 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
1911
1912         * config/i386/i386.md: Check TARGET_ macros and optimize_size
1913         before checking function returns in conditional expressions.
1914
1915 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
1916
1917         PR pch/13676
1918         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
1919
1920 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1921
1922         PR middle-end/32988
1923         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
1924         for INTEGRAL_TYPE_P.
1925
1926 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
1927
1928         * configure.ac: Remove --enable-checking=df from default settings.
1929         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
1930         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
1931         if the parameter is true.
1932         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
1933         DF_VERIFY_SCHEDULED flag is true.
1934         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
1935         (df_finish_pass): Adjust prototype.
1936         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
1937         true.
1938
1939         * see.c (pass_see): Add TODO_df_verify.
1940         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
1941         * global.c (rest_of_handle_global_alloc): Schedule verification
1942         after the pass.
1943         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
1944         before the pass.
1945         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
1946         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
1947         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
1948
1949         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
1950         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
1951         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
1952
1953 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
1954             Revital Eres <eres@il.ibm.com>
1955
1956         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
1957         flag.
1958         * ddg.c (create_ddg_dependence): Rename to...
1959         (create_ddg_dep_from_intra_loop_link): This.  Do not check
1960         for interloop edges.  Do not create anti dependence edge when
1961         a true dependence edge exists in the opposite direction and
1962         -fmodulo-sched-allow-regmoves is set.
1963         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
1964         (add_cross_iteration_register_deps): Create anti dependence edge
1965         when -fno-modulo-sched-allow-regmoves is set.
1966         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
1967
1968 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
1969
1970         * config/arm/arm.md (movsi): Add braces.
1971
1972 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1973
1974         PR middle-end/32780
1975         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of operands
1976         for the folding of "A - (A & B)" into "~B & A"; cast them to type.
1977
1978 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
1979
1980         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops' state
1981         accessor functions.
1982         * cfgloopmanip.c (remove_path, create_preheaders,
1983         force_single_succ_latches, fix_loop_structure): Ditto.
1984         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
1985         tree_duplicate_loop_to_header_edge): Ditto.
1986         * cfgloopanal.c (mark_irreducible_loops): Ditto.
1987         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
1988         Ditto.
1989         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
1990         cleanup_tree_cfg): Ditto.
1991         * tree-cfg.c (tree_merge_blocks): Ditto.
1992         * cfgloop.c (rescan_loop_exit, record_loop_exits,
1993         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
1994         loop_preheader_edge, single_exit): Ditto.
1995         (flow_loops_find): Do not clear loops->state.
1996         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
1997         loops_state_clear): New functions.
1998
1999 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2000
2001         PR middle-end/32399
2002         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
2003         when adding to the base and convert ELT to sizetype instead of type.
2004
2005 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2006
2007         PR middle-end/32304
2008         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
2009         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
2010
2011 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2012
2013         PR middle-end/32935
2014         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
2015          correct type the negate expression.
2016
2017 2007-08-03  Jan Hubicka  <jh@suse.cz>
2018
2019         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
2020         stack boundary.
2021
2022 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
2023
2024         * config/rs6000/rs6000.c (struct processor_cost): Change
2025         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
2026         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
2027         information.
2028         (rios1_costs, rios2_cost): Correct cache line size.
2029         (rs6000_override_options): Set l2-cache-size parameter.
2030
2031 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2032             Diego Novillo  <dnovillo@google.com>
2033
2034         PR 31521
2035         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
2036         if the range includes 0.
2037
2038 2007-08-03  Ben Elliston  <bje@au.ibm.com>
2039
2040         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
2041         mode to unspec expressions to silence a warning from the generator
2042         programs.
2043         
2044 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
2045
2046         * config/ia64/constraints.md ("U"): Make constraint vector only.
2047
2048 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
2049
2050         PR middle-end/25446
2051         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
2052         always_inline attribute on the function decl.
2053
2054 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
2055
2056         PR middle-end/25445
2057         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
2058         if we are compiling with -fPIC.
2059
2060 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
2061             Nigel Stephens  <nigel@mips.com>
2062
2063         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
2064         Define for MIPS32 and MIPS64.
2065
2066 2007-08-02  Nick Clifton  <nickc@redhat.com>
2067
2068         * config/host-hpux.c: Change copyright header to refer to version
2069         3 of the GNU General Public License and to point readers at the
2070         COPYING3 file and the FSF's license web page.
2071         * config/alpha/predicates.md, config/alpha/vms-ld.c,
2072         config/alpha/linux.h, config/alpha/alpha.opt,
2073         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
2074         config/alpha/vms-unwind.h, config/alpha/ev4.md,
2075         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
2076         config/alpha/alpha.h, config/alpha/sync.md,
2077         config/alpha/openbsd.h, config/alpha/alpha.md,
2078         config/alpha/alpha-modes.def, config/alpha/ev5.md,
2079         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
2080         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
2081         config/alpha/constraints.md, config/alpha/osf.h,
2082         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
2083         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
2084         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
2085         config/frv/frv-asm.h, config/frv/frv-protos.h,
2086         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
2087         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
2088         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
2089         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
2090         config/s390/s390.opt, config/s390/s390-modes.def,
2091         config/s390/fixdfdi.h, config/s390/constraints.md,
2092         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
2093         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
2094         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
2095         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
2096         config/m32c/prologue.md, config/m32c/m32c.abi,
2097         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
2098         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
2099         config/m32c/t-m32c, config/m32c/m32c-modes.def,
2100         config/m32c/jump.md, config/m32c/shift.md,
2101         config/m32c/m32c-protos.h, config/libgloss.h,
2102         config/spu/spu-protos.h, config/spu/predicates.md,
2103         config/spu/spu-builtins.h, config/spu/spu.c,
2104         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
2105         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
2106         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
2107         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
2108         config/sparc/hypersparc.md, config/sparc/predicates.md,
2109         config/sparc/linux.h, config/sparc/sp64-elf.h,
2110         config/sparc/supersparc.md, config/sparc/cypress.md,
2111         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
2112         config/sparc/niagara.md, config/sparc/sparc.md,
2113         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
2114         config/sparc/sparc.opt, config/sparc/sync.md,
2115         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
2116         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
2117         config/sparc/sparc.c, config/sparc/little-endian.opt,
2118         config/sparc/sysv4-only.h, config/sparc/sparc.h,
2119         config/sparc/linux64.h, config/sparc/freebsd.h,
2120         config/sparc/sol2.h, config/sparc/rtemself.h,
2121         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
2122         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
2123         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
2124         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
2125         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
2126         config/m32r/linux.h, config/m32r/constraints.md,
2127         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
2128         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
2129         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
2130         config/i386/i386.md, config/i386/netware-crt0.c,
2131         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
2132         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
2133         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
2134         config/i386/sol2.h, config/i386/constraints.md,
2135         config/i386/netware-libgcc.c, config/i386/sysv5.h,
2136         config/i386/predicates.md, config/i386/geode.md,
2137         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
2138         config/i386/freebsd64.h, config/i386/vxworksae.h,
2139         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
2140         config/i386/rtemself.h, config/i386/netbsd-elf.h,
2141         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
2142         config/i386/netware.h, config/i386/i386-modes.def,
2143         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
2144         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
2145         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
2146         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
2147         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
2148         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
2149         config/i386/xm-mingw32.h, config/i386/linux64.h,
2150         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
2151         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
2152         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
2153         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
2154         config/i386/cygwin2.c, config/i386/i386-protos.h,
2155         config/i386/sync.md, config/i386/openbsd.h,
2156         config/i386/host-mingw32.c, config/i386/i386-aout.h,
2157         config/i386/nto.h, config/i386/biarch64.h,
2158         config/i386/i386-coff.h, config/i386/freebsd.h,
2159         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
2160         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
2161         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
2162         config/darwin-protos.h, config/linux.opt, config/sol2.c,
2163         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
2164         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
2165         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
2166         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
2167         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
2168         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
2169         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
2170         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
2171         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
2172         config/sh/superh64.h, config/sh/rtemself.h,
2173         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
2174         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
2175         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
2176         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
2177         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
2178         config/avr/predicates.md, config/avr/constraints.md,
2179         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
2180         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
2181         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
2182         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
2183         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
2184         config/c4x/c4x-modes.def, config/c4x/rtems.h,
2185         config/c4x/predicates.md, config/c4x/c4x.h,
2186         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
2187         config/xtensa/predicates.md, config/xtensa/xtensa.c,
2188         config/xtensa/linux.h, config/xtensa/xtensa.h,
2189         config/xtensa/elf.h, config/xtensa/xtensa.md,
2190         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
2191         config/xtensa/xtensa-protos.h, config/dbx.h,
2192         config/stormy16/predicates.md, config/stormy16/stormy16.md,
2193         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
2194         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
2195         config/host-solaris.c, config/fr30/fr30.h,
2196         config/fr30/predicates.md, config/fr30/fr30-protos.h,
2197         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
2198         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
2199         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
2200         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
2201         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
2202         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
2203         config/host-linux.c, config/interix3.h, config/cris/cris.c,
2204         config/cris/predicates.md, config/cris/linux.h,
2205         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
2206         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
2207         config/cris/aout.opt, config/cris/cris-protos.h,
2208         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
2209         config/iq2000/iq2000.h, config/iq2000/predicates.md,
2210         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
2211         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
2212         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
2213         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
2214         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
2215         config/chorus.h, config/mn10300/mn10300.c,
2216         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
2217         config/mn10300/mn10300.h, config/mn10300/linux.h,
2218         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
2219         config/mn10300/mn10300.md, config/ia64/predicates.md,
2220         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
2221         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
2222         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
2223         config/ia64/freebsd.h, config/ia64/ia64.md,
2224         config/ia64/ia64-modes.def, config/ia64/constraints.md,
2225         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
2226         config/gofast.h, config/rtems.h, config/sol2-10.h,
2227         config/m68k/predicates.md, config/m68k/m68k.md,
2228         config/m68k/linux.h, config/m68k/m68k-modes.def,
2229         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
2230         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
2231         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
2232         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
2233         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
2234         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
2235         config/m68k/constraints.md, config/m68k/rtemself.h,
2236         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
2237         config/m68k/uclinux.h, config/rs6000/power4.md,
2238         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
2239         config/rs6000/linux.h, config/rs6000/eabi.h,
2240         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
2241         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
2242         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
2243         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
2244         config/rs6000/windiss.h, config/rs6000/603.md,
2245         config/rs6000/aix41.h, config/rs6000/cell.md,
2246         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
2247         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
2248         config/rs6000/darwin.md, config/rs6000/darwin64.h,
2249         config/rs6000/default64.h, config/rs6000/7xx.md,
2250         config/rs6000/darwin.opt, config/rs6000/spe.md,
2251         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
2252         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
2253         config/rs6000/7450.md, config/rs6000/linux64.h,
2254         config/rs6000/constraints.md, config/rs6000/440.md,
2255         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
2256         config/rs6000/rs6000.c, config/rs6000/aix52.h,
2257         config/rs6000/rs6000.h, config/rs6000/power6.md,
2258         config/rs6000/predicates.md, config/rs6000/altivec.md,
2259         config/rs6000/aix64.opt, config/rs6000/rios1.md,
2260         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
2261         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
2262         config/rs6000/darwin7.h, config/rs6000/dfp.md,
2263         config/rs6000/linux64.opt, config/rs6000/sync.md,
2264         config/rs6000/vxworksae.h, config/rs6000/power5.md,
2265         config/rs6000/lynx.h, config/rs6000/biarch64.h,
2266         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
2267         config/rs6000/eabispe.h, config/rs6000/e500.h,
2268         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
2269         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
2270         config/rs6000/aix.h, config/rs6000/vxworks.h,
2271         config/rs6000/40x.md, config/rs6000/aix51.h,
2272         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
2273         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
2274         config/arc/arc.h, config/mcore/mcore-elf.h,
2275         config/mcore/mcore-protos.h, config/mcore/predicates.md,
2276         config/mcore/mcore.md, config/mcore/mcore.c,
2277         config/mcore/mcore.opt, config/mcore/mcore.h,
2278         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
2279         config/score/predicates.md, config/score/score-version.h,
2280         config/score/score-protos.h, config/score/misc.md,
2281         config/score/elf.h, config/score/score.c, config/score/mac.md,
2282         config/score/score7.md, config/score/score.h,
2283         config/score/score-conv.h, config/score/score-mdaux.c,
2284         config/score/score.md, config/score/score.opt,
2285         config/score/score-modes.def, config/score/score-mdaux.h,
2286         config/score/mul-div.S, config/arm/uclinux-elf.h,
2287         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
2288         config/arm/symbian.h, config/arm/linux-elf.h,
2289         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
2290         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
2291         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
2292         config/arm/strongarm-pe.h, config/arm/arm.h,
2293         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
2294         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
2295         config/arm/arm-modes.def, config/arm/linux-eabi.h,
2296         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
2297         config/arm/arm-cores.def, config/arm/arm-protos.h,
2298         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
2299         config/arm/wince-pe.h, config/arm/neon.md,
2300         config/arm/constraints.md, config/arm/neon.ml,
2301         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
2302         config/arm/arm.opt, config/arm/arm926ejs.md,
2303         config/arm/predicates.md, config/arm/iwmmxt.md,
2304         config/arm/arm_neon.h, config/arm/unknown-elf.h,
2305         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
2306         config/arm/neon-testgen.ml, config/arm/arm.md,
2307         config/arm/xscale-coff.h, config/arm/pe.c,
2308         config/arm/arm-generic.md, config/arm/pe.h,
2309         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
2310         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
2311         config/arm/strongarm-elf.h, config/arm/cirrus.md,
2312         config/arm/netbsd-elf.h, config/arm/vxworks.h,
2313         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
2314         config/pa/predicates.md, config/pa/pa64-hpux.h,
2315         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
2316         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
2317         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
2318         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
2319         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
2320         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
2321         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
2322         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
2323         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
2324         config/pa/pa64-regs.h, config/pa/pa-modes.def,
2325         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
2326         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
2327         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
2328         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
2329         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
2330         config/mips/linux64.h, config/mips/elforion.h,
2331         config/mips/constraints.md, config/mips/generic.md,
2332         config/mips/predicates.md, config/mips/4300.md,
2333         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
2334         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
2335         config/mips/5k.md, config/mips/vr4120-div.S,
2336         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
2337         config/mips/mips-protos.h, config/mips/6000.md,
2338         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
2339         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
2340         config/mips/mips-modes.def, config/mips/vr.h,
2341         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
2342         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
2343         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
2344         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
2345         config/vax/openbsd1.h, config/vax/netbsd.h,
2346         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
2347         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
2348         config/h8300/rtems.h, config/h8300/predicates.md,
2349         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
2350         config/h8300/h8300.md, config/h8300/h8300.opt,
2351         config/h8300/coff.h, config/h8300/h8300-protos.h,
2352         config/v850/v850.md, config/v850/predicates.md,
2353         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
2354         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
2355         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
2356         config/mmix/mmix.h, config/mmix/predicates.md,
2357         config/mmix/mmix-protos.h, config/mmix/mmix.md,
2358         config/mmix/mmix.c, config/mmix/mmix.opt,
2359         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
2360         config/bfin/rtems.h, config/bfin/bfin-modes.def,
2361         config/bfin/predicates.md, config/bfin/bfin-protos.h,
2362         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
2363         Likewise.
2364
2365 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
2366
2367         * emit-rtl.c (reset_used_decls): Rename to...
2368         (set_used_decls): ...this.  Set the used flag rather than clearing it.
2369         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
2370         DECL_RTLs rather than resetting them.
2371
2372 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
2373
2374         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
2375
2376 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
2377
2378         * reload.c (find_reloads_address_part):  Pass correct MEMREFLOC
2379         argument to find_reloads_address.
2380
2381 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
2382
2383         PR tree-optimization/32919
2384         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
2385         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
2386         (coalesce_ssa_name): Call it.
2387
2388 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
2389             David Ung  <davidu@mips.com>
2390
2391         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
2392         (__mips16_unorddf2, __mips16_floatunsidf): New.
2393         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
2394         above functions.
2395         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
2396
2397 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
2398
2399         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
2400         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
2401         * tree.h (OMP_SECTIONS_CONTROL): New macro.
2402         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
2403         * omp-low.c (get_ws_args_for, determine_parallel_type,
2404         expand_omp_for_generic, expand_omp_for_static_nochunk,
2405         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
2406         Work with more precise CFG.
2407         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
2408         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
2409         OMP_CONTINUE.
2410         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
2411         * gimple-low.c (lower_stmt): Ditto.
2412         * tree-inline.c (estimate_num_insns_1): Ditto.
2413         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
2414         (OMP_SECTIONS_SWITCH): New.
2415         * tree-cfgcleanup.c (cleanup_omp_return): New.
2416         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
2417         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
2418         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
2419         (tree_redirect_edge_and_branch): Handle omp constructs.
2420
2421         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
2422         with three arguments.
2423
2424 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
2425
2426         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
2427         in loop closed ssa.
2428
2429 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
2430
2431         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
2432         the loop structures may need fixing.
2433         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
2434         New functions.
2435         (cleanup_tree_cfg_loop): Removed.
2436         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
2437         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
2438         instead of running cleanup_tree_cfg_loop.
2439         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
2440         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
2441         (tree_predictive_commoning): Declaration changed.
2442         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
2443
2444 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
2445
2446         * doc/invoke.texi (l1-cache-size): Update documentation.
2447         (l2-cache-size): Document.
2448         * params.h (L2_CACHE_SIZE): New macro.
2449         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
2450         that L1_CACHE_SIZE is in kB now.
2451         (L2_CACHE_SIZE_BYTES): New macro.
2452         (tree_ssa_prefetch_arrays): Show size in kB.
2453         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
2454         and l2_cache_size fields.
2455         * config/i386/driver-i386.c (describe_cache): Detect cache size
2456         in kB.
2457         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
2458         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
2459         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
2460         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
2461         (override_options): Set l1-cache-size and l2-cache-size to default
2462         values if not specified otherwise.
2463         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
2464         (PARAM_L2_CACHE_SIZE): New.
2465
2466 2007-08-01  Nigel Stephens  <nigel@mips.com>
2467             David Ung  <davidu@mips.com>
2468             Thiemo Seufer  <ths@mips.com>
2469             Chris Dearman  <chris@mips.com>
2470             Richard Sandiford  <richard@codesourcery.com>
2471
2472         * config.gcc (mips*-sde-elf*): New stanza.
2473         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
2474         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
2475         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
2476         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
2477         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
2478         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
2479         to tmake_file.
2480         * config/mips/sde.h: New file.
2481         * config/mips/t-libgcc-mips16: Likewise.
2482         * config/mips/t-sde: Likewise.
2483         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
2484         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
2485         _MIPS_FPSET and _MIPS_SZINT.
2486         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
2487         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
2488         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
2489         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
2490         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2491         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2492         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
2493         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
2494         _MIPS_SZPTR and _MIPS_FPSET.
2495         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
2496         architecture is specified.
2497         (MIPS_32BIT_OPTION_SPEC): New macro.
2498
2499 2007-07-31  Dan Hipschman  <dsh@google.com>
2500
2501         * gcc.c (end_going_arg): New function.
2502         (do_spec_2): Use it.
2503         (do_spec_1): Use it.
2504
2505 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
2506
2507         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
2508         only if ENABLE_CHECKING is defined.
2509
2510 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
2511
2512         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
2513         df_ru_add_problem, df_ru_get_bb_info): Removed.
2514         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
2515         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
2516         df_ru_free_bb_info, df_ru_alloc,
2517         df_ru_bb_local_compute_process_def,
2518         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
2519         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
2520         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
2521         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
2522         df_ru_add_problem): Removed.
2523
2524 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2525
2526         PR target/32847
2527         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
2528         (casesi32p, casesi64p): Likewise.
2529         (casesi): Adjust for above.
2530
2531 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
2532
2533         * mode-switching.c (create_pre_exit): Don't search past calls.
2534
2535 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
2536
2537         * config/mips/mips.h (ISA_HAS_SYNCI):  Add !TARGET_MIPS16 test.
2538
2539 2007-07-31  Revital Eres  <eres@il.ibm.com>
2540
2541         * ddg.c (add_deps_for_def): Rename to...
2542         (add_cross_iteration_register_deps): This.  Change implementation
2543         to use only reaching def and def-use chains to construct the
2544         inter loop dependencies.
2545         (add_deps_for_use): Remove function.
2546         (build_inter_loop_deps): Call add_cross_iteration_register_deps
2547         function to build the inter loop dependencies.
2548         * modulo-sched.c (sms_schedule): Build only
2549         reaching def and def-use chains for the propose of the ddg
2550         construction.
2551
2552 2007-07-31  Julian Brown  <julian@codesourcery.com>
2553
2554         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
2555         New define_insns. Use correct RTL.
2556         (vec_set<mode>): Write as expander.
2557
2558 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
2559
2560         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
2561         to an unallocated space.
2562
2563 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
2564
2565         * tree-data-ref.c
2566         (split_constant_offset): Enable split_constant_offset to extract
2567         constants from other statements.
2568         * tree-vect-transform.c
2569         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
2570         to a temp var. Force base_offset to be simple.
2571
2572 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
2573
2574         * df-scan.c (df_scan_verify): Remove artificial limit on
2575         the number of blocks for verification.
2576         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
2577         df_simulate_defs): Avoid unnecessary insn checking for defs.
2578
2579 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
2580
2581         * config/m68k/lb1sf68.asm (FUNC): New macro.
2582         (__mulsi3): Use it.
2583         (__udivsi3): Likewise.
2584         (__divsi3): Likewise.
2585         (__umodsi3): Likewise.
2586         (__modsi3): Likewise.
2587         (__subdf3): Likewise.
2588         (__adddf3): Likewise.
2589         (__muldf3): Likewise.
2590         (__divdf3): Likewise.
2591         (__negdf2): Likewise.
2592         (__cmpdf2): Likewise.
2593         (__subsf3): Likewise.
2594         (__addsf3): Likewise.
2595         (__mulsf3): Likewise.
2596         (__divsf3): Likewise.
2597         (__negsf2): Likewise.
2598         (__cmpsf2): Likewise.
2599         (__eqdf2): Likewise.
2600         (__nedf2): Likewise.
2601         (__gtdf2): Likewise.
2602         (__gedf2): Likewise.
2603         (__ltdf2): Likewise.
2604         (__ledf2): Likewise.
2605         (__eqsf2): Likewise.
2606         (__nesf2): Likewise.
2607         (__gtsf2): Likewise.
2608         (__gesf2): Likewise.
2609         (__ltsf2): Likewise.
2610         (__lesf2): Likewise.
2611
2612 2007-07-30  Ollie Wild  <aaw@google.com>
2613
2614         * c-ppoutput.c (print_lines_directives_only): New function.
2615         (scan_translation_unit_directives_only): New function.
2616         (preprocess_file): Add call to scan_translation_unit_directives_only.
2617         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
2618         (sanitize_cpp_opts): Add default flag_dump_macros setting for
2619         -fdirectives-only.  Add errors for -fdirectives-only conflict with
2620         -Wunused-macros and -traditional.
2621         (finish_options): Add builtin macro initialization for
2622         -fdirectives-only + -fpreprocessed.
2623         * c.opt (fdirectives-only): New.
2624         * doc/cppopts.texi (fdirectives-only): New.
2625
2626 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2627
2628         * alias.c (record_set, memory_modified_1): Constify.
2629         * bt-load.c (note_btr_set): Likewise.
2630         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
2631         * combine.c (set_nonzero_bits_and_sign_copies,
2632         expand_field_assignment, record_dead_and_set_regs_1,
2633         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
2634         likely_spilled_retval_1): Likewise.
2635         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
2636         frv_io_handle_set): Likewise.
2637         * config/mips/mips.c (mips_sim_record_set,
2638         vr4130_true_reg_dependence_p_1): Likewise.
2639         * config/mt/mt.c (insn_dependent_p_1): Likewise.
2640         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
2641         * config/sh/sh.c (flow_dependent_p_1): Likewise.
2642         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
2643         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
2644         * ddg.c (mark_mem_store): Likewise.
2645         * df-problems.c (df_urec_mark_reg_change): Likewise.
2646         * function.c (update_epilogue_consts): Likewise.
2647         * gcse.c (record_set_info, record_last_set_info,
2648         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
2649         reg_clear_last_set): Likewise.
2650         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
2651         Likewise.
2652         * jump.c (reversed_comparison_code_parts): Likewise.
2653         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
2654         reg_is_set): Likewise.
2655         * loop-iv.c (mark_altered): Likewise.
2656         * mode-switching.c (reg_becomes_live): Likewise.
2657         * optabs.c (no_conflict_move_test): Likewise.
2658         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
2659         Likewise.
2660         * postreload.c (reload_combine_note_store, move2add_note_store):
2661         Likewise.
2662         * regmove.c (flags_set_1): Likewise.
2663         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
2664         Likewise.
2665         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
2666         Likewise. 
2667         * resource.c (update_live_status): Likewise.
2668         * rtl.h (set_of, note_stores): Likewise.
2669         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
2670         note_stores, parms_set): Likewise.
2671         * sched-rgn.c (sets_likely_spilled_1): Likewise.
2672         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
2673         Likewise. 
2674         * var-tracking.c (count_stores, add_stores): Likewise.
2675
2676 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2677
2678         * alias.c (mems_in_disjoint_alias_sets_p,
2679         fixed_scalar_and_varying_struct_p, aliases_everything_p,
2680         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
2681         write_dependence_p, mems_in_disjoint_alias_sets_p,
2682         read_dependence, true_dependence, canon_true_dependence,
2683         anti_dependence, output_dependence): Constify.
2684         * combine.c (extended_count): Likewise.
2685         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
2686         * cselib.c (get_value_hash, references_value_p,
2687         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
2688         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
2689         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
2690         * function.c (contains, prologue_epilogue_contains,
2691         sibcall_epilogue_contains): Likewise. 
2692         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
2693         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
2694         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
2695         reg_or_subregno): Likewise.
2696         * recog.c (asm_noperands): Likewise.
2697         * reload1.c (function_invariant_p): Likewise.
2698         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
2699         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
2700         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
2701         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
2702         true_regnum, reg_or_subregno, condjump_in_parallel_p,
2703         extended_count, prologue_epilogue_contains,
2704         sibcall_epilogue_contains, function_invariant_p, true_dependence,
2705         canon_true_dependence, read_dependence, anti_dependence,
2706         output_dependence): Likewise.
2707         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
2708
2709 2007-07-30  Julian Brown  <julian@codesourcery.com>
2710
2711         * config/arm/neon.md (V_ext): New mode attribute.
2712         (neon_vget_lane<mode>): Replace with define_expand.
2713         (neon_vget_lane<mode>_sext_internal)
2714         (neon_vget_lane<mode>_zext_internal): New define_insns for double
2715         and quad precision vectors.
2716         (neon_vget_lanedi): Add bounds check. Remove dead comment.
2717         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
2718         have typeless 32-bit result.
2719
2720 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2721
2722         PR tree-opt/32527
2723         * tree-affine.h (aff_tree): The type of rest is sizetype for types
2724         of pointers.
2725         * tree-affine.c (aff_combination_scale): If type is a pointer type,
2726         use sizetype for rest.
2727         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
2728         (aff_combination_convert): Don't convert rest for pointer types.
2729
2730 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
2731
2732         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
2733
2734         * tree-ssa-alias.c: Add alloc-pool.h.
2735         (init_alias_info): Free alias_bitmap_obstack.
2736         (delete_alias_info): Call delete_mem_ref_stats.
2737         (get_mem_sym_stats_for): Use alloc_pool.
2738         (init_mem_ref_stats): Do not delete mem_ref_stats here.
2739         (delete_mem_sym_stats): Removed.
2740         
2741 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
2742
2743         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
2744         functions cannot be represented as classical distance vectors.
2745
2746 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2747
2748         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
2749         * builtins.c (validate_arg, builtin_mathfn_code,
2750         validate_arglist): Likewise.
2751         * calls.c (call_expr_flags): Likewise.
2752         * combine.c (reg_nonzero_bits_for_combine,
2753         reg_num_sign_bit_copies_for_combine, get_last_value,
2754         reg_truncated_to_mode): Likewise.
2755         * emit-rtl.c (subreg_lowpart_p): Likewise.
2756         * expr.c (highest_pow2_factor_for_target,
2757         categorize_ctor_elements_1, categorize_ctor_elements,
2758         count_type_elements, contains_packed_reference,
2759         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
2760         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
2761         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
2762         native_encode_int, native_encode_real, native_encode_complex,
2763         native_encode_vector, native_encode_expr, native_interpret_int,
2764         native_interpret_real, native_interpret_complex,
2765         native_interpret_vector, native_interpret_expr): Likewise.
2766         * function.c (use_register_for_decl): Likewise.
2767         * gimplify.c (get_name): Likewise.
2768         * langhooks-def.h (lhd_return_null_const_tree): New.
2769         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
2770         * langhooks.c (lhd_return_null_const_tree): New.
2771         * langhooks.h (lang_get_callee_fndecl): Constify.
2772         * output.h (constructor_static_from_elts_p): Likewise.
2773         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
2774         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
2775         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
2776         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
2777         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
2778         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
2779         * rtlhooks-def.h (reg_nonzero_bits_general,
2780         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
2781         Likewise. 
2782         * rtlhooks.c (reg_num_sign_bit_copies_general,
2783         reg_nonzero_bits_general, reg_truncated_to_mode_general):
2784         Likewise. 
2785         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
2786         * stor-layout.c (mode_for_size_tree): Likewise.
2787         * tree-ssa-loop-im.c (memref_eq): Likewise.
2788         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
2789         * tree.c (contains_placeholder_p, type_list_equal,
2790         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
2791         Likewise. 
2792         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
2793         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
2794         contains_placeholder_p, contains_packed_reference,
2795         get_callee_fndecl, operand_equal_for_phi_arg_p,
2796         warn_if_unused_value, is_body_block, native_encode_expr,
2797         native_interpret_expr, fold_convertible_p, operand_equal_p,
2798         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
2799         validate_arglist, simple_cst_equal, type_list_equal,
2800         use_register_for_decl, call_expr_flags, get_name,
2801         highest_pow2_factor): Likewise.
2802         (const_call_expr_arg_iterator_d,
2803         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
2804         first_const_call_expr_arg, more_const_call_expr_args_p,
2805         FOR_EACH_CONST_CALL_EXPR_ARG): New.
2806         * varasm.c (constructor_static_from_elts_p): Constify.
2807
2808 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
2809
2810         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
2811         config/arm/neon-schedgen.ml, config/arm/neon.ml,
2812         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
2813         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
2814         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
2815         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
2816         spelling conventions.
2817         * doc/invoke.texi: Follow spelling conventions.
2818
2819 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
2820             Revital Eres  <eres@il.ibm.com>
2821
2822         * modulo-sched.c (sms_schedule): Avoid loops which includes
2823         auto-increment instructions.
2824
2825 2007-07-28  Richard Guenther  <rguenther@suse.de>
2826
2827         PR middle-end/32920
2828         * fold-const.c (fold_cond_expr_with_comparison): Convert
2829         operand zero of MIN/MAX_EXPR to correct type.
2830
2831 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2832
2833         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
2834         flags_from_decl_or_type): Constify.
2835         * gcc.c (do_spec_1): Likewise.
2836         * print-tree.c (dump_addr, print_node_brief): Likewise.
2837         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
2838         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
2839         tree_purge_all_dead_eh_edges): Likewise.
2840         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
2841         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
2842         Likewise. 
2843         * tree.c (expr_location, expr_has_location, expr_locus,
2844         expr_filename, expr_lineno, get_inner_array_type,
2845         fields_compatible_p): Likewise.
2846         * tree.h (get_inner_array_type, fields_compatible_p,
2847         expr_location, expr_has_location, expr_locus, expr_filename,
2848         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
2849         setjmp_call_p, alloca_call_p): Likewise.
2850
2851 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
2852
2853         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
2854         TV_FLOW_INSENSITIVE.
2855
2856         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
2857         TV_CALL_CLOBBER.
2858         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
2859         (compute_flow_insensitive_aliasing): Ditto for
2860         TV_FLOW_INSENSITIVE.    
2861
2862 2007-07-27  Jan Hubicka  <jh@suse.cz>
2863
2864         * config/i386/i386.c (register_move_cost): Remove accidentally comitted
2865         #if 0 block.
2866
2867         * attribs.c: Include hashtab.h
2868         (attribute_hash): New.
2869         (substring): New structure.
2870         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
2871         New function.
2872         (init_attributes): Initialize attribute hash.
2873         (decl_attributes): Use attribute hash.
2874         * Makefile.in (attribs.c): Depend on hashtab.h.
2875
2876 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
2877
2878         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
2879
2880 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
2881
2882         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
2883         __mips_dspr2 and __mips_dsp_rev macros.
2884         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
2885
2886 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
2887         
2888        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
2889
2890 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
2891
2892         PR middle-end/32749
2893         
2894         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
2895         and the updating of the live and do_not_gen sets.
2896         (df_note_bb_compute): Added updating of live and do_not_gen sets
2897         for regular defs so that the case of clobber inside conditional
2898         call is processed correctly.
2899         
2900 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
2901
2902         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
2903         operands with compatible type.
2904
2905 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
2906
2907         * expr.h (store_bit_field): Don't return a value.
2908         * expmed.c (check_predicate_volatile_ok): New function.
2909         (store_bit_field_1): New function, extracted from store_bit_field.
2910         Take a fallback_p argument and return true if the operation succeeded.
2911         Only use store_fixed_bit_field if fallback_p.  Don't recompute
2912         mode_for_extraction; use op_mode instead.  Try forcing memories
2913         into registers if the insv expander fails.
2914         (store_bit_field): Use store_bit_field_1 with fallback_p true.
2915         Don't return a value.
2916         (convert_extracted_bit_field): New function, extracted from
2917         store_bit_field.
2918         (extract_bit_field_1): Likewise.  Take a fallback_p argument
2919         and return NULL if the operation succeeded.  Only use
2920         extract_fixed_bit_field if fallback_p.  Only calculate one
2921         extraction mode.  Combine code for extv and extzv.  Try forcing
2922         memories into registers if the ext(z)v expander fails.
2923         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
2924
2925 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
2926
2927         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
2928         into bitfields.
2929         (df_ref): Likewise.  Put regno with other integer fields.
2930
2931 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
2932
2933         * df.h (df_mw_hardreg): Remove "loc" field.
2934         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
2935         local variable.
2936         * df-problems.c (df_whole_mw_reg_unused_p): New function,
2937         split out from df_set_unused_notes_for_mw.  Return false for
2938         partial references.  Assert that mw_reg is a REG when returning true.
2939         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
2940         (df_whole_mw_reg_dead_p): New function, split out from
2941         df_set_dead_notes_for_mw.  Return false for partial references.
2942         Assert that mw_reg is a REG when returning true.
2943         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
2944         Remove redundant bitmap check.
2945
2946 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
2947
2948         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
2949         ($(T)crtend.o): Likwise.
2950         ($(T)crtbeginS.o): Likwise.
2951         ($(T)crtendS.o): Likwise.
2952         ($(T)crtfastmath.o): Likwise.
2953
2954 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
2955
2956         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
2957         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
2958         * basic-block.h (struct control_flow_graph): Added x_dom_computed
2959         and x_n_bbs_in_dom_tree fields.
2960
2961 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
2962
2963         PR tree-optimization/32087
2964         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
2965         Do not call scale_bbs_frequencies_int with prob of zero.
2966
2967 2007-07-26  Julian Brown  <julian@codesourcery.com>
2968
2969         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
2970         (neon_element_bits): Add prototypes.
2971         * config/arm/arm.c (bounds_check, neon_lane_bounds)
2972         (neon_const_bounds, neon_element_bits): New functions.
2973         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
2974         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
2975         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
2976         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
2977         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
2978         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
2979         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
2980         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
2981         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
2982         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
2983         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
2984         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
2985         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
2986
2987 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
2988
2989         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
2990         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
2991
2992 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
2993             Julian Brown  <julian@codesourcery.com>
2994
2995         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
2996         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
2997         * config/arm/cortex-a8.md: New.
2998         * config/arm/cortex-a8-neon.md: New.
2999         * config/arm/neon-schedgen.ml: New.
3000         * config/arm/neon.md (vqh_mnem): New.
3001         (neon_type): New.
3002         (Is_float_mode): New.
3003         (Scalar_mul_8_16): New.
3004         (Is_d_reg): New.
3005         (V_mode_nunits): New.
3006         (All instruction patterns): Annotate with neon_type attribute
3007         values.
3008         * config/arm/arm.md: Include cortex-a8.md.
3009         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
3010         values.
3011         Annotate instruction patterns accordingly.
3012         (generic_sched): Do not use generic scheduling for Cortex-A8.
3013         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
3014
3015 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
3016
3017         * fold-const.c (fold_read_from_constant_string): Use
3018         build_int_cst_type.
3019         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
3020
3021 2007-07-26  Nick Clifton  <nickc@redhat.com>
3022
3023         * tree-ssa-operands.h: Change copyright header to refer to version
3024         3 of the GNU General Public License and to point readers at the
3025         COPYING3 file and the FSF's license web page.
3026         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
3027         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
3028         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
3029         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
3030         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
3031         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
3032         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
3033         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
3034         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
3035         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
3036         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
3037         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
3038         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
3039         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
3040         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
3041         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
3042         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
3043         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
3044         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
3045         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
3046         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
3047         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
3048         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
3049         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
3050         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
3051         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
3052         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
3053         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
3054         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
3055         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
3056         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
3057         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
3058         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
3059         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
3060         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
3061         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
3062         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
3063         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
3064         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
3065         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
3066         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
3067         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
3068         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
3069         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
3070         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
3071         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
3072         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
3073         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
3074         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
3075         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
3076         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
3077         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
3078         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
3079         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
3080         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
3081         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
3082         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
3083         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
3084         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
3085         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
3086         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
3087         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
3088         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
3089         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
3090         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
3091         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
3092         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
3093         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
3094         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
3095         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
3096         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
3097         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
3098         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
3099         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
3100         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
3101         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
3102         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
3103         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
3104         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
3105         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
3106         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
3107         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
3108         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
3109         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
3110         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
3111         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
3112         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
3113         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
3114         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
3115         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
3116         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
3117         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
3118         vecprim.h, basic-block.h, tree-ssa-structalias.c,
3119         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
3120         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
3121         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
3122         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
3123         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
3124         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
3125         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
3126         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
3127         convert.c, convert.h, langhooks-def.h, reload1.c,
3128         tree-ssa-operands.c: Likewise.
3129
3130 2007-07-26  Jan Hubicka  <jh@suse.cz>
3131
3132         * tree-ssa-live.c: Include debug.h and flags.h.
3133         (mark_scope_block_unused): New function.
3134         (remove_unused_scope_block_p): New function.
3135         (remove_unused_locals): Remove unused blocks too.
3136
3137 2007-07-25  Ian Lance Taylor  <iant@google.com>
3138
3139         * combine.c (combine_max_regno): Remove.  Remove all uses.
3140         (struct reg_stat_struct): Rename from struct reg_stat.
3141         (reg_stat_type): Define, and declare VECs.
3142         (reg_stat): Change from pointer to VEC.  Change all uses.
3143         (combine_split_insns): New static function.
3144         (try_combine, find_split_point): Call it instead of split_insns.
3145
3146 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
3147
3148         * cfghooks.c (split_block): Fix the information about loop latch.
3149
3150 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
3151
3152         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
3153
3154 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
3155
3156         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
3157         Scan the new edge for loop exit info.
3158
3159 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
3160
3161         * config/darwin.c: Include debug.h.
3162
3163 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
3164
3165         PR target/32218
3166         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
3167
3168 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
3169
3170         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
3171         (HARD_REGNO_MODE_OK): Ditto.
3172         (MODES_TIEABLE_P): Ditto.
3173         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
3174         (CLASS_MAX_NREGS): Ditto.
3175         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
3176         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
3177         (divdf3_internal_thr): Removed.
3178         * config/ia64/div.md: New file.
3179         * config/ia64/constraints.md: Add H constraint.
3180
3181 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3182
3183         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
3184         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
3185         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
3186         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
3187         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
3188         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
3189         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
3190         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
3191         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
3192         dump_sbitmap_file, debug_sbitmap, popcount_table,
3193         sbitmap_popcount): Constify.
3194         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
3195         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
3196         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
3197         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
3198         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
3199         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
3200         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
3201         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
3202         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
3203         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
3204         sbitmap_popcount, sbitmap_verify_popcount): Constify.
3205
3206 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3207
3208         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
3209         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
3210         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
3211         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
3212         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
3213         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
3214         bitmap_intersect_p, bitmap_intersect_compl_p,
3215         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
3216         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
3217         Constify.
3218         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
3219         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
3220         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
3221         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
3222         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
3223         debug_bitmap, debug_bitmap_file, bitmap_print,
3224         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
3225         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
3226
3227 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
3228
3229         * config/darwin.c (darwin_override_options): Additional fix for
3230         debug info formats that don't support var tracking.
3231
3232 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3233
3234         * cselib.c (entry_and_rtx_equal_p): Constify.
3235         * gengtype.c (output_mangled_typename, write_types, write_local):
3236         Likewise.
3237         * gengtype.h (const_type_p): New.
3238         * see.c (eq_descriptor_extension, hash_descriptor_extension):
3239         Constify.
3240         * tlink.c (scan_linker_output): De-constify.
3241         * tree-ssa-loop-im.c (memref_eq): Constify.
3242         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
3243         (shared_bitmap_hash, shared_bitmap_eq): Constify.
3244
3245 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3246
3247         * c-common.c (fname_as_string, c_type_hash): Constify.
3248         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
3249         * cgraph.c (edge_hash, edge_eq): Likewise.
3250         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
3251         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
3252         reg_attrs_htab_eq): Likewise.
3253         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
3254         Likewise.
3255         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
3256         const_decl_t, const_state_t, const_automata_list_el_t): New.
3257         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
3258         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
3259         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
3260         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
3261         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
3262         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
3263         compare_max_occ_cycle_nums, out_state_arcs_num,
3264         compare_transition_els_num, units_cmp, state_reservs_cmp):
3265         Constify.
3266         * genmodes.c (cmp_modes): Likewise.
3267         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
3268         * gimplify.c (compare_case_labels): Likewise.
3269         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
3270         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
3271         * matrix-reorg.c (mtt_info_hash): Likewise.
3272         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
3273         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
3274         (htab_hash_bucket, htab_hash_elem): Constify.
3275         * tree-browser.c (TB_parent_eq): Likewise.
3276         * tree-scalar-evolution.c (hash_scev_info): Likewise.
3277         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
3278         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
3279         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
3280         Constify.
3281         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
3282         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
3283         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
3284         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
3285         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
3286         New.
3287         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
3288         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
3289         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
3290         * tree-ssa-threadupdate.c (redirection_data_hash,
3291         redirection_data_eq): Likewise. 
3292         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
3293         * tree-ssa.c (var_ann_eq): Likewise.
3294         * tree-vrp.c (compare_case_labels): Likewise.
3295         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
3296         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
3297         tree_not_check_failed, tree_class_check_failed,
3298         tree_range_check_failed, tree_not_class_check_failed,
3299         omp_clause_check_failed, omp_clause_range_check_failed,
3300         tree_contains_struct_check_failed, tree_operand_check_failed):
3301         Likewise. 
3302         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
3303         tree_not_check_failed, tree_class_check_failed,
3304         tree_range_check_failed, tree_not_class_check_failed,
3305         tree_operand_check_failed, omp_clause_operand_check_failed,
3306         tree_operand_length): Likewise. 
3307         * var-tracking.c (const_variable): New.
3308         (variable_htab_hash, variable_htab_eq): Constify.
3309         * varasm.c (const_desc_hash): Likewise.
3310
3311 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3312
3313         * expr.c (handled_component_p): Constify.
3314         * fold-const.c (fit_double_type): Likewise.
3315         * real.h (real_value_from_int_cst): Likewise.
3316         * tree-flow-inline.h (gimple_in_ssa_p,
3317         gimple_aliases_computed_p, gimple_addressable_vars,
3318         gimple_call_clobbered_vars, gimple_referenced_vars,
3319         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
3320         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
3321         may_aliases, end_readonly_imm_use_p, has_zero_uses,
3322         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
3323         is_label_stmt, is_global_var, phi_ssa_name_p,
3324         factoring_name_p, is_call_clobbered, tree_common_ann,
3325         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
3326         unmodifiable_var_p, array_ref_contains_indirect_ref,
3327         ref_contains_array_ref, lookup_subvars_for_var,
3328         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
3329         gimple_mem_ref_stats): Likewise.
3330         * tree-flow.h (tree_common_ann, var_ann, function_ann,
3331         may_aliases, is_exec_stmt, is_label_stmt,
3332         ref_contains_array_ref, array_ref_contains_indirect_ref,
3333         var_can_have_subvars, overlap_subvar, is_call_clobbered,
3334         unmodifiable_var_p): Likewise.
3335         * tree-gimple.c (is_gimple_min_invariant): Likewise.
3336         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
3337         * tree.c (type_hash_list, attribute_hash_list, tree_size,
3338         cst_and_fits_in_hwi, real_value_from_int_cst,
3339         build_real_from_int_cst, integer_zerop, integer_onep,
3340         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
3341         tree_floor_log2, real_zerop, real_onep, real_twop,
3342         real_minus_onep, really_constant_p, purpose_member, chain_member,
3343         list_length, fields_length, int_size_in_bytes, bit_position,
3344         int_bit_position, byte_position, int_byte_position, expr_align,
3345         array_type_nelts, tree_node_structure,
3346         type_contains_placeholder_1, iterative_hash_pointer,
3347         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
3348         tree_map_base_eq, type_hash_list, type_hash_eq,
3349         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
3350         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
3351         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
3352         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
3353         int_fits_type_p, get_containing_scope, decl_function_context,
3354         decl_type_context, omp_clause_operand_check_failed,
3355         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
3356         * tree.h (omp_clause_operand_check_failed, tree_size,
3357         build_real_from_int_cst, array_type_nelts, purpose_member,
3358         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
3359         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
3360         is_attribute_p, check_qualified_type, expr_align,
3361         int_size_in_bytes, bit_position, int_bit_position, byte_position,
3362         int_byte_position, list_length, fields_length, initializer_zerop,
3363         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
3364         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
3365         tree_node_structure, handled_component_p, get_containing_scope,
3366         decl_function_context, decl_type_context, real_zerop,
3367         type_num_arguments, fit_double_type, really_constant_p,
3368         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
3369         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
3370         real_twop, real_minus_onep, int_cst_value): Likewise.
3371
3372 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3373
3374         * cfglayout.c (insn_scope, insn_line): Constify.
3375         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
3376         const_double_htab_hash, const_double_htab_eq,
3377         mem_attrs_htab_hash): Likewise.
3378         * loop-iv.c (biv_eq): Likewise.
3379         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
3380         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
3381         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
3382         Likewise. 
3383         * rtl-error.c (location_for_asm, diagnostic_for_asm,
3384         error_for_asm, warning_for_asm, _fatal_insn,
3385         _fatal_insn_not_found): Likewise. 
3386         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
3387         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
3388         rtl_check_failed_type2, rtl_check_failed_code1,
3389         rtl_check_failed_code2, rtl_check_failed_code_mode,
3390         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
3391         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
3392         rtl_check_failed_type2, rtl_check_failed_code1,
3393         rtl_check_failed_code2, rtl_check_failed_code_mode,
3394         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
3395         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
3396         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
3397         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
3398         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
3399         rtx_unstable_p, get_integer_term, get_related_value,
3400         offset_within_block_p, reg_mentioned_p, count_occurrences,
3401         reg_referenced_p, reg_used_between_p, no_labels_between_p,
3402         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
3403         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
3404         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
3405         find_constant_src, find_reg_fusage, find_regno_fusage,
3406         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
3407         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
3408         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
3409         computed_jump_p, auto_inc_p, in_expr_list_p,
3410         remove_node_from_expr_list, loc_mentioned_in_p,
3411         label_is_jump_target_p, reversed_comparison_code_parts,
3412         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
3413         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
3414         print_inline_rtx): Likewise.
3415         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
3416         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
3417         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
3418         get_integer_term, get_related_value, offset_within_block_p,
3419         count_occurrences, reg_mentioned_p, no_labels_between_p,
3420         reg_used_between_p, reg_referenced_p, single_set_2,
3421         multiple_sets, set_noop_p, refers_to_regno_p,
3422         reg_overlap_mentioned_p, dead_or_set_p,
3423         covers_regno_no_parallel_p, covers_regno_p,
3424         dead_or_set_regno_p, find_reg_note, find_regno_note,
3425         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
3426         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
3427         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
3428         side_effects_p, may_trap_p_1, may_trap_p,
3429         may_trap_after_code_motion_p, may_trap_or_fault_p,
3430         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
3431         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
3432         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
3433         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
3434         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
3435         Likewise. 
3436         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
3437         warning_for_asm): Likewise.
3438         * tree.h (print_rtl): Likewise.
3439         * varasm.c (get_pool_mode): Likewise.
3440
3441 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3442
3443         * c-lex.c (c_lex_with_flags, lex_string): Constify.
3444         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
3445         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
3446         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
3447         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
3448         * ddg.c (compare_sccs): Likewise.
3449         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
3450         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
3451         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
3452         decimal_do_fix_trunc, decimal_real_to_integer,
3453         decimal_real_to_integer2, decimal_real_maxval): Likewise.
3454         * dse.c (const_group_info_t): New.
3455         (invariant_group_base_eq, invariant_group_base_hash): Constify.
3456         * dwarf2out.c (const_dw_die_ref): New.
3457         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
3458         * tree-browser.c (TB_parent_eq): Likewise.
3459         * unwind-dw2-fde.c (__register_frame_info_bases,
3460         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
3461         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
3462         Likewise.
3463         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
3464         * unwind-dw2.c (uw_frame_state_for): Likewise.
3465         * value-prof.c (histogram_hash, histogram_eq): Likewise.
3466         * value-prof.h (const_histogram_value): New.
3467
3468 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
3469
3470         * config/mips/mips.c (machine_function): Add
3471         initialized_mips16_gp_pseudo_p.
3472         (mips16_gp_pseudo_reg): Do not emit the initialization of
3473         mips16_gp_pseudo_rtx when being called from the gimple cost-
3474         calculation routines; emit it on the first use outside those
3475         routines.
3476
3477 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3478
3479         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
3480         New.
3481         
3482         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
3483         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
3484         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
3485         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
3486         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
3487         Preserve const-ness of parameters through use of __typeof(),
3488         also constify and tidy.
3489         
3490         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
3491         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
3492         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
3493         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
3494         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
3495         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
3496         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
3497         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
3498         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
3499
3500 2007-07-25  Julian Brown  <julian@codesourcery.com>
3501             Mark Shinwell  <shinwell@codesourcery.com>
3502
3503         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
3504         (alpha_mangle_type): This.
3505         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
3506         (TARGET_MANGLE_TYPE): Define this instead.
3507         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
3508         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
3509         (arm_init_neon_builtins): Fix comment.
3510         (arm_mangle_map_entry): New.
3511         (arm_mangle_map): New.
3512         (arm_mangle_type): New.
3513         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
3514         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
3515         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
3516         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
3517         (TARGET_MANGLE_TYPE): Define this instead.
3518         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
3519         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
3520         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
3521         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
3522         (TARGET_MANGLE_TYPE): Define this instead.
3523         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
3524         to...
3525         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
3526         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
3527         (TARGET_MANGLE_TYPE): Define this instead.
3528         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
3529         (s390_mangle_type): This.
3530         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
3531         (TARGET_MANGLE_TYPE): Define this instead.
3532         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
3533         (sparc_mangle_type): This.
3534         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
3535         (TARGET_MANGLE_TYPE): Define this instead.
3536         * cp/mangle.c (write_type): Call mangle_type target hook on all
3537         types before mangling.  Use original type, not main variant, as
3538         argument.
3539         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
3540         (TARGET_MANGLE_TYPE): This.
3541         * target.h (gcc_target): Rename mangle_fundamental_type to
3542         mangle_type.
3543         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
3544         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
3545
3546 2007-07-25  Julian Brown  <julian@codesourcery.com>
3547             Paul Brook  <paul@codesourcery.com>
3548             Joseph Myers  <joseph@codesourcery.com>
3549             Mark Shinwell  <shinwell@codesourcery.com>
3550
3551         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
3552         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
3553         (with_fpu): Allow --with-fpu=neon.
3554         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
3555         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
3556         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
3557         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
3558         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
3559         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
3560         (neon_emit_pair_result_insn, neon_disambiguate_copy)
3561         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
3562         (output_move_neon): Add prototypes.
3563         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
3564         (all_fpus): Add FPUTYPE_NEON.
3565         (fp_model_for_fpu): Add NEON field.
3566         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
3567         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
3568         in registers.
3569         (arm_legitimate_address_p): Don't support fancy addressing for NEON
3570         structure moves.
3571         (thumb2_legitimate_address_p): Likewise.
3572         (neon_valid_immediate): Recognize and prepare constants suitable for
3573         NEON instructions.
3574         (neon_immediate_valid_for_move): New function. Recognize and prepare
3575         immediates for NEON move instructions.
3576         (neon_immediate_valid_for_logic): New function. Recognize and
3577         prepare immediates for NEON logic instructions.
3578         (neon_output_logic_immediate): New function. Create asm string
3579         suitable for outputting immediate logic instructions.
3580         (neon_pairwise_reduce): New function. Implement reduction using
3581         pairwise operations.
3582         (neon_expand_vector_init): New function. Expand a (possibly
3583         non-constant) vector initialization.
3584         (neon_vector_mem_operand): New function. Memory operands supported
3585         for quad-word loads/stores to/from ARM or NEON registers. Don't
3586         allow base+offset addressing for core regs.
3587         (neon_struct_mem_operand): New function. Valid mems for NEON
3588         structure moves.
3589         (coproc_secondary_reload_class): Enable NEON registers to be loaded
3590         from neon_vector_mem_operand addresses without a secondary register.
3591         (add_minipool_forward_ref): Handle >8-byte minipool entries.
3592         (add_minipool_backward_ref): Likewise.
3593         (dump_minipool): Likewise.
3594         (push_minipool_fix): Likewise.
3595         (output_move_quad): New function. Output quad-word moves, loads and
3596         stores using ARM registers.
3597         (output_move_vfp): Add support for vectors in VFP (NEON) D
3598         registers.
3599         (output_move_neon): Output a NEON load/store to/from a quadword
3600         register.
3601         (arm_print_operand): Implement new codes:
3602         - 'c' for unadorned integers (without a # sign).
3603         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
3604         mode.
3605         - 'e', 'f' for the low and high D parts of a NEON Q register.
3606         - 'q' outputs a NEON Q register.
3607         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
3608         - 'T' prints NEON opcode features from a coded bitmask.
3609         - 'F' is similar to T, but signed/unsigned codes both print as
3610         'i'.
3611         - 't' is similar to T, but 'u' is printed instead of 'p'.
3612         - 'O' prints 'r' if NEON instruction should perform rounding (as
3613         specified by bitmask), else prints nothing.
3614         - '#' is a punctuation character to stop operand numbers from
3615         running together with following digits in the assembler
3616         strings for instructions (when using mode attributes).
3617         (arm_assemble_integer): Handle extra NEON vector modes. Permute
3618         constant vectors in big-endian mode, where necessary.
3619         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
3620         Handle EI, OI, CI, XI modes.
3621         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
3622         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
3623         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
3624         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
3625         (neon_builtin_type_bits): Add enumeration, one bit for each vector
3626         type.
3627         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
3628         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
3629         to turn v8qi, etc. into bits defined above.
3630         (neon_itype): New enumeration. Classifications of NEON builtins.
3631         (neon_builtin_datum): Define struct. Contains information about
3632         a single builtin (with multiple modes).
3633         (CF): Define helper macro for...
3634         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
3635         modes.
3636         (neon_builtin_data): New array. Define information about builtins
3637         for use during initialization/expansion.
3638         (arm_init_neon_builtins): New function.
3639         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
3640         true.
3641         (neon_builtin_compare): New function.
3642         (locate_neon_builtin_icode): New function. Find an insn code for a
3643         builtin given a function code for that builtin. Also return type of
3644         builtin (NEON_BINOP, NEON_UNOP etc.).
3645         (builtin_arg): New enumeration. Types of arguments for builtins.
3646         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
3647         Takes a variable argument list of builtin_arg types, terminated by
3648         NEON_ARG_STOP.
3649         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
3650         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
3651         (neon_emit_pair_result_insn): New function. Support returning pairs
3652         of vectors via a pointer.
3653         (neon_disambiguate_copy): New function. Set up operands for a
3654         multi-word copy such that registers do not get clobbered.
3655         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
3656         ARM_BUILTIN_NEON_BASE.
3657         (arm_file_start): Set float-abi attribute for NEON.
3658         (arm_vector_mode_supported_p): Enable NEON vector modes.
3659         (arm_mangle_map_entry): New.
3660         (arm_mangle_map): New.
3661         (arm_mangle_vector_type): New.
3662         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
3663         when appropriate.
3664         (TARGET_NEON): New macro. Target supports NEON.
3665         (fputype): Add FPUTYPE_NEON.
3666         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
3667         for vectorization based on command-line arg.
3668         (NEON_REGNO_OK_FOR_NREGS): Define.
3669         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
3670         (VALID_NEON_STRUCT_MODE): Define.
3671         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
3672         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
3673         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
3674         (consttable_16): Add pattern for outputting 16-byte minipool
3675         entries.
3676         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
3677         vec-common.md).
3678         (vec-common.md, neon.md): Include md files.
3679         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
3680         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
3681         (memory_constraint "Ut", "Un", "Us"): Define.
3682         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
3683         (MMX_char): New mode attribute.
3684         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
3685         (*add<mode>3_iwmmxt): New insn pattern.
3686         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
3687         (*sub<mode>3_iwmmxt): New insn pattern.
3688         (mulv4hi3): Rename to...
3689         (*mulv4hi3_iwmmxt): This.
3690         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
3691         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
3692         (uminv4hi3, uminv2si3): Remove. Replace with...
3693         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
3694         (*umin<mode>3_iwmmxt): These.
3695         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
3696         (ashr<mode>3_iwmmxt): This new pattern.
3697         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
3698         (lshr<mode>3_iwmmxt): This new pattern.
3699         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
3700         (ashl<mode>3_iwmmxt): This new pattern.
3701         * config/arm/neon-docgen.ml: New file. Generate documentation for
3702         intrinsics.
3703         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
3704         * config/arm/arm_neon.h: New (autogenerated).
3705         * config/arm/neon-testgen.ml: New file. Generate NEON tests
3706         automatically.
3707         * config/arm/neon.md: New file. Define NEON instructions.
3708         * config/arm/neon.ml: New file. Abstract description of NEON
3709         instructions, used to generate arm_neon.h header, documentation and
3710         tests.
3711         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
3712         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
3713         support.
3714         * doc/extend.texi (ARM Built-in Functions): Rename and remove
3715         extraneous comma.
3716         (ARM NEON Intrinsics): New subsection.
3717         * doc/arm-neon-intrinsics.texi: New (autogenerated).
3718
3719 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
3720
3721         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
3722         prototype.
3723
3724 2007-07-24  Jan Hubicka  <jh@suse.cz>
3725
3726         * regclass.c (move_table): New type.
3727         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
3728         (init_move_cost): Break out from ...
3729         (init_reg_sets_1): ... here; simplify computation of
3730         have_regs-of_mode and contains_reg_of_mode.
3731         (record_reg_classes): Unswitch internal loops.
3732         (copy_cost): Trigger lazy initialization of move cost
3733         (record_address_regs): Likewise.
3734
3735 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
3736
3737         * config/darwin.c (darwin_override_options): Don't force on
3738         flag_var_tracking_uninit when no debug info is requested.
3739
3740 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
3741
3742         * cfgloop.c (init_loops_structure): New function.
3743         (flow_loops_find): Create root of the loop tree unconditionally.
3744
3745 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
3746
3747         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
3748
3749 2007-07-24  Jan Hubicka  <jh@suse.cz>
3750
3751         * caller-save.c: Include ggc.h, gt-caller-save.h
3752         (reg_save_code, reg_restore_code): Rename to ...
3753         (cached_reg_save_code, cached_reg_restore_code): ... those.
3754         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
3755         (reg_save_code, reg_restore_code): New functions.
3756         (init_caller_save): Do not intialize
3757         reg_save_code/reg_restore_code tables.
3758         * Makefile.in: (gt-caller-save.h): New.
3759
3760 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3761
3762         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
3763         with the mode of the original operand instead of
3764         integer_one_node.
3765
3766 2007-07-23  Jan Hubicka  <jH@suse.cz>
3767
3768         * i386.c (ix86_secondary_memory_needed): Break out to...
3769         (inline_secondary_memory_needed): ... here.
3770         (ix86_memory_move_cost): Break out to ...
3771         (inline_memory_move_cost): ... here; add support for IN value of 2 for
3772         maximum of input and output; fix handling of Q_REGS on 64bit.
3773         (ix86_secondary_memory_needed): Microoptimize.
3774
3775 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
3776
3777         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
3778         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
3779         stmts_from_loop, known_dependences_p, build_rdg): New.
3780         * tree-data-ref.h: Depends on graphds.h.
3781         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
3782         (build_rdg): Declared.
3783         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
3784
3785 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
3786
3787         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
3788         ccp_min_invariant.
3789
3790 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
3791             Jakub Jelinek  <jakub@redhat.com>
3792
3793         PR middle-end/PR28690
3794         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow EQ compares.
3795         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
3796         and MEM_POINTER operands over REG and MEM operands.
3797         (swap_commutative_operands_p): Change return value to bool.
3798         * rtl.h: Update the corresponding prototype.
3799         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
3800         instead of gen_rtx_PLUS.
3801         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
3802         value to bool.  Change function arguments to rtx's and update code
3803         to match.
3804         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
3805         calls to match the new declaration.
3806         * simplify-rtx.c (simplify_associative_operation): Don't
3807         reorder simplify_binary_operation arguments.
3808
3809 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
3810
3811         * config/mips/mips.c (override_options): Use mips_costs to derive
3812         the default branch cost.
3813         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
3814         than mips_costs.
3815         * config/mips/mips.opt (mbranch-cost=): New option.
3816         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
3817
3818 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
3819
3820         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
3821         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
3822         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
3823         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
3824
3825 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
3826
3827         * config/mips/constraints.md (ks): New constraint.
3828         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
3829         (*add<mode>3_mips16): ...here.
3830
3831 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
3832
3833         * optabs.h (enum optab_index): Add new OTI_signbit.
3834         (signbit_optab): Define corresponding macro.
3835         (enum insn_code signbit_optab[]): Remove array.
3836         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
3837         (expand_copysign_absneg): If back end provides signbit insn, use it
3838         instead of bit operations on floating point argument.
3839         * builtins.c (enum insn_code signbit_optab[]): Remove array.
3840         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code for
3841         availability of signbit insn.
3842
3843         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
3844         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
3845         SSE mode is not active.
3846         (isinf<mode>2): Disable for mfpmath=sse,387.
3847
3848 2007-07-22  Ben Elliston  <bje@au.ibm.com>
3849
3850         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
3851         `class' parameter.
3852